Commit 672f41a6d8008288a8b81cde68a54d2b4be331e6
1 parent
c23a8c45
--no commit message
Showing
3 changed files
with
124 additions
and
114 deletions
Project/applications/smartcities/include/timer-loop.h
@@ -7,8 +7,8 @@ | @@ -7,8 +7,8 @@ | ||
7 | #define LONG_PERIOD HALF_HOUR //60*3 // for testing | 7 | #define LONG_PERIOD HALF_HOUR //60*3 // for testing |
8 | #define SHORT_PERIOD FIVE_MIN //60*1 // for testing | 8 | #define SHORT_PERIOD FIVE_MIN //60*1 // for testing |
9 | 9 | ||
10 | -unsigned int getSystemTime(); | 10 | +unsigned long getSystemTime(); |
11 | 11 | ||
12 | -unsigned int getElapsedTime(unsigned int t); | 12 | +unsigned long getElapsedTime(unsigned long t); |
13 | 13 | ||
14 | -void sleep_thread(unsigned int seconds); | ||
15 | \ No newline at end of file | 14 | \ No newline at end of file |
15 | +void sleep_thread(unsigned long seconds); | ||
16 | \ No newline at end of file | 16 | \ No newline at end of file |
Project/applications/smartcities/test_timer-loop.c
0 → 100644
1 | +#include <stdio.h> | ||
2 | +#include "timer-loop.h" | ||
3 | + | ||
4 | +/* Funcions que simulen comportament real */ | ||
5 | +void testf(unsigned int delay, const char* premesg, const char* postmesg) | ||
6 | +{ | ||
7 | + printf("%s\r\n",premesg); | ||
8 | + sleep_thread(delay); | ||
9 | + printf("%s\r\n",postmesg); | ||
10 | +} | ||
11 | +unsigned int getNTPTime() | ||
12 | +{ | ||
13 | + testf(1,"Asking for NTP time...", "NTP time received"); | ||
14 | + return getSystemTime(); | ||
15 | +} | ||
16 | +void collect_data() | ||
17 | +{ | ||
18 | + testf(5, "Collecting data...", "Data collected"); | ||
19 | +} | ||
20 | +void store_data() | ||
21 | +{ | ||
22 | + testf(1, "Storing data...", "Data stored"); | ||
23 | +} | ||
24 | +void wifi_connect() | ||
25 | +{ | ||
26 | + testf(7, "Connecting via Wi-Fi...", "Wi-Fi connected"); | ||
27 | +} | ||
28 | + | ||
29 | +/* Main de testing */ | ||
30 | +void main(void) | ||
31 | +{ | ||
32 | + // Init wismart | ||
33 | + initLibwismart(); | ||
34 | + libwismart_PowerSave_Enable(); | ||
35 | + libwismart_PowerSave_HigherProfile(TRUE); | ||
36 | + | ||
37 | + // Code | ||
38 | + | ||
39 | + int i = 1; | ||
40 | + printf(",----------------.\r\n"); | ||
41 | + printf("| TIME LOOP TEST |\r\n"); | ||
42 | + printf("'----------------'\r\n\r\n"); | ||
43 | + | ||
44 | + printf("--------\r\n"); | ||
45 | + printf("Loop #0\r\n\r\n"); | ||
46 | + | ||
47 | + unsigned int time = getNTPTime(); | ||
48 | + unsigned int timestamp = 0; | ||
49 | + unsigned int delay = getSystemTime(); | ||
50 | + unsigned int delay2 = 0; | ||
51 | + sleep_thread(SHORT_PERIOD - time%SHORT_PERIOD); | ||
52 | + | ||
53 | + //int* a_rawData; | ||
54 | + //char* a_cookedData; | ||
55 | + | ||
56 | + while(1) | ||
57 | + { | ||
58 | + printf("\r\n\r\n--------\r\n"); | ||
59 | + printf("Loop #%i\r\n\r\n",i); | ||
60 | + | ||
61 | + time += getElapsedTime(delay); | ||
62 | + 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); | ||
63 | + | ||
64 | + delay = getSystemTime(); | ||
65 | + /* Collect data from sensors */ | ||
66 | + collect_data(/*a_rawData*/); | ||
67 | + time += getElapsedTime(delay); | ||
68 | + 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); | ||
69 | + | ||
70 | + delay = getSystemTime(); | ||
71 | + if (i == LONG_PERIOD/SHORT_PERIOD ) | ||
72 | + { | ||
73 | + /* Wi-Fi connect */ | ||
74 | + wifi_connect(); | ||
75 | + /* Send data to server, empty the buffer */ | ||
76 | + time = getNTPTime(); | ||
77 | + 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); | ||
78 | + i = 0; | ||
79 | + } | ||
80 | + delay2 = getElapsedTime(delay); | ||
81 | + | ||
82 | + delay = getSystemTime(); | ||
83 | + timestamp = time - delay2; | ||
84 | + 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); | ||
85 | + | ||
86 | + /* Add data to the buffer with timestamp*/ | ||
87 | + //a_cookedData = format_data(a_rawData, timestamp); | ||
88 | + store_data(/* data */); | ||
89 | + | ||
90 | + time += getElapsedTime(delay); | ||
91 | + 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); | ||
92 | + | ||
93 | + delay = getSystemTime(); | ||
94 | + sleep_thread(SHORT_PERIOD - time%SHORT_PERIOD); | ||
95 | + i++; | ||
96 | + } | ||
97 | +} | ||
0 | \ No newline at end of file | 98 | \ No newline at end of file |
Project/applications/smartcities/timer-loop.c
@@ -8,118 +8,31 @@ void initLibwismart(void) | @@ -8,118 +8,31 @@ void initLibwismart(void) | ||
8 | libwismart_Init(hwif); | 8 | libwismart_Init(hwif); |
9 | } | 9 | } |
10 | 10 | ||
11 | -/************************************************** | ||
12 | - * NTP el primer cop. | ||
13 | - * Mostres síncrones amb els altres nodes. | ||
14 | - * NTP i enviament de mostres | ||
15 | - * cada mitja hora asíncrona amb els altres nodes. | ||
16 | - **************************************************/ | 11 | +/*************************************************** |
12 | + ** CATALAN **************************************** | ||
13 | + * Agafem el temps des de l'NTP el primer cop. * | ||
14 | + * Mostres síncrones amb els altres nodes modsense * | ||
15 | + * Cada mitja hora (long period) asíncrona amb els * | ||
16 | + * altres nodes, NTP i enviament de mostres. * | ||
17 | + ** ENGLISH **************************************** | ||
18 | + * Get NTP time the first time. * | ||
19 | + * Values sync'd with other modularsense nodes * | ||
20 | + * Every half an hour (long period), async'd to * | ||
21 | + * other nodes, get NTP and send all data. * | ||
22 | + ***************************************************/ | ||
23 | +/* | ||
24 | + * unsigned int representa: | ||
25 | + * - segons: 2^32 -1 = 4.294.967.295 segons // 136.1 average Gregorian years | ||
26 | + * - milisegons:ans/1000 = 4.294.967,295 segons // 49 days 17 hours 2 minutes 47.3 seconds | ||
27 | + */ | ||
28 | +unsigned long getSystemTime() | ||
29 | +{ return (long)libwismart_GetTime()/1000; } | ||
17 | 30 | ||
18 | -unsigned int getSystemTime() | ||
19 | -{ | ||
20 | - return libwismart_GetTime()/1000; | ||
21 | -} | ||
22 | -unsigned int getElapsedTime(unsigned int t) | ||
23 | -{ | ||
24 | - return libwismart_ElapsedTime(t*1000)/1000; | ||
25 | -} | ||
26 | -void sleep_thread(unsigned int seconds) | ||
27 | -{ | ||
28 | - chThdSleepMilliseconds(seconds*1000); | ||
29 | - //sleep(seconds); | ||
30 | -} | 31 | +unsigned long getElapsedTime(unsigned long t) |
32 | +{ return (long)libwismart_ElapsedTime(t*1000)/1000; } | ||
31 | 33 | ||
32 | -/* Funcions que simulen comportament real */ | ||
33 | -void testf(unsigned int delay, const char* premesg, const char* postmesg) | ||
34 | -{ | ||
35 | - printf("%s\r\n",premesg); | ||
36 | - sleep_thread(delay); | ||
37 | - printf("%s\r\n",postmesg); | ||
38 | -} | ||
39 | -unsigned int getNTPTime() | ||
40 | -{ | ||
41 | - testf(1,"Asking for NTP time...", "NTP time received"); | ||
42 | - return getSystemTime(); | ||
43 | -} | ||
44 | -void collect_data() | 34 | +void sleep_thread(unsigned long seconds) |
45 | { | 35 | { |
46 | - testf(5, "Collecting data...", "Data collected"); | ||
47 | -} | ||
48 | -void store_data() | ||
49 | -{ | ||
50 | - testf(1, "Storing data...", "Data stored"); | ||
51 | -} | ||
52 | -void wifi_connect() | ||
53 | -{ | ||
54 | - testf(7, "Connecting via Wi-Fi...", "Wi-Fi connected"); | ||
55 | -} | ||
56 | - | ||
57 | -void main(void) | ||
58 | -{ | ||
59 | - | ||
60 | - // Init wismart | ||
61 | - initLibwismart(); | ||
62 | - libwismart_PowerSave_Enable(); | ||
63 | - libwismart_PowerSave_HigherProfile(TRUE); | ||
64 | - | ||
65 | - // Code | ||
66 | - | ||
67 | - int i = 1; | ||
68 | - printf(",----------------.\r\n"); | ||
69 | - printf("| TIME LOOP TEST |\r\n"); | ||
70 | - printf("'----------------'\r\n\r\n"); | ||
71 | - | ||
72 | - printf("--------\r\n"); | ||
73 | - printf("Loop #0\r\n\r\n"); | ||
74 | - | ||
75 | - unsigned int time = getNTPTime(); | ||
76 | - unsigned int timestamp = 0; | ||
77 | - unsigned int delay = getSystemTime(); | ||
78 | - unsigned int delay2 = 0; | ||
79 | - sleep_thread(SHORT_PERIOD - time%SHORT_PERIOD); | ||
80 | - | ||
81 | - //int* a_rawData; | ||
82 | - //char* a_cookedData; | ||
83 | - | ||
84 | - while(1) | ||
85 | - { | ||
86 | - printf("\r\n\r\n--------\r\n"); | ||
87 | - printf("Loop #%i\r\n\r\n",i); | ||
88 | - | ||
89 | - time += getElapsedTime(delay); | ||
90 | - 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); | ||
91 | - | ||
92 | - delay = getSystemTime(); | ||
93 | - /* Collect data from sensors */ | ||
94 | - collect_data(/*a_rawData*/); | ||
95 | - time += getElapsedTime(delay); | ||
96 | - 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); | ||
97 | - | ||
98 | - delay = getSystemTime(); | ||
99 | - if (i == LONG_PERIOD/SHORT_PERIOD ) | ||
100 | - { | ||
101 | - /* Wi-Fi connect */ | ||
102 | - wifi_connect(); | ||
103 | - /* Send data to server, empty the buffer */ | ||
104 | - time = getNTPTime(); | ||
105 | - 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); | ||
106 | - i = 0; | ||
107 | - } | ||
108 | - delay2 = getElapsedTime(delay); | ||
109 | - | ||
110 | - delay = getSystemTime(); | ||
111 | - timestamp = time - delay2; | ||
112 | - 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); | ||
113 | - | ||
114 | - /* Add data to the buffer with timestamp*/ | ||
115 | - //a_cookedData = format_data(a_rawData, timestamp); | ||
116 | - store_data(/* data */); | ||
117 | - | ||
118 | - time += getElapsedTime(delay); | ||
119 | - 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); | ||
120 | - | ||
121 | - delay = getSystemTime(); | ||
122 | - sleep_thread(SHORT_PERIOD - time%SHORT_PERIOD); | ||
123 | - i++; | ||
124 | - } | 36 | + chThdSleepMilliseconds( (unsigned int)seconds*1000 ); |
37 | + //sleep(seconds); //for testing in linux machine | ||
125 | } | 38 | } |
126 | \ No newline at end of file | 39 | \ No newline at end of file |