Commit 34d2e1092f55f02dcb7636e045ae6483ae3bb1cd
1 parent
34b0e052
--no commit message
Showing
2 changed files
with
162 additions
and
0 deletions
Project/applications/smartcities/Makefile-timer
0 → 100644
1 | + | |
2 | +# | |
3 | +# WiSmart Applications Makefile | |
4 | +# | |
5 | +# Copyright 2012 eConais S.A | |
6 | +# | |
7 | + | |
8 | + | |
9 | +# Set the sdk root folder | |
10 | +SDK_ROOT = ../../ | |
11 | +PROJECT_OUT = timer-loop | |
12 | + | |
13 | +USER_SRC = timer-loop.c | |
14 | +USER_INCDIR = include/ | |
15 | + | |
16 | +# if you need to add build Defines options add to USER_DEFS define | |
17 | +#USER_DEFS += -D | |
18 | + | |
19 | +# select SDK's version: | |
20 | +SDK_VERSION = SDK_REV_9_2 | |
21 | + | |
22 | +# select the MCU type e.g. STM32F1, STM32F4 | |
23 | +PLAT = STM32F1 | |
24 | + | |
25 | +# select the MCU flash/ram size e.g. MCU_386K_64K, MCU_768K_96K, MCU_1M_96K | |
26 | +MCU_SIZE = MCU_768K_96K | |
27 | + | |
28 | +USER_DEFS += -D$(SDK_VERSION) | |
29 | + | |
30 | +# this must be the last include | |
31 | +include $(SDK_ROOT)/applications/rules.mk | |
32 | + | ... | ... |
Project/applications/smartcities/timer-loop.c
0 → 100644
1 | +#include "libwismart.h" | |
2 | +#include "libwismart_irqs.h" | |
3 | +#include "lwip/inet.h" | |
4 | + | |
5 | +#define HALF_HOUR 60*3 | |
6 | +#define FIVE_MIN 60*1 | |
7 | +#define LONG_PERIOD HALF_HOUR | |
8 | +#define SHORT_PERIOD FIVE_MIN | |
9 | + | |
10 | +void initLibwismart(void) | |
11 | +{ | |
12 | + wismart_hwif_t hwif = libwismart_GetDefaultHWIF(); | |
13 | + libwismart_Init(hwif); | |
14 | +} | |
15 | + | |
16 | +/************************************************** | |
17 | + * NTP el primer cop. | |
18 | + * Mostres síncrones amb els altres nodes. | |
19 | + * NTP i enviament de mostres | |
20 | + * cada mitja hora asíncrona amb els altres nodes. | |
21 | + **************************************************/ | |
22 | + | |
23 | +unsigned int getSystemTime() | |
24 | +{ | |
25 | + return libwismart_GetTime()/1000; | |
26 | +} | |
27 | +unsigned int getElapsedTime(unsigned int t) | |
28 | +{ | |
29 | + return libwismart_ElapsedTime(t*1000)/1000; | |
30 | +} | |
31 | +void sleep_thread(unsigned int seconds) | |
32 | +{ | |
33 | + chThdSleepMilliseconds(seconds*1000); | |
34 | + //sleep(seconds); | |
35 | +} | |
36 | + | |
37 | +/* Funcions que simulen comportament real */ | |
38 | +void testf(unsigned int delay, const char* premesg, const char* postmesg) | |
39 | +{ | |
40 | + printf("%s\r\n",premesg); | |
41 | + sleep_thread(delay); | |
42 | + printf("%s\r\n",postmesg); | |
43 | +} | |
44 | +unsigned int getNTPTime() | |
45 | +{ | |
46 | + testf(1,"Asking for NTP time...", "NTP time received"); | |
47 | + return getSystemTime(); | |
48 | +} | |
49 | +void collect_data() | |
50 | +{ | |
51 | + testf(5, "Collecting data...", "Data collected"); | |
52 | +} | |
53 | +void store_data() | |
54 | +{ | |
55 | + testf(1, "Storing data...", "Data stored"); | |
56 | +} | |
57 | +void wifi_connect() | |
58 | +{ | |
59 | + testf(7, "Connecting via Wi-Fi...", "Wi-Fi connected"); | |
60 | +} | |
61 | + | |
62 | +void main(void) | |
63 | +{ | |
64 | + | |
65 | + // Init wismart | |
66 | + initLibwismart(); | |
67 | + libwismart_PowerSave_Enable(); | |
68 | + libwismart_PowerSave_HigherProfile(TRUE); | |
69 | + | |
70 | + // Code | |
71 | + | |
72 | + int i = 0; | |
73 | + printf(",----------------.\r\n"); | |
74 | + printf("| TIME LOOP TEST |\r\n"); | |
75 | + printf("'----------------'\r\n\r\n"); | |
76 | + | |
77 | + printf("--------\r\n"); | |
78 | + printf("Loop #-1\r\n\r\n"); | |
79 | + | |
80 | + unsigned int time = getNTPTime(); | |
81 | + unsigned int timestamp = 0; | |
82 | + unsigned int delay = getSystemTime(); | |
83 | + unsigned int delay2 = 0; | |
84 | + sleep_thread(SHORT_PERIOD - time%SHORT_PERIOD); | |
85 | + | |
86 | + //int* a_rawData; | |
87 | + //char* a_cookedData; | |
88 | + | |
89 | + while(1) | |
90 | + { | |
91 | + printf("\r\n\r\n--------\r\n"); | |
92 | + printf("Loop #%i\r\n\r\n",i); | |
93 | + | |
94 | + time += getElapsedTime(delay); | |
95 | + 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); | |
96 | + | |
97 | + delay = getSystemTime(); | |
98 | + /* Collect data from sensors */ | |
99 | + collect_data(/*a_rawData*/); | |
100 | + time += getElapsedTime(delay); | |
101 | + 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); | |
102 | + | |
103 | + delay = getSystemTime(); | |
104 | + if (i == LONG_PERIOD/SHORT_PERIOD ) | |
105 | + { | |
106 | + /* Wi-Fi connect */ | |
107 | + wifi_connect(); | |
108 | + /* Send data to server, empty the buffer */ | |
109 | + time = getNTPTime(); | |
110 | + 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); | |
111 | + i = 0; | |
112 | + } | |
113 | + delay2 = getElapsedTime(delay); | |
114 | + | |
115 | + delay = getSystemTime(); | |
116 | + timestamp = time - delay2; | |
117 | + 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); | |
118 | + | |
119 | + /* Add data to the buffer with timestamp*/ | |
120 | + //a_cookedData = format_data(a_rawData, timestamp); | |
121 | + store_data(/* data */); | |
122 | + | |
123 | + time += getElapsedTime(delay); | |
124 | + 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); | |
125 | + | |
126 | + delay = getSystemTime(); | |
127 | + sleep_thread(SHORT_PERIOD - time%SHORT_PERIOD); | |
128 | + i++; | |
129 | + } | |
130 | +} | |
0 | 131 | \ No newline at end of file | ... | ... |