Commit c1dff015805a8c476d1573a2c653ef7a5c8fd1e9
1 parent
49514ec4
--no commit message
Showing
2 changed files
with
210 additions
and
10 deletions
Project/applications/smartcities/callbacks.c
... | ... | @@ -22,5 +22,38 @@ void dhcp_connect_result_cb(int result) |
22 | 22 | |
23 | 23 | void wifi_connect_result_cb(int result) |
24 | 24 | { |
25 | + if(result==WISMART_WIFI_CONN_TIMEOUT){ | |
26 | + timeout=1; | |
27 | + } | |
25 | 28 | printf("WiFi Connect indication: %s\r\n", (result == WISMART_WIFI_CONNECTED) ? "Connected": "Failed\r\n"); |
26 | -} | |
27 | 29 | \ No newline at end of file |
30 | +} | |
31 | + | |
32 | +void wismart_softap_clients_cb(wismart_softap_cb_t reason, const uint8_t *mac, const libwismart_ip_addr_t *ip) | |
33 | +{ | |
34 | + #define MAC2STR(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5] | |
35 | +#define MACSTR "%02x:%02x:%02x:%02x:%02x:%02x" | |
36 | + | |
37 | + switch(reason){ | |
38 | + case WISMART_WIFI_AP_CLIENT_CONNECTED: | |
39 | + printf("Client: "MACSTR" connected\r\n",MAC2STR(mac)); | |
40 | + break; | |
41 | + case WISMART_WIFI_AP_CLIENT_DISCONNECTED: | |
42 | + printf("Client: "MACSTR" disconnected\r\n",MAC2STR(mac)); | |
43 | + break; | |
44 | + case WISMART_WIFI_AP_CLIENT_EXPIRED: | |
45 | + printf("Client: "MACSTR" connection have expired\r\n",MAC2STR(mac)); | |
46 | + break; | |
47 | + case WISMART_WIFI_AP_CLIENT_GET_IP: | |
48 | + printf("Client: "MACSTR" got ip: %s\r\n", MAC2STR(mac), inet_ntoa(*ip)); | |
49 | + break; | |
50 | + } | |
51 | + | |
52 | +#undef MAC2STR | |
53 | +#undef MACSTR | |
54 | +} | |
55 | + | |
56 | +void wifi_connect_ap_result_cb(int result) | |
57 | +{ | |
58 | + | |
59 | + printf("New WiFi Network state: %s\r\n", (result == WISMART_WIFI_CONNECTED) ? "Created": "Failed\r\n"); | |
60 | +} | ... | ... |
Project/applications/smartcities/main.c
... | ... | @@ -11,7 +11,11 @@ |
11 | 11 | #define NETWORK_SSID "linksys" |
12 | 12 | #define NETWORK_KEY "" |
13 | 13 | #define WPA_USER "smartcities" |
14 | -#define WPA_PASS "superpass" | |
14 | +#define WPA_PASS "superpass" | |
15 | +#define ENCRYPT_MODE "WPA Enterprise" | |
16 | +#define NETWORK_SSID_AP "linksysAP" | |
17 | +#define NETWORK_KEY_AP NULL | |
18 | +#define NETWORK_CHANNEL_AP 1 | |
15 | 19 | |
16 | 20 | void initLibwismart(void) |
17 | 21 | { |
... | ... | @@ -19,12 +23,168 @@ void initLibwismart(void) |
19 | 23 | libwismart_Init(hwif); |
20 | 24 | } |
21 | 25 | |
26 | +uint8_t connected=0; | |
27 | +uint8_t timeout=0; | |
28 | +char ssid[32]; // ssid clave red usuario contrasenya tipicript | |
29 | +char net_key[13]; | |
30 | +char user[64]; | |
31 | +char password[64]; | |
32 | +char encrypt_type[64]; | |
33 | +//Declare the registers | |
34 | + | |
35 | + wismart_registryKey_t key_1; | |
36 | + wismart_registryKey_t key_2; | |
37 | + wismart_registryKey_t key_3; | |
38 | + wismart_registryKey_t key_4; | |
39 | + wismart_registryKey_t key_5; | |
40 | + | |
41 | +void init_registry(void){ | |
42 | + | |
43 | + uint32_t retval; | |
44 | + | |
45 | + /* | |
46 | + Inform registry module about the size of the variables we are going to work with. | |
47 | + | |
48 | + NOTE: A flash erase should be perfomed every time: | |
49 | + 1. The order with which these variables are created is changed | |
50 | + 2. The size of one or more varaibles is changed | |
51 | + */ | |
52 | + retval = libwismart_RegistryCreateKey(&key_1, 1, sizeof(ssid)); | |
53 | + if(retval != WISMART_SUCCESS){ | |
54 | + APP_DBG("libwismart_RegistryCreateKey(1) Failed!!\r\n"); | |
55 | + while(1); | |
56 | + } | |
57 | + | |
58 | + retval = libwismart_RegistryCreateKey(&key_2, 1, sizeof(net_key)); | |
59 | + if(retval != WISMART_SUCCESS){ | |
60 | + APP_DBG("libwismart_RegistryCreateKey(2) Failed!!\r\n"); | |
61 | + while(1); | |
62 | + } | |
63 | + | |
64 | + retval = libwismart_RegistryCreateKey(&key_3, 1, sizeof(user)); | |
65 | + if(retval != WISMART_SUCCESS){ | |
66 | + APP_DBG("libwismart_RegistryCreateKey(3) Failed!!\r\n"); | |
67 | + while(1); | |
68 | + } | |
69 | + | |
70 | + retval = libwismart_RegistryCreateKey(&key_4, 1, sizeof(password)); | |
71 | + if(retval != WISMART_SUCCESS){ | |
72 | + APP_DBG("libwismart_RegistryCreateKey(4) Failed!!\r\n"); | |
73 | + while(1); | |
74 | + } | |
75 | + | |
76 | + retval = libwismart_RegistryCreateKey(&key_5, 1, sizeof(encrypt_type)); | |
77 | + if(retval != WISMART_SUCCESS){ | |
78 | + APP_DBG("libwismart_RegistryCreateKey(5) Failed!!\r\n"); | |
79 | + while(1); | |
80 | + } | |
81 | + | |
82 | + /* | |
83 | + Open the registry file. Now we can perform get/set operations | |
84 | + */ | |
85 | + retval = libwismart_RegistryOpen(1); | |
86 | + if(retval != WISMART_SUCCESS){ | |
87 | + APP_DBG("libwismart_RegistryOpen() Failed!!\r\n"); | |
88 | + while(1); | |
89 | + } | |
90 | + | |
91 | + | |
92 | + if(libwismart_RegistryIsValueEmpty(®Var1Key)){ | |
93 | + | |
94 | + /* | |
95 | + Init and save registry variable.1 | |
96 | + */ | |
97 | + ssid=NETWORK_SSID; | |
98 | + libwismart_RegistrySet(&key_1,&ssid); | |
99 | + | |
100 | + /* | |
101 | + Init and save registry variable.2 | |
102 | + */ | |
103 | + user=WPA_USER; | |
104 | + libwismart_RegistrySet(&key_3, &user); | |
105 | + | |
106 | + /* | |
107 | + Init and save registry variable.3 | |
108 | + */ | |
109 | + password=WPA_PASS; | |
110 | + libwismart_RegistrySet(&key_4, &password); | |
111 | + | |
112 | + /* | |
113 | + Init and save registry variable.4 | |
114 | + */ | |
115 | + net_key=NETWORK_KEY; | |
116 | + libwismart_RegistrySet(&key_2, &net_key); | |
117 | + | |
118 | + /* | |
119 | + Init and save registry variable.4 | |
120 | + */ | |
121 | + encrypt_type=ENCRYPT_MODE; | |
122 | + libwismart_RegistrySet(&key_5, &encrypt_type); | |
123 | + } | |
124 | + else{ | |
125 | + | |
126 | + APP_DBG("------------------------------------------\r\n"); | |
127 | + APP_DBG("Registry values...\r\n"); | |
128 | + APP_DBG("------------------------------------------\r\n"); | |
129 | + | |
130 | + /* | |
131 | + Restore registry variable.1 | |
132 | + */ | |
133 | + retval = libwismart_RegistryGet(&key_1,&ssid); | |
134 | + if(retval != WISMART_SUCCESS){ | |
135 | + APP_DBG("libwismart_RegistryGet(1) Failed!!\r\n"); | |
136 | + while(1); | |
137 | + } | |
138 | + | |
139 | + /* | |
140 | + Restore registry variable.2 | |
141 | + */ | |
142 | + retval = libwismart_RegistryGet(&key_2,&net_key); | |
143 | + if(retval != WISMART_SUCCESS){ | |
144 | + APP_DBG("libwismart_RegistryGet(2) Failed!!\r\n"); | |
145 | + while(1); | |
146 | + } | |
147 | + | |
148 | + /* | |
149 | + Restore registry variable.3 | |
150 | + */ | |
151 | + retval = libwismart_RegistryGet(&key_3,&user); | |
152 | + if(retval != WISMART_SUCCESS){ | |
153 | + APP_DBG("libwismart_RegistryGet(3) Failed!!\r\n"); | |
154 | + while(1); | |
155 | + } | |
156 | + | |
157 | + retval = libwismart_RegistryGet(&key_4,&password); | |
158 | + if(retval != WISMART_SUCCESS){ | |
159 | + APP_DBG("libwismart_RegistryGet(4) Failed!!\r\n"); | |
160 | + while(1); | |
161 | + } | |
162 | + | |
163 | + retval = libwismart_RegistryGet(&key_5,&encrypt_type); | |
164 | + if(retval != WISMART_SUCCESS){ | |
165 | + APP_DBG("libwismart_RegistryGet(5) Failed!!\r\n"); | |
166 | + while(1); | |
167 | + } | |
168 | + | |
169 | + | |
170 | + /* | |
171 | + Print restored values: | |
172 | + */ | |
173 | + APP_DBG("SSID = %s\r\n",ssid); | |
174 | + APP_DBG("Net key = %s\r\n",net_key); | |
175 | + APP_DBG("User = %s\r\n",user); | |
176 | + APP_DBG("Password = %s\r\n",password); | |
177 | + APP_DBG("Encryption type = %s\r\n",encrypt_type); | |
178 | + } | |
179 | + | |
180 | + | |
181 | +} | |
182 | + | |
183 | + | |
184 | + | |
22 | 185 | int main(void) |
23 | 186 | { |
24 | - //if(libwismart_RegistryIsValueEmpty(wismart_registryKey_t* key)){ | |
25 | - | |
26 | - //} | |
27 | - //else { | |
187 | + | |
28 | 188 | uint32_t ind[4]={0}; |
29 | 189 | char** buffers[4]; |
30 | 190 | int sizes[4]={0}; |
... | ... | @@ -33,6 +193,7 @@ int main(void) |
33 | 193 | |
34 | 194 | buffers[i]=NULL; |
35 | 195 | } |
196 | + | |
36 | 197 | struct wpa_param wpa; |
37 | 198 | wpa.eap_method = WISMART_EAP_METHOD_TTLS; |
38 | 199 | wpa.u.ttls.identity=WPA_USER; |
... | ... | @@ -43,16 +204,22 @@ int main(void) |
43 | 204 | struct httpHeaders head301 = { get, "/", 1, "w3.org", 6 }; |
44 | 205 | struct httpHeaders head404 = { get, "/errorerrorerror", 15, "www.w3.org" }; |
45 | 206 | |
207 | + init_registry(); | |
46 | 208 | initLibwismart(); |
47 | 209 | libwismart_PowerSave_Enable(); |
48 | 210 | libwismart_PowerSave_HigherProfile(TRUE); |
49 | - | |
50 | 211 | libwismart_RegisterDhcpCB(dhcp_connect_result_cb); |
51 | - | |
52 | 212 | libwismart_WiFiInit(); |
53 | - //falta definir les variables de la xarxa | |
213 | + libwismart_SetScanRunsForConnTimeout(4); | |
54 | 214 | libwismart_WiFiConnectEnterprise(NETWORK_SSID, &wpa, wifi_connect_result_cb); |
55 | 215 | |
216 | + | |
217 | + if(timout==1){ | |
218 | + | |
219 | + //corroborar los parametros del AP | |
220 | + libwismart_WiFi_SoftAP_Start(NETWORK_SSID_AP,NETWORK_CHANNEL_AP,(unsigned char*)NETWORK_KEY_AP,wifi_connect_ap_result_cb, wismart_softap_clients_cb); | |
221 | + } | |
222 | + | |
56 | 223 | //int httpRequest(struct httpHeaders head, char* content, int content_size) |
57 | 224 | //chThdSleepMilliseconds(5000); |
58 | 225 | |
... | ... | @@ -91,5 +258,5 @@ int main(void) |
91 | 258 | |
92 | 259 | chThdSleepMilliseconds(500); |
93 | 260 | } |
94 | - //} | |
261 | + | |
95 | 262 | } | ... | ... |