Просмотр исходного кода

Merge remote-tracking branch 'origin/master' into NTP_syncing

Aareschluchtje 9 лет назад
Родитель
Сommit
f8fff81cce
5 измененных файлов с 58 добавлено и 62 удалено
  1. 10 6
      displayHandler.c
  2. 1 1
      jsmn.c
  3. 28 31
      main.c
  4. 18 24
      network.c
  5. 1 0
      network.h

+ 10 - 6
displayHandler.c

@@ -13,6 +13,7 @@
 #include "log.h"
 #include "rtc.h"
 #include "alarm.h"
+#include "network.h"
 
 #define MONTH_OFFSET 1
 #define YEAR_OFFSET 1900
@@ -35,20 +36,23 @@ void displayTime(int line_number){
     }
 }
 
-void displayDate(int line_number){
+void displayDate(int line_number) {
     tm *time;
     X12RtcGetClock(time);
 
     char str[13];
 
-    if (NtpTimeIsValid()){
-        sprintf(str, "   %02d-%02d-%04d   ", time->tm_mday, time->tm_mon+MONTH_OFFSET, time->tm_year+YEAR_OFFSET);
-    }else {
+    if (NtpTimeIsValid()) {
+        sprintf(str, "   %02d-%02d-%04d   ", time->tm_mday, time->tm_mon + MONTH_OFFSET, time->tm_year + YEAR_OFFSET);
+    } else {
         sprintf(str, "   ??-??-????   ");
     }
 
-    if(NtpIsSyncing())
-        str[1] = 'S';
+    if (NtpIsSyncing()) {
+       str[1] = 'S';
+    }else if(NetworkIsReceiving()){
+        str[1] = 'N';
+    }
 
     if (line_number > -1 && line_number < 2){
         (*write_display_ptr[line_number])(str, 13);

+ 1 - 1
jsmn.c

@@ -324,7 +324,7 @@ int jsoneq(const char *json, jsmntok_t *tok, const char *s) {
  * Get the value of the token in a integer format.
  */
 int getIntegerToken(const char *json, jsmntok_t *tok){
-	char s[ (tok->end - tok->start) + 1 ];
+	char s[ ((tok->end - tok->start) + 1) ];
 	sprintf(s, "%.*s", tok->end - tok->start, json + tok->start);
 	return atoi(s);
 }

+ 28 - 31
main.c

@@ -269,37 +269,34 @@ int main(void)
 
     for (;;)
     {
-            //Check if a button is pressed
-            if (checkOffPressed() == 1){
-                start = time(0);
-                running = 1;
-                LcdBacklightKnipperen(startLCD);
-            }
-
-            //Check if background LED is on, and compare to timer
-            if (running == 1){
-                if (timer(start) >= 10){
-                    running = 0;
-                    LcdBackLight(LCD_BACKLIGHT_OFF);
-                }
-            }
-
-
-            if(!isAlarmSyncing)
-            {
-                if(X12RtcGetStatus(5) > 0) {
-                    displayAlarm(0, 1);
-                    if (KbScan() < -1 || checkTime() == 1) {
-                        handleAlarm();
-                        LcdBackLight(LCD_BACKLIGHT_OFF);
-                    }
-                }
-            }
-            else {
-                displayTime(0);
-                displayDate(1);
-            }
-            WatchDogRestart();
+		//Check if a button is pressed
+		if (checkOffPressed() == 1){
+			start = time(0);
+			running = 1;
+            LcdBacklightKnipperen(startLCD);
+		}
+
+		//Check if background LED is on, and compare to timer
+		if (running == 1){
+			if (timer(start) >= 10){
+				running = 0;
+				LcdBackLight(LCD_BACKLIGHT_OFF);
+			}
+		}
+
+        if(!isAlarmSyncing && X12RtcGetStatus(5) > 0)
+        {
+			displayAlarm(0,1);
+			if (KbScan() < -1 || checkTime() == 1){
+				handleAlarm();
+				LcdBackLight(LCD_BACKLIGHT_OFF);
+			}
+        }
+        else {
+            displayTime(0);
+            displayDate(1);
+        }
+        WatchDogRestart();
     }
 
     return(0);

+ 18 - 24
network.c

@@ -25,6 +25,8 @@
 #include "rtc.h"
 #include "alarm.h"
 
+bool isReceiving;
+
 void NetworkInit() {
     /* Register de internet controller. */
     if (NutRegisterDevice(&DEV_ETHER, 0, 0)) {
@@ -38,6 +40,7 @@ void NetworkInit() {
 }
 
 char* httpGet(char address[]){
+    isReceiving = true;
     NutDelay(1000);
     printf("\n\n #-- HTTP get -- #\n");
 
@@ -87,6 +90,7 @@ char* httpGet(char address[]){
     }
     content[t] = '\0';
     printf("\nContent size: %d, Content: %s \n", t, content);
+    isReceiving = false;
     return content;
 }
 
@@ -117,43 +121,33 @@ void parseAlarmJson(char* content){
 
     for (i = 1; i < r; i++) {
         if (jsoneq(content, &token[i], "YYYY") == 0) {
-            char yyyy[4];
-            sprintf(yyyy, "%.*s", token[i+1].end-token[i+1].start, content + token[i+1].start);
-            printf("Tijd jaar: %s\n", yyyy);
-            time.tm_mon= atoi(yyyy) - 1900;    //only use when 100% sure input is an integer
+            time.tm_year= getIntegerToken(content, &token[i + 1]) - 1900;
             i++;
         }else if (jsoneq(content, &token[i], "MM") == 0) {
-            char mm[2];
-            sprintf(mm, "%.*s", token[i+1].end-token[i+1].start, content + token[i+1].start);
-            printf("Tijd maand: %s\n", mm);
-            time.tm_mon= atoi(mm) - 1;    //only use when 100% sure input is an integer
+            time.tm_mon=  getIntegerToken(content, &token[i + 1]) - 1;
             i++;
         }else if (jsoneq(content, &token[i], "DD") == 0) {
-            char dd[2];
-            sprintf(dd, "%.*s", token[i + 1].end - token[i + 1].start, content + token[i + 1].start);
-            printf("Tijd dagen: %s\n", dd);
-            time.tm_mday = atoi(dd);     //only use when 100% sure input is an integer
+            time.tm_mday =  getIntegerToken(content, &token[i + 1]);
             i++;
         }else if (jsoneq(content, &token[i], "hh") == 0) {
-            char hh[2];
-            sprintf(hh, "%.*s", token[i+1].end-token[i+1].start, content + token[i+1].start);
-            printf("Tijd uren: %s\n", hh);
-            time.tm_hour = atoi(hh);    //only use when 100% sure input is an integer
+            time.tm_hour = 	getIntegerToken(content, &token[i + 1]);
             i++;
         }else if (jsoneq(content, &token[i], "mm") == 0) {
-            char mm[2];
-            sprintf(mm, "%.*s", token[i+1].end-token[i+1].start, content + token[i+1].start);
-            printf("Tijd minuten: %s\n", mm);
-            time.tm_min = atoi(mm);    //only use when 100% sure input is an integer
+            time.tm_min = getIntegerToken(content, &token[i + 1]);
             i++;
         }else if (jsoneq(content, &token[i], "ss") == 0) {
-            char ss[2];
-            sprintf(ss, "%.*s", token[i + 1].end - token[i + 1].start, content + token[i + 1].start);
-            printf("Tijd seconden: %s\n", ss);
-            time.tm_sec = atoi(ss);     //only use when 100% sure input is an integer
+            time.tm_sec = getIntegerToken(content, &token[i + 1]);
             i++;
         }
     }
+
+    printf("Alarm time is: %02d:%02d:%02d\n", time.tm_hour, time.tm_min, time.tm_sec);
+    printf("Alarm date is: %02d.%02d.%02d\n\n", time.tm_mday, (time.tm_mon + 1), (time.tm_year + 1900));
+
     X12RtcSetAlarm(0,&time,0b11111111);
     NutDelay(1000);
+}
+
+bool NetworkIsReceiving(void){
+    return isReceiving;
 }

+ 1 - 0
network.h

@@ -5,6 +5,7 @@
 #ifndef _Network_H
 #define _Network_H
 
+
 extern void NetworkInit(void);
 char* httpGet(char address[]);
 void parseAlarmJson(char* content);