Quellcode durchsuchen

Merge pull request #30 from jancoow/http_optimalisations

Http optimalisations
Janco Kock vor 9 Jahren
Ursprung
Commit
7eea95885d
2 geänderte Dateien mit 33 neuen und 41 gelöschten Zeilen
  1. 1 1
      alarm.c
  2. 32 40
      network.c

+ 1 - 1
alarm.c

@@ -9,7 +9,7 @@
 #include "rtc.h"
 #include "alarm.h"
 
-#define n 2
+#define n 5
 
 
 struct _snooze

+ 32 - 40
network.c

@@ -47,55 +47,47 @@ void NetworkInit() {
 
 char* httpGet(char address[]){
     isReceiving = true;
-    NutDelay(1000);
     printf("\n\n #-- HTTP get -- #\n");
 
     TCPSOCKET* sock = NutTcpCreateSocket();
 
-    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);
-    int len = sizeof(http);
-
-    char buffer[800];
-    memset(buffer, 0, 800);
+    char buffer[2];
+    char* content = (char*) calloc(1 , 800);
+    char enters = 0;
+    int t = 0;
 
-    if (NutTcpConnect(sock, inet_addr("62.195.226.247"), 80)) {
+    if(content == 0){
+        printf("Can't calloc memory\n");
+    }else 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.\n");
-            NutDelay(1000);
-        }else{
-            printf("Headers %s writed. Now reading.", http);
-            NutDelay(1000);
-            NutTcpReceive(sock, buffer, sizeof(buffer));
-            //fread(buffer, 1, sizeof(buffer), stream);
-            NutDelay(1200);
-            printf(buffer);
-        };
-        //fclose(stream);
-    }
-    NutTcpCloseSocket(sock);
-    int i;
-    int enters = 0;
-    int t = 0;
-    char* content = (char*) calloc(1 , sizeof(buffer));
-    for(i = 0; i < strlen(buffer); i++)
-    {
-        if(enters == 4) {
-            content[t] = buffer[i];
-            t++;
-        }else {
-            if (buffer[i] == '\n' || buffer[i] == '\r') {
-                enters++;
-            }
-            else {
-                enters = 0;
+        FILE *stream;
+        stream = _fdopen((int) sock, "r+b");
+
+        //Writing http GET to stream
+        fprintf(stream, "GET %s HTTP/1.1\r\nHost: saltyradio.jancokock.me \r\n\r\n", address);
+        fflush(stream);
+
+        printf("Headers writed. Now reading.");
+        NutDelay(500);
+        //Removing header:
+        while(fgets(buffer, sizeof(buffer), stream) != NULL) {
+            if(enters == 4) {
+                content[t] = buffer[0];
+                t++;
+            }else {
+                if (buffer[0] == '\n' || buffer[0] == '\r') {
+                    enters++;
+                }
+                else {
+                    enters = 0;
+                }
             }
         }
+        fclose(stream);
     }
+    NutTcpCloseSocket(sock);
+
     content[t] = '\0';
     printf("\nContent size: %d, Content: %s \n", t, content);
     isReceiving = false;
@@ -115,7 +107,7 @@ void parseAlarmJson(char* content){
     int r;
     int i;
     jsmn_parser p;
-    jsmntok_t token[100]; /* We expect no more than 128 tokens */
+    jsmntok_t token[150]; /* We expect no more than 128 tokens */
 
     jsmn_init(&p);
     r = jsmn_parse(&p, content, strlen(content), token, sizeof(token)/sizeof(token[0]));