Commit a24d841b15ac8e848be80e790fe777b62ee7347e

Authored by Imanol-Mikel Barba Sabariego
1 parent f352470c

--no commit message

Project/applications/smartcities/test_httpClient.c renamed to Project/applications/smartcities/example-code/httpClient/test_httpClient.c
Project/applications/smartcities/test_timer-loop.c renamed to Project/applications/smartcities/example-code/test_timer-loop.c
Project/applications/smartcities/include/buffer.h
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 #include "libwismart.h" 4 #include "libwismart.h"
5 #include "json.h" 5 #include "json.h"
6 6
7 -#define SOFT_LIMIT 8192 /* en bytes -> 10k * 1024 */ 7 +#define SOFT_LIMIT 8192 /* en bytes -> 8k * 1024 */
8 #define HARD_LIMIT 10240 8 #define HARD_LIMIT 10240
9 #define MEMORY_OK 0 9 #define MEMORY_OK 0
10 #define SOFT_REACHED 1 10 #define SOFT_REACHED 1
Project/applications/smartcities/include/globals.h
@@ -7,5 +7,11 @@ @@ -7,5 +7,11 @@
7 #define BUFFER_LENGTH 30 7 #define BUFFER_LENGTH 30
8 #define MAX_RAM 30000 8 #define MAX_RAM 30000
9 #define MODULE_ID "123456" 9 #define MODULE_ID "123456"
  10 +#define WIFI_MODE WIFI_MODE_CLIENT
  11 +#define NETWORK_SSID_AP "modularsense"
  12 +#define NETWORK_KEY_AP NULL
  13 +#define NETWORK_CHANNEL_AP 1
  14 +#define HARD_LIMIT_WAIT_TIME 10*1000 //5*60*1000
  15 +
10 16
11 #endif 17 #endif
Project/applications/smartcities/include/sensors.h
@@ -67,13 +67,13 @@ typedef struct { @@ -67,13 +67,13 @@ typedef struct {
67 uint16_t MD; 67 uint16_t MD;
68 } bmp085_callibration; 68 } bmp085_callibration;
69 69
  70 +void init_pressure(void);
  71 +void init_pressure_temperature(void);
70 uint16_t get_pressure_data(void); 72 uint16_t get_pressure_data(void);
71 uint16_t get_pressure_temperature_data(void); 73 uint16_t get_pressure_temperature_data(void);
72 bmp085_callibration get_pressure_callibration_data(void); 74 bmp085_callibration get_pressure_callibration_data(void);
73 char* callibration_pressure_data_csv(bmp085_callibration parameters); 75 char* callibration_pressure_data_csv(bmp085_callibration parameters);
74 char* pressure_value(uint16_t pressure,uint16_t temperature); 76 char* pressure_value(uint16_t pressure,uint16_t temperature);
75 -void init_pressure(void);  
76 -void init_pressure_temperature(void);  
77 77
78 //HUMIDITY AND TEMPERATURE SENSOR 78 //HUMIDITY AND TEMPERATURE SENSOR
79 79
Project/applications/smartcities/json.c
@@ -157,14 +157,12 @@ uint8_t send_json(char* statement, uint32_t length, char* provider_ID, char* sen @@ -157,14 +157,12 @@ uint8_t send_json(char* statement, uint32_t length, char* provider_ID, char* sen
157 strcpy(PATH,"/data/modularupload/"); 157 strcpy(PATH,"/data/modularupload/");
158 strcpy(PATH+20,provider_ID); 158 strcpy(PATH+20,provider_ID);
159 strcpy(PATH+20+strlen(provider_ID),sensor_ID);*/ 159 strcpy(PATH+20+strlen(provider_ID),sensor_ID);*/
160 - //PATH[21+strlen(provider_ID)+strlen(sensor_ID)] = '\0';  
161 160
162 //FUCKING LEWIS... 161 //FUCKING LEWIS...
163 PATH = (char*) chHeapAlloc(NULL,54+strlen(provider_ID)+strlen(sensor_ID)); 162 PATH = (char*) chHeapAlloc(NULL,54+strlen(provider_ID)+strlen(sensor_ID));
164 strcpy(PATH,"/modularsense/wordpress/opendata/data/modularupload/"); 163 strcpy(PATH,"/modularsense/wordpress/opendata/data/modularupload/");
165 strcpy(PATH+52,provider_ID); 164 strcpy(PATH+52,provider_ID);
166 strcpy(PATH+52+strlen(provider_ID),sensor_ID); 165 strcpy(PATH+52+strlen(provider_ID),sensor_ID);
167 - //PATH[53+strlen(provider_ID)+strlen(sensor_ID)] = '\0';  
168 } 166 }
169 struct httpHeaders server = { put,PATH,strlen(PATH),URL,strlen(URL)}; 167 struct httpHeaders server = { put,PATH,strlen(PATH),URL,strlen(URL)};
170 response_code = httpRequest(server, statement, length); 168 response_code = httpRequest(server, statement, length);
Project/applications/smartcities/main.c
@@ -12,15 +12,13 @@ @@ -12,15 +12,13 @@
12 #include "ntp.h" 12 #include "ntp.h"
13 #include "sensors.h" 13 #include "sensors.h"
14 14
15 -#define WIFI_MODE WIFI_MODE_CLIENT  
16 -#define NETWORK_SSID_AP "modularsense"  
17 -#define NETWORK_KEY_AP NULL  
18 -#define NETWORK_CHANNEL_AP 1  
19 -  
20 -#define HARD_LIMIT_WAIT_TIME 10*1000 //5*60*1000  
21 - 15 +uint8_t connected=0;
  16 +uint8_t timeout=0;
  17 +uint8_t retries=0;
  18 +uint8_t sensors_length=0;
  19 +uint8_t registry_opened=0;
