Skip to content

Commit e0435ba

Browse files
authored
Merge pull request #84 from sandeepmistry/get-time
Add WiFi.getTime() to retrieve system time from WINC
2 parents 735124b + 243ecd7 commit e0435ba

File tree

3 files changed

+47
-0
lines changed

3 files changed

+47
-0
lines changed

keywords.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ encryptionType KEYWORD2
4040
getResult KEYWORD2
4141
getSocket KEYWORD2
4242
poll KEYWORD2
43+
getTime KEYWORD2
4344
WiFiClient KEYWORD2
4445
WiFiServer KEYWORD2
4546
WiFiSSLClient KEYWORD2

src/WiFi.cpp

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
1818
*/
1919

20+
#include <time.h>
21+
2022
#include "WiFi101.h"
2123

2224
extern "C" {
@@ -160,6 +162,16 @@ static void wifi_cb(uint8_t u8MsgType, void *pvMsg)
160162
}
161163
break;
162164

165+
case M2M_WIFI_RESP_GET_SYS_TIME:
166+
{
167+
if (WiFi._resolve != 0) {
168+
memcpy((tstrSystemTime *)WiFi._resolve, pvMsg, sizeof(tstrSystemTime));
169+
}
170+
171+
WiFi._resolve = 0;
172+
}
173+
break;
174+
163175
default:
164176
break;
165177
}
@@ -891,4 +903,36 @@ int WiFiClass::ping(IPAddress host, uint8_t ttl)
891903
}
892904
}
893905

906+
uint32_t WiFiClass::getTime()
907+
{
908+
tstrSystemTime systemTime;
909+
910+
_resolve = (uint32_t)&systemTime;
911+
912+
m2m_wifi_get_sytem_time();
913+
914+
unsigned long start = millis();
915+
while (_resolve != 0 && millis() - start < 5000) {
916+
m2m_wifi_handle_events(NULL);
917+
}
918+
919+
if (_resolve == 0) {
920+
struct tm tm;
921+
922+
tm.tm_year = systemTime.u16Year - 1900;
923+
tm.tm_mon = systemTime.u8Month - 1;
924+
tm.tm_mday = systemTime.u8Day;
925+
tm.tm_hour = systemTime.u8Hour;
926+
tm.tm_min = systemTime.u8Minute;
927+
tm.tm_sec = systemTime.u8Second;
928+
tm.tm_isdst = -1;
929+
930+
_resolve = mktime(&tm);
931+
} else {
932+
_resolve = (uint32_t)-1;
933+
}
934+
935+
return _resolve;
936+
}
937+
894938
WiFiClass WiFi;

src/WiFi101.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,8 @@ class WiFiClass
156156
int ping(const String &hostname, uint8_t ttl = 128);
157157
int ping(IPAddress host, uint8_t ttl = 128);
158158

159+
unsigned long getTime();
160+
159161
void refresh(void);
160162

161163
void lowPowerMode(void);

0 commit comments

Comments
 (0)