Explorar o código

Last attemp for improving code..

Janco Kock %!s(int64=9) %!d(string=hai) anos
pai
achega
4566ab51ae
Modificáronse 4 ficheiros con 42 adicións e 37 borrados
  1. 8 0
      jsmn.c
  2. 5 0
      jsmn.h
  3. 9 8
      main.c
  4. 20 29
      network.c

+ 8 - 0
jsmn.c

@@ -320,3 +320,11 @@ int jsoneq(const char *json, jsmntok_t *tok, const char *s) {
 	return -1;
 }
 
+/**
+ * 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 ];
+	sprintf(s, "%.*s", tok->end - tok->start, json + tok->start);
+	return atoi(s);
+}

+ 5 - 0
jsmn.h

@@ -67,6 +67,11 @@ void jsmn_init(jsmn_parser *parser);
  */
 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);
+
 /**
  * Run JSON parser. It parses a JSON data string into and array of tokens, each describing
  * a single JSON object.

+ 9 - 8
main.c

@@ -191,6 +191,7 @@ THREAD(StartupInit, arg)
 {
     isAlarmSyncing = 1;
     NetworkInit();
+
     NtpSync();
 
     char* content = httpGet("/getAlarmen.php?radioid=DE370");
@@ -227,13 +228,13 @@ int main(void)
     WatchDogDisable();
 
     NutDelay(100);
-	
+
     SysInitIO();
-	
+
 	SPIinit();
-    
+
 	LedInit();
-	
+
 	LcdLowLevelInit();
 
     Uart0DriverInit();
@@ -248,13 +249,13 @@ int main(void)
     NtpInit();
 
     NutThreadCreate("BackgroundThread", StartupInit, NULL, 1024);
-    
+
     /** Quick fix for turning off the display after 10 seconds boot */
     start = time(0);
     running = 1;
 
     RcInit();
-    
+
 	KbInit();
 
     SysControlMainBeat(ON);             // enable 4.4 msecs heartbeat interrupt
@@ -268,14 +269,14 @@ int main(void)
 	sei();
 
     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){

+ 20 - 29
network.c

@@ -28,10 +28,10 @@
 void NetworkInit() {
     /* Register de internet controller. */
     if (NutRegisterDevice(&DEV_ETHER, 0, 0)) {
-        printf("Registering  failed.");
+        printf("Registering  failed. \n");
     }/* Netwerk configureren op dhcp */
     else if (NutDhcpIfConfig(DEV_ETHER_NAME, NULL, 0)) {
-        /* Done. */
+        printf("DHCP failed. \n");
     }else {
         printf("Ik heb een internet connectie. Ip is: %s \n\n", inet_ntoa(confnet.cdn_ip_addr));
     }
@@ -39,19 +39,22 @@ void NetworkInit() {
 
 char* httpGet(char address[]){
     NutDelay(1000);
+    printf("\n\n #-- HTTP get -- #\n");
+
     TCPSOCKET* sock = NutTcpCreateSocket();
-    char http[150];
+
+    char http[strlen(address) + 49]; //49 chars based on get command. Change this number if you change the domain name
     sprintf(http, "GET %s HTTP/1.1\r\nHost: saltyradio.jancokock.me \r\n\r\n", address);
-    NutDelay(100);
-    char buffer[300];
     int len = sizeof(http);
+
+    char buffer[300];
     if (NutTcpConnect(sock, inet_addr("62.195.226.247"), 80)) {
         printf("Can't connect to server\n");
     }else{
         //FILE *stream;
         //stream = _fdopen((int) sock, "r b");
         if(NutTcpSend(sock, http, len) != len){
-            printf("Writing headers failed.");
+            printf("Writing headers failed.\n");
             NutDelay(1000);
         }else{
             printf("Headers %s writed. Now reading.", http);
@@ -62,7 +65,6 @@ char* httpGet(char address[]){
             printf(buffer);
         };
         //fclose(stream);
-
     }
     NutTcpCloseSocket(sock);
     int i;
@@ -71,25 +73,20 @@ char* httpGet(char address[]){
     char* content = (char*) calloc(1 , sizeof(buffer));
     for(i = 0; i < strlen(buffer); i++)
     {
-        if(enters > 3) {
-            enters = 10;
+        if(enters == 4) {
             content[t] = buffer[i];
             t++;
-        }
-        if(buffer[i] == '\n' || buffer[i] == '\r')
-        {
-            enters++;
-        }
-        else if(enters < 10)
-        {
-            enters = 0;
+        }else {
+            if (buffer[i] == '\n' || buffer[i] == '\r') {
+                enters++;
+            }
+            else {
+                enters = 0;
+            }
         }
     }
     content[t] = '\0';
-    printf("\nContent size %d \n", t);
-    printf("\nContent: %s \n", content);
-
-
+    printf("\nContent size: %d, Content: %s \n", t, content);
     return content;
 }
 
@@ -111,11 +108,10 @@ void parseAlarmJson(char* content){
 
     for (i = 1; i < r; i++) {
         if (jsoneq(content, &token[i], "YYYY") == 0) {
-            /* We may use strndup() to fetch string value */
             char yyyy[4];
             sprintf(yyyy, "%.*s", token[i+1].end-token[i+1].start, content + token[i+1].start);
-            printf("Tijd jaren: %s\n", yyyy);
-            time.tm_year = atoi(yyyy) - 1900;    //only use when 100% sure input is an integer
+            printf("Tijd jaar: %s\n", yyyy);
+            time.tm_mon= atoi(yyyy) - 1900;    //only use when 100% sure input is an integer
             i++;
         }else if (jsoneq(content, &token[i], "MM") == 0) {
             char mm[2];
@@ -149,11 +145,6 @@ void parseAlarmJson(char* content){
             i++;
         }
     }
-   // printf("alarmtime %02d-%02d-%04d || %02d-%02d-%02d", time.tm_mday, time.tm_mon+1, time.tm_year+1900, time.tm_hour, time.tm_min, time.tm_sec);
-   // setAlarm(time, "none", 0);
-    struct _tm alarmtime = GetRTCTime();
-    alarmtime.tm_sec = alarmtime.tm_sec+10;
-
     X12RtcSetAlarm(0,&time,0b11111111);
     NutDelay(1000);
 }