Commit 746b99d593fda79672990b377371df81e8c00ca6
1 parent
08c7da6d
--no commit message
Showing
6 changed files
with
56 additions
and
38 deletions
Project/applications/smartcities/Makefile
@@ -10,7 +10,7 @@ | @@ -10,7 +10,7 @@ | ||
10 | SDK_ROOT = ../../ | 10 | SDK_ROOT = ../../ |
11 | PROJECT_OUT = smartcities | 11 | PROJECT_OUT = smartcities |
12 | 12 | ||
13 | -USER_SRC = main.c httpClient.c | 13 | +USER_SRC = main.c httpClient.c callbacks.c |
14 | USER_INCDIR = include/ | 14 | USER_INCDIR = include/ |
15 | 15 | ||
16 | # if you need to add build Defines options add to USER_DEFS define | 16 | # if you need to add build Defines options add to USER_DEFS define |
Project/applications/smartcities/include/globals.h
Project/applications/smartcities/include/json.h
@@ -17,7 +17,7 @@ | @@ -17,7 +17,7 @@ | ||
17 | char* prepare_json_statement(char** data, uint32_t nObservations); | 17 | char* prepare_json_statement(char** data, uint32_t nObservations); |
18 | char* prepare_json_register_statement(char* module_ID, uint8_t sensor_type); | 18 | char* prepare_json_register_statement(char* module_ID, uint8_t sensor_type); |
19 | char* prepare_observation(char* observation, uint32_t length); | 19 | char* prepare_observation(char* observation, uint32_t length); |
20 | -uint8_t send_observation(char* statement, uint32_t length, char* ID); | 20 | +uint8_t send_observation(char* statement, uint32_t length, char* provider_ID, char* sensor_ID); |
21 | uint32_t find_next_index(char* string, uint32_t length, char delimiter); | 21 | uint32_t find_next_index(char* string, uint32_t length, char delimiter); |
22 | char* join_strings(char* str1, char* str2, uint32_t len1, uint32_t len2, bool) | 22 | char* join_strings(char* str1, char* str2, uint32_t len1, uint32_t len2, bool) |
23 | 23 |
Project/applications/smartcities/include/module.h
1 | #ifndef MODULE_H | 1 | #ifndef MODULE_H |
2 | #define MODULE_H | 2 | #define MODULE_H |
3 | 3 | ||
4 | -#define SERIAL_NUMBER "123456" | 4 | +typedef struct module_info { |
5 | + char* ID; | ||
6 | + char* geoloc; | ||
7 | +} module_info; | ||
8 | + | ||
9 | +module_info module = {"123456", "41.39479 2.148768"} /* append 0/1 flag for read write */ | ||
5 | 10 | ||
6 | #endif | 11 | #endif |
7 | \ No newline at end of file | 12 | \ No newline at end of file |
Project/applications/smartcities/include/sensors.h
1 | #ifndef SENSORS_H | 1 | #ifndef SENSORS_H |
2 | #define SENSORS_H | 2 | #define SENSORS_H |
3 | 3 | ||
4 | +typedef struct sensor_info { | ||
5 | + uint8_t ID; | ||
6 | + char* description; | ||
7 | + char* type; | ||
8 | + char* unit; | ||
9 | +} sensor_info; | ||
4 | 10 | ||
5 | -#endif | 11 | +sensor_info humidity_sensor = {ID = 0x77, "Humidity sensor", "humidity", "%"} /* append 0/1 flag for read write */ |
12 | + | ||
13 | + | ||
14 | +#endif | ||
6 | \ No newline at end of file | 15 | \ No newline at end of file |
Project/applications/smartcities/json.c
@@ -14,48 +14,48 @@ char* prepare_json_observation_statement(char** data, uint32_t nObservations) | @@ -14,48 +14,48 @@ char* prepare_json_observation_statement(char** data, uint32_t nObservations) | ||
14 | length += observation_length; | 14 | length += observation_length; |
15 | } | 15 | } |
16 | length--; //REMOVE LAST ',' | 16 | length--; //REMOVE LAST ',' |
17 | - json_statement = join_strings(str_aux,"]}",length,2,JOIN_NO_FREE); | 17 | + json_statement = join_strings(str_aux,"]}\0",length,3,JOIN_NO_FREE); |
18 | chHeapFree(str_aux); | 18 | chHeapFree(str_aux); |
19 | return json_statement; | 19 | return json_statement; |
20 | } | 20 | } |
21 | 21 | ||
22 | -char* prepare_json_register_statement(char* module_ID, uint8_t sensor_type) | 22 | +char* prepare_json_register_statement(module_info module, sensor_info sensor) |
23 | { | 23 | { |
24 | - //id, desc, type, unit | ||
25 | - | ||
26 | unsigned int i, length, observation_length; | 24 | unsigned int i, length, observation_length; |
27 | char *json_statement, *str_aux, *str_aux2; | 25 | char *json_statement, *str_aux, *str_aux2; |
28 | - length = 17; | ||
29 | - str_aux = join_strings("{\"observations\":[","",length,0,JOIN_NO_FREE); | ||
30 | - for(i = 0; i < nObservations; i++) | ||
31 | - { | ||
32 | - str_aux2 = prepare_observation(data[i],strlen(data[i])); | ||
33 | - observation_length = strlen(str_aux2); | ||
34 | - str_aux = join_strings(str_aux,str_aux2,length,observation_length,JOIN_FREE_MEM); | ||
35 | - length += observation_length; | ||
36 | - } | ||
37 | - length--; | ||
38 | - json_statement = join_strings(str_aux,"]}",length,2,JOIN_NO_FREE); | 26 | + length = 23; |
27 | + char* ID[MODULE_ID_LENGTH+3]; | ||
28 | + strcpy(ID,module.ID); | ||
29 | + sprintf(ID+MODULE_ID_LENGTH,"%d",sensor.ID); | ||
30 | + str_aux = join_strings("{\"sensors\":[{\"sensor\":\"",ID,length,MODULE_ID_LENGTH+2,JOIN_NO_FREE); | ||
31 | + length += MODULE_ID_LENGTH+2; | ||
32 | + str_aux2 = join_strings(str_aux,"\",\"description\":\"",length,17,JOIN_NO_FREE); | ||
39 | chHeapFree(str_aux); | 33 | chHeapFree(str_aux); |
40 | - return json_statement; | ||
41 | - | ||
42 | - char *json_data, *str_aux, *str_aux2; | ||
43 | - int value_length = find_next_index(observation,length,','); | ||
44 | - int timestamp_length = length - (value_length + 1); | ||
45 | - char *value = (char*) chHeapAlloc(NULL,value_length+1); | ||
46 | - char *timestamp = (char*) chHeapAlloc(NULL,timestamp_length+1); | ||
47 | - strncpy(value,observation,value_length); | ||
48 | - strncpy(timestamp,observation+(value_length+1),timestamp_length); | ||
49 | - value[value_length] = '\0'; | ||
50 | - timestamp[timestamp_length] = '\0'; | ||
51 | - str_aux = join_strings("{\"value\":\"",value,10,value_length,JOIN_NO_FREE); | ||
52 | - str_aux2 = join_strings(str_aux,"\",\"timestamp\":\"",10+value_length,15,JOIN_NO_FREE); | ||
53 | - str_aux2 = join_strings(str_aux2,timestamp,25+value_length,timestamp_length,JOIN_FREE_MEM); | ||
54 | - json_data = join_strings(str_aux2,"\"},",25+value_length+timestamp_length,3,JOIN_NO_FREE); | 34 | + length += 17; |
35 | + str_aux = join_strings(str_aux2,sensor.description,length,strlen(sensor.description),JOIN_NO_FREE); | ||
36 | + chHeapFree(str_aux2); | ||
37 | + length += strlen(sensor.description); | ||
38 | + str_aux2 = join_strings(str_aux,"\",\"type\":\"",length,10,JOIN_NO_FREE); | ||
55 | chHeapFree(str_aux); | 39 | chHeapFree(str_aux); |
40 | + length += 10; | ||
41 | + str_aux = join_strings(str_aux2,sensor.type,length,strlen(sensors.type),JOIN_NO_FREE); | ||
56 | chHeapFree(str_aux2); | 42 | chHeapFree(str_aux2); |
57 | - chHeapFree(value); | ||
58 | - return json_data; | 43 | + length += strlen(sensors.type); |
44 | + str_aux2 = join_strings(str_aux,"\",\"unit\":\"",length,10,JOIN_NO_FREE); | ||
45 | + chHeapFree(str_aux); | ||
46 | + length += 10; | ||
47 | + str_aux = join_strings(str_aux2,sensor.unit,length,strlen(sensor.unit),JOIN_NO_FREE); | ||
48 | + chHeapFree(str_aux2); | ||
49 | + length += strlen(sensor.unit); | ||
50 | + str_aux2 = join_strings(str_aux,"\",\"location\":\"",length,14,JOIN_NO_FREE); | ||
51 | + chHeapFree(str_aux); | ||
52 | + length += 14; | ||
53 | + str_aux = join_strings(str_aux2,module.geoloc,length,strlen(module.geoloc),JOIN_NO_FREE); | ||
54 | + chHeapFree(str_aux2); | ||
55 | + length += strlen(module.geoloc); | ||
56 | + json_statement = join_strings(str_aux,"\"}]}\0",length,5,JOIN_NO_FREE); | ||
57 | + chHeapFree(str_aux); | ||
58 | + return json_statement; | ||
59 | } | 59 | } |
60 | 60 | ||
61 | char* prepare_observation(char* observation, uint32_t length) | 61 | char* prepare_observation(char* observation, uint32_t length) |
@@ -161,4 +161,7 @@ char* join_strings(char* str1, char* str2, uint32_t len1, uint32_t len2, uint8_t | @@ -161,4 +161,7 @@ char* join_strings(char* str1, char* str2, uint32_t len1, uint32_t len2, uint8_t | ||
161 | free(str2); | 161 | free(str2); |
162 | } | 162 | } |
163 | return str; | 163 | return str; |
164 | -} | ||
165 | \ No newline at end of file | 164 | \ No newline at end of file |
165 | +} | ||
166 | + | ||
167 | +//check if exists | ||
168 | +//subscribe | ||
166 | \ No newline at end of file | 169 | \ No newline at end of file |