22 wismart_registryKey_t geo; 20 wismart_registryKey_t geo;
23 - 21 +module mod;
24 22
25 void initLibwismart(void) 23 void initLibwismart(void)
26 { 24 {
@@ -28,13 +26,6 @@ void initLibwismart(void) @@ -28,13 +26,6 @@ void initLibwismart(void)
28 libwismart_Init(hwif); 26 libwismart_Init(hwif);
29 } 27 }
30 28
31 -uint8_t connected=0;  
32 -uint8_t timeout=0;  
33 -uint8_t retries=0;  
34 -uint8_t sensors_length=0;  
35 -uint8_t registry_opened=0;  
36 -  
37 -module mod;  
38 29
39 void update_time(unsigned long *time) 30 void update_time(unsigned long *time)
40 { 31 {
@@ -114,8 +105,6 @@ void send_data(char** buffers[], uint32_t ind[], uint32_t sizes[], uint8_t senso @@ -114,8 +105,6 @@ void send_data(char** buffers[], uint32_t ind[], uint32_t sizes[], uint8_t senso
114 for(j=0;j<sensors_length;j++) 105 for(j=0;j<sensors_length;j++)
115 { 106 {
116 printf(" enviant buffer %d\r\n",j); 107 printf(" enviant buffer %d\r\n",j);
117 -  
118 - // fem servir 085 de prova, perรฒ haurem de fer servir sensor_id[j]  
119 char id[3]; 108 char id[3];
120 sprintf(id,"%x",sensors[j]); 109 sprintf(id,"%x",sensors[j]);
121 int ok=send(buffers[j],&ind[j],&sizes[j], mod.ID, id); 110 int ok=send(buffers[j],&ind[j],&sizes[j], mod.ID, id);
@@ -124,10 +113,12 @@ void send_data(char** buffers[], uint32_t ind[], uint32_t sizes[], uint8_t senso @@ -124,10 +113,12 @@ void send_data(char** buffers[], uint32_t ind[], uint32_t sizes[], uint8_t senso
124 { 113 {
125 printf("wismart is not connected\r\n"); 114 printf("wismart is not connected\r\n");
126 } 115 }
127 - else if( ok==JSON_OTHER_ERROR){ 116 + else if( ok==JSON_OTHER_ERROR)
  117 + {
128 printf("some error ocurred\r\n"); 118 printf("some error ocurred\r\n");
129 } 119 }
130 - else if(ok ==JSON_POST_OK){ 120 + else if(ok ==JSON_POST_OK)
  121 + {
131 printf(" send OK \r\n"); 122 printf(" send OK \r\n");
132 } 123 }
133 } 124 }
@@ -136,7 +127,8 @@ void send_data(char** buffers[], uint32_t ind[], uint32_t sizes[], uint8_t senso @@ -136,7 +127,8 @@ void send_data(char** buffers[], uint32_t ind[], uint32_t sizes[], uint8_t senso
136 void put_buffers(char** buffers[],uint32_t ind[],uint32_t sizes[],char** cooked, uint8_t* sensors) 127 void put_buffers(char** buffers[],uint32_t ind[],uint32_t sizes[],char** cooked, uint8_t* sensors)
137 { 128 {
138 int i; 129 int i;
139 - for(i=0;i<sensors_length;i++){ 130 + for(i=0;i<sensors_length;i++)
  131 + {
140 printf("For %d and %d\n\r", ind[i],sizes[i]); 132 printf("For %d and %d\n\r", ind[i],sizes[i]);
141 printf("Putting data: %s\n\r",cooked[i]); 133 printf("Putting data: %s\n\r",cooked[i]);
142 buffers[i] = put_message(cooked[i], buffers[i] ,&ind[i],&sizes[i]); 134 buffers[i] = put_message(cooked[i], buffers[i] ,&ind[i],&sizes[i]);
@@ -173,7 +165,6 @@ void wifi_connect(void) @@ -173,7 +165,6 @@ void wifi_connect(void)
173 if(timeout==1) 165 if(timeout==1)
174 { 166 {
175 printf("Creating AP\r\n"); 167 printf("Creating AP\r\n");
176 - //corroborar los parametros del AP  
177 configServer_start(1); 168 configServer_start(1);
178 libwismart_WiFi_SoftAP_Start(NETWORK_SSID_AP,NETWORK_CHANNEL_AP,NULL,softapMode_apStartedCb, softapMode_clientIndicationCb); 169 libwismart_WiFi_SoftAP_Start(NETWORK_SSID_AP,NETWORK_CHANNEL_AP,NULL,softapMode_apStartedCb, softapMode_clientIndicationCb);
179 for(;;) 170 for(;;)
@@ -209,7 +200,8 @@ void send_battery_level(unsigned long timestamp) @@ -209,7 +200,8 @@ void send_battery_level(unsigned long timestamp)
209 chHeapFree(statement); 200 chHeapFree(statement);
210 } 201 }
211 202
212 -void wifi_disconnect(void){ 203 +void wifi_disconnect(void)
  204 +{
213 connected = 0; 205 connected = 0;
214 timeout = 0; 206 timeout = 0;
215 uint8_t res=libwismart_WiFiDisconnect(); 207 uint8_t res=libwismart_WiFiDisconnect();
@@ -235,7 +227,6 @@ int main(void) @@ -235,7 +227,6 @@ int main(void)
235 memset (sensors, 0, TOTAL_SENSORS); 227 memset (sensors, 0, TOTAL_SENSORS);
236 228
237 char* valueSensors[TOTAL_SENSORS]; 229 char* valueSensors[TOTAL_SENSORS];
238 - //memset (valueSensors, 0, TOTAL_SENSORS);  
239 230
240 for(i = 0; i < TOTAL_SENSORS; i++) 231 for(i = 0; i < TOTAL_SENSORS; i++)
241 { 232 {
@@ -247,7 +238,6 @@ int main(void) @@ -247,7 +238,6 @@ int main(void)
247 238
248 wakeup_sensors(0xFF); 239 wakeup_sensors(0xFF);
249 printf("Scanning sensors...\r\n"); 240 printf("Scanning sensors...\r\n");
250 - //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  
251 //Escanea y registra 241 //Escanea y registra
252 I2C_scan(I2C1,sensors); 242 I2C_scan(I2C1,sensors);
253 sensors_length=strlen((char*)sensors); 243 sensors_length=strlen((char*)sensors);
@@ -289,7 +279,8 @@ int main(void) @@ -289,7 +279,8 @@ int main(void)
289 printf("Putting data in buffer...\r\n"); 279 printf("Putting data in buffer...\r\n");
290 put_buffers(buffers,ind,sizes,values,sensors); 280 put_buffers(buffers,ind,sizes,values,sensors);
291 printf("Data is now in buffer...\n\r"); 281 printf("Data is now in buffer...\n\r");
292 - if (i == LONG_PERIOD/SHORT_PERIOD ){ 282 + if (i == LONG_PERIOD/SHORT_PERIOD )
  283 + {
293 printf("Programmed Send cycle...\r\n"); 284 printf("Programmed Send cycle...\r\n");
294 /* Wi-Fi connect */ 285 /* Wi-Fi connect */
295 printf("Connecting to wifi...\r\n"); 286 printf("Connecting to wifi...\r\n");
@@ -299,10 +290,8 @@ int main(void) @@ -299,10 +290,8 @@ int main(void)
299 printf("Data sent!\r\n"); 290 printf("Data sent!\r\n");
300 //Now sending battery level 291 //Now sending battery level
301 send_battery_level(timestamp); 292 send_battery_level(timestamp);
302 - //time = getNTPTime();  
303 update_time(&time); 293 update_time(&time);
304 delay = getSystemTime(); 294 delay = getSystemTime();
305 - //desconectar wifi  
306 wifi_disconnect(); 295 wifi_disconnect();
307 printf("new ntp time (absolute):\t%ul\r\ntime mod LONG_PERIOD:\t%ul\r\ntime mod SHORT_PERIOD:\t%ul\r\n",time,time%LONG_PERIOD,time%SHORT_PERIOD); 296 printf("new ntp time (absolute):\t%ul\r\ntime mod LONG_PERIOD:\t%ul\r\ntime mod SHORT_PERIOD:\t%ul\r\n",time,time%LONG_PERIOD,time%SHORT_PERIOD);
308 i = 0; 297 i = 0;
@@ -310,16 +299,17 @@ int main(void) @@ -310,16 +299,17 @@ int main(void)
310 299
311 printf("mirant memoria\r\n"); 300 printf("mirant memoria\r\n");
312 int res=check_memory(); 301 int res=check_memory();
313 - if(res==SOFT_REACHED){ 302 + if(res==SOFT_REACHED)
  303 + {
314 printf("--------------soft limit-------------\r\n"); 304 printf("--------------soft limit-------------\r\n");
315 wifi_connect(); 305 wifi_connect();
316 send_data(buffers, ind, sizes, sensors); 306 send_data(buffers, ind, sizes, sensors);
317 //Now sending battery level 307 //Now sending battery level
318 send_battery_level(timestamp); 308 send_battery_level(timestamp);
319 - //disconect_wifi()  
320 wifi_disconnect(); 309 wifi_disconnect();
321 } 310 }
322 - else if(res==HARD_REACHED){ 311 + else if(res==HARD_REACHED)
  312 + {
323 printf("--------------hard limit-------------\r\n"); 313 printf("--------------hard limit-------------\r\n");
324 wifi_connect(); 314 wifi_connect();
325 char id_0[3]; 315 char id_0[3];
@@ -351,7 +341,6 @@ int main(void) @@ -351,7 +341,6 @@ int main(void)
351 else if(ok ==JSON_POST_OK){ 341 else if(ok ==JSON_POST_OK){
352 printf(" send OK \r\n"); 342 printf(" send OK \r\n");
353 } 343 }
354 -  
355 } 344 }
356 //Now sending battery level 345 //Now sending battery level
357 send_battery_level(timestamp); 346 send_battery_level(timestamp);
@@ -370,8 +359,6 @@ int main(void) @@ -370,8 +359,6 @@ int main(void)
370 /* 359 /*
371 * TO-DO 360 * TO-DO
372 * 361 *
373 - * - Test distance and humidity sensors  
374 - * - Test ADC  
375 - * - Test register, data send and battery send 362 + * - Test distance
376 * - Reset timer-related defines 363 * - Reset timer-related defines
377 */ 364 */
378 \ No newline at end of file 365 \ No newline at end of file
Project/applications/smartcities/ntp.c
1 #include "ntp.h" 1 #include "ntp.h"
2 2
3 -Date getDate(unsigned long secsSince1900){ 3 +Date getDate(unsigned long secsSince1900)
  4 +{
4 unsigned long daysPerMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; 5 unsigned long daysPerMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
5 -  
6 unsigned long epoch = secsSince1900 - DIFF_SEC_1900_1970; 6 unsigned long epoch = secsSince1900 - DIFF_SEC_1900_1970;
7 7
8 int second = epoch % 60; 8 int second = epoch % 60;
@@ -14,7 +14,8 @@ Date getDate(unsigned long secsSince1900){ @@ -14,7 +14,8 @@ Date getDate(unsigned long secsSince1900){
14 int year = 0; 14 int year = 0;
15 unsigned long days = 0; 15 unsigned long days = 0;
16 16
17 - while((unsigned)(days += (LEAP_YEAR(year) ? 366 : 365)) <= epoch){ 17 + while((unsigned)(days += (LEAP_YEAR(year) ? 366 : 365)) <= epoch)
  18 + {
18 year++; 19 year++;
19 } 20 }
20 days -= LEAP_YEAR(year) ? 366 : 365; 21 days -= LEAP_YEAR(year) ? 366 : 365;
@@ -23,14 +24,17 @@ Date getDate(unsigned long secsSince1900){ @@ -23,14 +24,17 @@ Date getDate(unsigned long secsSince1900){
23 int j=0; 24 int j=0;
24 int cont=0; 25 int cont=0;
25 int aux=epoch; 26 int aux=epoch;
26 - if(LEAP_YEAR(year)){ 27 + if(LEAP_YEAR(year))
  28 + {
27 daysPerMonth[1]=29; 29 daysPerMonth[1]=29;
28 } 30 }
29 31
30 - while (daysPerMonth[j]<sizeof(daysPerMonth)){ 32 + while (daysPerMonth[j]<sizeof(daysPerMonth))
  33 + {
31 34
32 cont+=daysPerMonth[j]; 35 cont+=daysPerMonth[j];
33 - if(epoch<cont){ 36 + if(epoch<cont)
  37 + {
34 break; 38 break;
35 } 39 }
36 aux-=daysPerMonth[j]; 40 aux-=daysPerMonth[j];
@@ -165,16 +169,8 @@ unsigned long getSecsSince1900 (void) @@ -165,16 +169,8 @@ unsigned long getSecsSince1900 (void)
165 169
166 /*Funcion para testeo del resto de funciones relacionadas con NTP. 170 /*Funcion para testeo del resto de funciones relacionadas con NTP.
167 -) getSecsSince1900() solo devuelve los segundos desde 1900, esta funciรณn abre y cierra los sockets de forma que puede ser llamada de forma continuada 171 -) getSecsSince1900() solo devuelve los segundos desde 1900, esta funciรณn abre y cierra los sockets de forma que puede ser llamada de forma continuada
168 - -) a getDate() se le deve pasar el resultado de la funciรณn anterior 172 + -) a getDate() se le debe pasar el resultado de la funciรณn anterior
169 */ 173 */
170 -void udpNtp_test(){  
171 -  
172 - libwismart_EnableBsdSocketAPI();  
173 - Date var2=getDate(getSecsSince1900());  
174 -  
175 - printf("Hora:%i:%i:%i\r\n", var2.hour, var2.minute, var2.second);  
176 - printf("Fecha:%i|%i|%i\r\n", var2.day,var2.month,var2.year);  
177 -}  
178 174
179 char* timestamp_data(char* value,Date time) 175 char* timestamp_data(char* value,Date time)
180 { 176 {
@@ -204,4 +200,4 @@ char* timestamp_data(char* value,Date time) @@ -204,4 +200,4 @@ char* timestamp_data(char* value,Date time)
204 strcat(data, str_second); 200 strcat(data, str_second);
205 data[length-1] = '\0'; 201 data[length-1] = '\0';
206 return data; 202 return data;
207 -} 203 -}
  204 +}
208 \ No newline at end of file 205 \ No newline at end of file
Project/applications/smartcities/sensors.c
@@ -115,6 +115,23 @@ uint16_t get_light_ch1(void) @@ -115,6 +115,23 @@ uint16_t get_light_ch1(void)
115 return data; 115 return data;
116 } 116 }
117 117
  118 +char* light_value(uint32_t light)
  119 +{
  120 + char *value = chHeapAlloc(NULL,10 + 1);
  121 + sprintf(value,"%d",(unsigned int)light);
  122 + return value;
  123 +}
  124 +
  125 +void init_ultrasound(void)
  126 +{
  127 + I2C_start(I2C1,DISTANCE_ADDR << 1, I2C_Direction_Transmitter);
  128 + I2C_write(I2C1, 0x00);
  129 + I2C_write(I2C1, 0x50);
  130 + I2C_stop(I2C1);
  131 +
  132 + chThdSleepMilliseconds(70);
  133 +}
  134 +
118 uint16_t get_distance_data(void) 135 uint16_t get_distance_data(void)
119 { 136 {
120 init_ultrasound(); 137 init_ultrasound();
@@ -134,50 +151,31 @@ uint16_t get_distance_data(void) @@ -134,50 +151,31 @@ uint16_t get_distance_data(void)
134 return data; 151 return data;
135 } 152 }
136 153
137 -void init_ultrasound(void) 154 +char* distance_value(uint16_t distance)
138 { 155 {
139 - I2C_start(I2C1,DISTANCE_ADDR << 1, I2C_Direction_Transmitter);  
140 - I2C_write(I2C1, 0x00);  
141 - I2C_write(I2C1, 0x50);  
142 - I2C_stop(I2C1);  
143 -  
144 - chThdSleepMilliseconds(70); 156 + char *value = chHeapAlloc(NULL,5 + 1);
  157 + sprintf(value,"%d",distance);
  158 + return value;
145 } 159 }
146 160
147 -uint16_t get_pressure_data(void) 161 +void init_pressure(void)
148 { 162 {
149 - uint16_t data;  
150 - init_pressure();  
151 - printf("PRESSURE: Initialized\r\n");  
152 I2C_start(I2C1,PRESSURE_ADDR << 1, I2C_Direction_Transmitter); 163 I2C_start(I2C1,PRESSURE_ADDR << 1, I2C_Direction_Transmitter);
153 - I2C_write(I2C1, 0xF6); 164 + I2C_write(I2C1, 0xF4);
  165 + I2C_write(I2C1, 0x34);
  166 + I2C_stop(I2C1);
154 167
155 - I2C_restart(I2C1, PRESSURE_ADDR << 1, I2C_Direction_Receiver);  
156 - data = I2C_read_ack(I2C1);  
157 - printf("PRESSURE: Got high byte\r\n");  
158 - data = data << 8;  
159 - data = data | I2C_read_nack(I2C1);  
160 - printf("PRESSURE: Got low byte\r\n");  
161 - I2C_stop(I2C1);  
162 - return data; 168 + chThdSleepMilliseconds(5);
163 } 169 }
164 170
165 -uint16_t get_pressure_temperature_data(void) 171 +void init_pressure_temperature(void)
166 { 172 {
167 - uint16_t data;  
168 - init_pressure_temperature();  
169 - printf("PRESSURE: Initialized temperature\r\n");  
170 I2C_start(I2C1,PRESSURE_ADDR << 1, I2C_Direction_Transmitter); 173 I2C_start(I2C1,PRESSURE_ADDR << 1, I2C_Direction_Transmitter);
171 - I2C_write(I2C1, 0xF6);  
172 -  
173 - I2C_restart(I2C1, PRESSURE_ADDR << 1, I2C_Direction_Receiver);  
174 - data = I2C_read_ack(I2C1);  
175 - printf("PRESSURE: Got temperature high byte\r\n");  
176 - data = data << 8;  
177 - data = data | I2C_read_nack(I2C1);  
178 - printf("PRESSURE: Got temperature low byte\r\n");  
179 - I2C_stop(I2C1);  
180 - return data; 174 + I2C_write(I2C1, 0xF4);
  175 + I2C_write(I2C1, 0x2E);
  176 + I2C_stop(I2C1);
  177 +
  178 + chThdSleepMilliseconds(5);
181 } 179 }
182 180
183 bmp085_callibration get_pressure_callibration_data(void) 181 bmp085_callibration get_pressure_callibration_data(void)
@@ -265,6 +263,7 @@ bmp085_callibration get_pressure_callibration_data(void) @@ -265,6 +263,7 @@ bmp085_callibration get_pressure_callibration_data(void)
265 printf("PRESSURE: Got callibration data\r\n"); 263 printf("PRESSURE: Got callibration data\r\n");
266 return calib_data; 264 return calib_data;
267 } 265 }
  266 +
268 char* callibration_pressure_data_csv(bmp085_callibration parameters) 267 char* callibration_pressure_data_csv(bmp085_callibration parameters)
269 { 268 {
270 char *str = chHeapAlloc(NULL,sizeof(char)*(11*11-1)); 269 char *str = chHeapAlloc(NULL,sizeof(char)*(11*11-1));
@@ -283,24 +282,47 @@ char* callibration_pressure_data_csv(bmp085_callibration parameters) @@ -283,24 +282,47 @@ char* callibration_pressure_data_csv(bmp085_callibration parameters)
283 return str; 282 return str;
284 } 283 }
285 284
286 -void init_pressure(void) 285 +uint16_t get_pressure_data(void)
287 { 286 {
  287 + uint16_t data;
  288 + init_pressure();
  289 + printf("PRESSURE: Initialized\r\n");
288 I2C_start(I2C1,PRESSURE_ADDR << 1, I2C_Direction_Transmitter); 290 I2C_start(I2C1,PRESSURE_ADDR << 1, I2C_Direction_Transmitter);
289 - I2C_write(I2C1, 0xF4);  
290 - I2C_write(I2C1, 0x34);  
291 - I2C_stop(I2C1); 291 + I2C_write(I2C1, 0xF6);
292 292
293 - chThdSleepMilliseconds(5); 293 + I2C_restart(I2C1, PRESSURE_ADDR << 1, I2C_Direction_Receiver);
  294 + data = I2C_read_ack(I2C1);
  295 + printf("PRESSURE: Got high byte\r\n");
  296 + data = data << 8;
  297 + data = data | I2C_read_nack(I2C1);
  298 + printf("PRESSURE: Got low byte\r\n");
  299 + I2C_stop(I2C1);
  300 + return data;
294 } 301 }
295 302
296 -void init_pressure_temperature(void) 303 +uint16_t get_pressure_temperature_data(void)
297 { 304 {
  305 + uint16_t data;
  306 + init_pressure_temperature();
  307 + printf("PRESSURE: Initialized temperature\r\n");
298 I2C_start(I2C1,PRESSURE_ADDR << 1, I2C_Direction_Transmitter); 308 I2C_start(I2C1,PRESSURE_ADDR << 1, I2C_Direction_Transmitter);
299 - I2C_write(I2C1, 0xF4);  
300 - I2C_write(I2C1, 0x2E);  
301 - I2C_stop(I2C1);  
302 -  
303 - chThdSleepMilliseconds(5); 309 + I2C_write(I2C1, 0xF6);
  310 +
  311 + I2C_restart(I2C1, PRESSURE_ADDR << 1, I2C_Direction_Receiver);
  312 + data = I2C_read_ack(I2C1);
  313 + printf("PRESSURE: Got temperature high byte\r\n");
  314 + data = data << 8;
  315 + data = data | I2C_read_nack(I2C1);
  316 + printf("PRESSURE: Got temperature low byte\r\n");
  317 + I2C_stop(I2C1);
  318 + return data;
  319 +}
  320 +
  321 +char* pressure_value(uint16_t pressure, uint16_t temperature)
  322 +{
  323 + char *value = chHeapAlloc(NULL,11 + 1);
  324 + sprintf(value,"%d,%d",pressure,temperature);
  325 + return value;
304 } 326 }
305 327
306 void init_humidity_temp(void) 328 void init_humidity_temp(void)
@@ -308,7 +330,6 @@ void init_humidity_temp(void) @@ -308,7 +330,6 @@ void init_humidity_temp(void)
308 printf("HUMIDITY: Initializing sensor\r\n"); 330 printf("HUMIDITY: Initializing sensor\r\n");
309 I2C_start(I2C1,HUMIDITY_TEMP_ADDR << 1, I2C_Direction_Transmitter); 331 I2C_start(I2C1,HUMIDITY_TEMP_ADDR << 1, I2C_Direction_Transmitter);
310 I2C_stop(I2C1); 332 I2C_stop(I2C1);
311 - //Reset I2C?  
312 } 333 }
313 uint16_t get_humidity_data(void) 334 uint16_t get_humidity_data(void)
314 { 335 {
@@ -344,24 +365,6 @@ uint16_t get_temperature_data(void) @@ -344,24 +365,6 @@ uint16_t get_temperature_data(void)
344 return data; 365 return data;
345 } 366 }
346 367
347 -char* light_value(uint32_t light)  
348 -{  
349 - char *value = chHeapAlloc(NULL,10 + 1);  
350 - sprintf(value,"%d",(unsigned int)light);  
351 - return value;  
352 -}  
353 -char* distance_value(uint16_t distance)  
354 -{  
355 - char *value = chHeapAlloc(NULL,5 + 1);  
356 - sprintf(value,"%d",distance);  
357 - return value;  
358 -}  
359 -char* pressure_value(uint16_t pressure, uint16_t temperature)  
360 -{  
361 - char *value = chHeapAlloc(NULL,11 + 1);  
362 - sprintf(value,"%d,%d",pressure,temperature);  
363 - return value;  
364 -}  
365 char* temp_humidity_value(uint16_t temp, uint16_t humidity) 368 char* temp_humidity_value(uint16_t temp, uint16_t humidity)
366 { 369 {
367 char *value = chHeapAlloc(NULL,11 + 1); 370 char *value = chHeapAlloc(NULL,11 + 1);
@@ -371,7 +374,6 @@ char* temp_humidity_value(uint16_t temp, uint16_t humidity) @@ -371,7 +374,6 @@ char* temp_humidity_value(uint16_t temp, uint16_t humidity)
371 374
372 void init_sound(void) 375 void init_sound(void)
373 { 376 {
374 - //DARLE CHICHA AL INTERRUPTOR I2C  
375 adc_sound_init(); 377 adc_sound_init();
376 } 378 }
377 uint32_t get_sound_data(void) 379 uint32_t get_sound_data(void)
@@ -386,6 +388,24 @@ char* sound_value(uint32_t sound) @@ -386,6 +388,24 @@ char* sound_value(uint32_t sound)
386 return value; 388 return value;
387 } 389 }
388 390
  391 +void init_battery(void)
  392 +{
  393 + adc_batt_init();
  394 +}
  395 +
  396 +uint32_t get_battery_data(void)
  397 +{
  398 + init_battery();
  399 + return adc_batt_process();
  400 +}
  401 +
  402 +char* battery_value(uint32_t battery)
  403 +{
  404 + char *value = chHeapAlloc(NULL,11 + 1);
  405 + sprintf(value,"%4u",(unsigned int)battery);
  406 + return value;
  407 +}
  408 +
389 void collectData(char* valueSensors[], uint8_t* sensors){ 409 void collectData(char* valueSensors[], uint8_t* sensors){
390 uint8_t i; 410 uint8_t i;
391 for(i=0;i<strlen((char*)sensors);i++) 411 for(i=0;i<strlen((char*)sensors);i++)
@@ -427,22 +447,4 @@ void collectData(char* valueSensors[], uint8_t* sensors){ @@ -427,22 +447,4 @@ void collectData(char* valueSensors[], uint8_t* sensors){
427 valueSensors[i]=temp_humidity_value(get_temperature_data(),get_humidity_data()); 447 valueSensors[i]=temp_humidity_value(get_temperature_data(),get_humidity_data());
428 } 448 }
429 } 449 }
430 -}  
431 -  
432 -void init_battery(void)  
433 -{  
434 - adc_batt_init();  
435 -}  
436 -  
437 -uint32_t get_battery_data(void)  
438 -{  
439 - init_battery();  
440 - return adc_batt_process();  
441 -}  
442 -  
443 -char* battery_value(uint32_t battery)  
444 -{  
445 - char *value = chHeapAlloc(NULL,11 + 1);  
446 - sprintf(value,"%4u",(unsigned int)battery);  
447 - return value;  
448 } 450 }
449 \ No newline at end of file 451 \ No newline at end of file
Project/applications/smartcities/timer-loop.c
@@ -19,13 +19,16 @@ @@ -19,13 +19,16 @@
19 * - milisegons:ans/1000 = 4.294.967,295 segons // 49 days 17 hours 2 minutes 47.3 seconds 19 * - milisegons:ans/1000 = 4.294.967,295 segons // 49 days 17 hours 2 minutes 47.3 seconds
20 */ 20 */
21 unsigned long getSystemTime() 21 unsigned long getSystemTime()
22 -{ return (long)libwismart_GetTime()/1000; } 22 +{
  23 + return (long)libwismart_GetTime()/1000;
  24 +}
23 25
24 unsigned long getElapsedTime(unsigned long t) 26 unsigned long getElapsedTime(unsigned long t)
25 -{ return (long)libwismart_ElapsedTime(t*1000)/1000; } 27 +{
  28 + return (long)libwismart_ElapsedTime(t*1000)/1000;
  29 +}
26 30
27 void sleep_thread(unsigned long seconds) 31 void sleep_thread(unsigned long seconds)
28 { 32 {
29 chThdSleepMilliseconds( (unsigned int)seconds*1000 ); 33 chThdSleepMilliseconds( (unsigned int)seconds*1000 );
30 - //sleep(seconds); //for testing in linux machine  
31 } 34 }
32 \ No newline at end of file 35 \ No newline at end of file