Commit 626579214fa75723c349260631a950df357ba214
1 parent
1cbe8c09
--no commit message
Showing
1 changed file
with
112 additions
and
4 deletions
Project/applications/smartcities/main2.c
... | ... | @@ -84,6 +84,38 @@ void init_registry(void) |
84 | 84 | {chThdSleepMilliseconds(500);} |
85 | 85 | |
86 | 86 | } |
87 | + | |
88 | +void send_data() | |
89 | +{ | |
90 | + int j; | |
91 | + for(j=0;j<TOTAL_SENSORS;j++) | |
92 | + { | |
93 | + printf(" enviant buffer %d\r\n",j); | |
94 | + | |
95 | + // fem servir 085 de prova, però haurem de fer servir sensor_id[j] | |
96 | + int ok=send(buffers[j],&ind[j],&sizes[j], mod.ID, sensors[j]); | |
97 | + | |
98 | + if(ok==JSON_COMM_ERROR) | |
99 | + { | |
100 | + printf("wismart is not connected\r\n"); | |
101 | + } | |
102 | + else if( ok==JSON_OTHER_ERROR){ | |
103 | + printf("some error ocurred\r\n"); | |
104 | + } | |
105 | + else if(ok ==JSON_POST_OK){ | |
106 | + printf(" send OK \r\n"); | |
107 | + } | |
108 | + } | |
109 | +} | |
110 | + | |
111 | +void put_buffers(char** buffers,uint32_t ind[],uint32_t sizes[],char* valueSensors[]){ | |
112 | +int i; | |
113 | + for(i=0;i<TOTAL_SENSORS;i++){ | |
114 | + put_message(valueSensors[i], buffers[i] ,&ind[i],&sizes[i]); | |
115 | + } | |
116 | + | |
117 | +} | |
118 | + | |
87 | 119 | int main(void) |
88 | 120 | { |
89 | 121 | initLibwismart(); |
... | ... | @@ -96,10 +128,10 @@ int main(void) |
96 | 128 | |
97 | 129 | //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 |
98 | 130 | uint8_t sensors[TOTAL_SENSORS]; |
99 | - char valueSensors[TOTAL_SENSORS]; | |
131 | + char* valueSensors[TOTAL_SENSORS]; | |
100 | 132 | I2C_scan(sensors); |
101 | 133 | |
102 | - int i = 1; | |
134 | + | |
103 | 135 | //unsigned int time = getNTPTime(); |
104 | 136 | unsigned int time = getSecsSince1900(); |
105 | 137 | |
... | ... | @@ -108,6 +140,24 @@ int main(void) |
108 | 140 | unsigned int delay2 = 0; |
109 | 141 | sleep_thread(SHORT_PERIOD - time%SHORT_PERIOD); |
110 | 142 | |
143 | + uint32_t ind[4]={0}; | |
144 | + char** buffers[4]; | |
145 | + uint32_t sizes[4]={0}; | |
146 | + | |
147 | + init_registry(); | |
148 | + | |
149 | + if(timeout==1) | |
150 | + { | |
151 | + printf("Creating AP\r\n"); | |
152 | + //corroborar los parametros del AP | |
153 | + configServer_start(1); | |
154 | + libwismart_WiFi_SoftAP_Start(NETWORK_SSID_AP,NETWORK_CHANNEL_AP,NULL,softapMode_apStartedCb, softapMode_clientIndicationCb); | |
155 | + for(;;) | |
156 | + { | |
157 | + chThdSleepMilliseconds(1000); | |
158 | + } | |
159 | + | |
160 | + int i = 1; | |
111 | 161 | while(1){ |
112 | 162 | time += getElapsedTime(delay); |
113 | 163 | 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); |
... | ... | @@ -122,10 +172,12 @@ int main(void) |
122 | 172 | 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); |
123 | 173 | |
124 | 174 | delay = getSystemTime(); |
175 | + //cada mitja hora | |
125 | 176 | if (i == LONG_PERIOD/SHORT_PERIOD ){ |
126 | 177 | /* Wi-Fi connect */ |
127 | 178 | wifi_connect(); |
128 | 179 | /* Send data to server, empty the buffer */ |
180 | + send_data(); | |
129 | 181 | //time = getNTPTime(); |
130 | 182 | time = getSecsSince1900(); |
131 | 183 | 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); |
... | ... | @@ -138,8 +190,64 @@ int main(void) |
138 | 190 | printf("timestamp (absolute):\t%d\r\ntimestamp mod LONG_PERIOD:\t%d\r\ntimestamp mod SHORT_PERIOD:\t%d\r\n",timestamp,timestamp%LONG_PERIOD,timestamp%SHORT_PERIOD); |
139 | 191 | |
140 | 192 | /* Add data to the buffer with timestamp*/ |
193 | + put_buffers(buffers,ind,sizes,valueSensors); | |
194 | + printf("mirant memoria\r\n"); | |
195 | + int res=check_memory(); | |
196 | + if(res==SOFT_REACHED){ | |
197 | + printf("--------------soft limit-------------\r\n"); | |
198 | + int j; | |
199 | + for(j=0;j<TOTAL_SENSORS;j++) | |
200 | + { | |
201 | + printf(" enviant buffer %d\r\n",j); | |
202 | + | |
203 | + // fem servir 085 de prova, però haurem de fer servir sensor_id[j] | |
204 | + int ok=send(buffers[j],&ind[j],&sizes[j], mod.ID, sensor_id[j]); | |
205 | + | |
206 | + if(ok==JSON_COMM_ERROR) | |
207 | + { | |
208 | + printf("wismart is not connected\r\n"); | |
209 | + } | |
210 | + else if( ok==JSON_OTHER_ERROR){ | |
211 | + printf("some error ocurred\r\n"); | |
212 | + } | |
213 | + else if(ok ==JSON_POST_OK){ | |
214 | + printf(" send OK \r\n"); | |
215 | + } | |
216 | + } | |
217 | + } | |
218 | + else if(res==HARD_REACHED){ | |
219 | + printf("--------------hard limit-------------\r\n"); | |
220 | + | |
221 | + // fem servir 085 de prova, però haurem de fer servir sensor_id[0] | |
222 | + while( send(buffers[0],&ind[0],&sizes[0], mod.ID, sensors[j]) != JSON_POST_OK ) | |
223 | + { | |
224 | + // El servidor no ens sap dir si tenim permisos o no sense registrar una mostra. | |
225 | + // Intentem enviar un buffer sencer, a veure si ja podem buidar. | |
226 | + // No podem enviar només una mostra perquè json és rígid en aquest sentit. | |
227 | + | |
228 | + printf("hard_reached and unable to sentd.\r\nLa biblia en vers: i Jesús digué: Aixeca't, Llàtzer!!\r\n"); | |
229 | + chThdSleepMilliseconds(HARD_LIMIT_WAIT_TIME); | |
230 | + } | |
231 | + int j; | |
232 | + for(j=1;j<TOTAL_SENSORS;j++) | |
233 | + { | |
234 | + printf(" enviant buffer %d\r\n",j); | |
235 | + | |
236 | + // fem servir 085 de prova, però haurem de fer servir sensor_id[j] | |
237 | + int ok=send(buffers[j],&ind[j],&sizes[j], mod.ID, sensors[j]); | |
238 | + if(ok==JSON_COMM_ERROR) | |
239 | + { | |
240 | + printf("wismart is not connected\r\n"); | |
241 | + } | |
242 | + else if( ok==JSON_OTHER_ERROR){ | |
243 | + printf("some error ocurred\r\n"); | |
244 | + } | |
245 | + else if(ok ==JSON_POST_OK){ | |
246 | + printf(" send OK \r\n"); | |
247 | + } | |
248 | + } | |
249 | + } | |
141 | 250 | //a_cookedData = format_data(a_rawData, timestamp); |
142 | - store_data(/* data */); | |
143 | 251 | |
144 | 252 | time += getElapsedTime(delay); |
145 | 253 | 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); |
... | ... | @@ -160,7 +268,7 @@ int main(void) |
160 | 268 | uint32_t sizes[4]={0}; |
161 | 269 | char* sensor_id[4]; |
162 | 270 | int i; |
163 | - int num_sensors; | |
271 | + | |
164 | 272 | |
165 | 273 | init_registry(); |
166 | 274 | ... | ... |