Pārlūkot izejas kodu

Extracted timewriting from the main.c-file.

Creative use of function pointers!
Jordy Sipkema 9 gadi atpakaļ
vecāks
revīzija
51932bbb07
6 mainītis faili ar 56 papildinājumiem un 46 dzēšanām
  1. 38 0
      displayHandler.c
  2. 3 0
      displayHandler.h
  3. 1 0
      log.c
  4. 1 0
      log.h
  5. 5 39
      main.c
  6. 8 7
      ntp.c

+ 38 - 0
displayHandler.c

@@ -2,4 +2,42 @@
 // Created by Jordy Sipkema on 26/02/16.
 //
 
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+#include "display.h"
 #include "displayHandler.h"
+#include "rtc.h"
+
+#define MONTH_OFFSET 1
+#define YEAR_OFFSET 1900
+
+void (*write_display_ptr[2])(char*, int) = {LcdArrayLineOne, LcdArrayLineTwo};
+
+void displayTime(int line_number){
+    tm time;
+    X12RtcGetClock(&time);
+
+    char str[12];
+    sprintf(str, "    %02d:%02d:%02d", time.tm_hour, time.tm_min, time.tm_sec);
+
+    if (line_number > -1 && line_number < 2){
+        (*write_display_ptr[line_number])(str, 12);
+    }
+}
+
+void displayDate(int line_number){
+    tm *time;
+    X12RtcGetClock(time);
+
+    char str[13];
+    sprintf(str, "   %02d-%02d-%04d", time->tm_mday, time->tm_mon+MONTH_OFFSET, time->tm_year+YEAR_OFFSET);
+
+    if (line_number > -1 && line_number < 2){
+        (*write_display_ptr[line_number])(str, 13);
+    }
+}
+
+
+

+ 3 - 0
displayHandler.h

@@ -5,4 +5,7 @@
 #ifndef MUTLI_OS_BUILD_DISPLAYHANDLER_H
 #define MUTLI_OS_BUILD_DISPLAYHANDLER_H
 
+void displayTime(int);
+void displayDate(int);
+
 #endif //MUTLI_OS_BUILD_DISPLAYHANDLER_H

+ 1 - 0
log.c

@@ -133,6 +133,7 @@ static PGM_P LogPrefixName_P(TLogLevel tLevel)
         case LOG_MENU_MODULE         :return(PSTR("ME: "));
         case LOG_MMC_MODULE          :return(PSTR("MM: "));
         case LOG_MMCDRV_MODULE       :return(PSTR("MD: "));
+        case LOG_NTP_MODULE          :return(PSTR("NT: "));
         case LOG_PARSE_MODULE        :return(PSTR("PA: "));
         case LOG_PLAYER_MODULE       :return(PSTR("PL: "));
         case LOG_REMCON_MODULE       :return(PSTR("RC: "));

+ 1 - 0
log.h

@@ -81,6 +81,7 @@ typedef u_char TLogLevel;
 #define LOG_MENU_MODULE         0xD0
 #define LOG_MMC_MODULE          0xE0
 #define LOG_MMCDRV_MODULE       0xF0
+#define LOG_NTP_MODULE          0xF8
 #define LOG_PARSE_MODULE        0x08
 #define LOG_PLAYER_MODULE       0x18
 #define LOG_REMCON_MODULE       0x28

+ 5 - 39
main.c

@@ -12,9 +12,6 @@
  *  COPYRIGHT (C) STREAMIT BV 2010
  *  \date 19 december 2003
  */
- 
- 
- 
 
 #define LOG_MODULE  LOG_MAIN_MODULE
 
@@ -29,6 +26,7 @@
 #include <sys/version.h>
 #include <dev/irqreg.h>
 
+#include "displayHandler.h"
 #include "system.h"
 #include "portio.h"
 #include "display.h"
@@ -48,9 +46,6 @@
 #include "rtc.h"
 #include "ntp.h"
 
-#define MONTH_OFFSET 1
-#define YEAR_OFFSET 1900
-
 
 /*-------------------------------------------------------------------------*/
 /* global variable definitions                                             */
@@ -196,22 +191,6 @@ static void SysControlMainBeat(u_char OnOff)
     }
 }
 
-void displayDate(){
-	struct _tm gmt;
-	gmt = GetRTCTime();
-	char str[13];
-	sprintf(str, "   %02d-%02d-%04d", gmt.tm_mday, gmt.tm_mon+MONTH_OFFSET, gmt.tm_year+YEAR_OFFSET);
-	LcdArrayLineOne(str,13);
-}
-
-void displayTime(){
-	struct _tm gmt;
-	gmt = GetRTCTime();
-	char str[12];
-	sprintf(str, "    %02d:%02d:%02d", gmt.tm_hour, gmt.tm_min, gmt.tm_sec);
-	LcdArrayLineTwo(str,12);
-}
-
 int timer(time_t start){
 	time_t diff = time(0) - start;
 	return diff;
@@ -242,16 +221,7 @@ int main(void)
 {
 	time_t start;
 	int running = 0;
-	/* 
-	 * Kroeske: time struct uit nut/os time.h (http://www.ethernut.de/api/time_8h-source.html)
-	 *
-	 */
-	struct _tm gmt;
-	
-	/*
-	 * Kroeske: Ook kan 'struct _tm gmt' Zie bovenstaande link
-	 */
-	
+
     /*
      *  First disable the watchdog
      */
@@ -283,11 +253,6 @@ int main(void)
 	 * Kroeske: sources in rtc.c en rtc.h
 	 */
 
-	gmt = GetRTCTime();
-	LogMsg_P(LOG_INFO, PSTR("RTC time [%02d:%02d:%02d]"), gmt.tm_hour, gmt.tm_min, gmt.tm_sec );
-	
-
-
     if (At45dbInit()==AT45DB041B)
     {
         // ......
@@ -324,8 +289,9 @@ int main(void)
 				LcdBackLight(LCD_BACKLIGHT_OFF);
 			}
 		}
-		displayTime();
-		displayDate();
+
+        displayDate(0);
+		displayTime(1);
 		
         WatchDogRestart();
     }

+ 8 - 7
ntp.c

@@ -17,9 +17,11 @@
 #include <string.h>
 #include <time.h>
 
+#include "log.h"
 #include "ntp.h"
 
 #define TIME_ZONE 1
+#define LOG_MODULE  LOG_NTP_MODULE
 
 time_t ntp_time = 0;
 tm *ntp_datetime;
@@ -55,12 +57,11 @@ void GetTime(){
 
 
     NutDelay(100);
-//
-//    // This isn't working...
-//    struct _tm* test;
-//    X12RtcGetClock(test);
-//
-//    printf("RTC time is: %02d:%02d:%02d\n", test->tm_hour, test->tm_min, test->tm_sec);
-//    printf("RTC date is: %02d.%02d.%02d\n\n", test->tm_mday, (test->tm_mon + 1), (test->tm_year + 1900));
+
+
+    // for logging purposes
+    tm gmt;
+    X12RtcGetClock(&gmt);
+    LogMsg_P(LOG_INFO, PSTR("RTC time [%02d:%02d:%02d]"), gmt.tm_hour, gmt.tm_min, gmt.tm_sec );
 }