Forráskód Böngészése

Added prefix parser method

Aareschluchtje 9 éve
szülő
commit
f48157e34c
3 módosított fájl, 103 hozzáadás és 0 törlés
  1. 3 0
      buttonPrefix.h
  2. 2 0
      main.c
  3. 98 0
      network.c

+ 3 - 0
buttonPrefix.h

@@ -6,6 +6,9 @@
 #define INTERNETRADIO_BUTTONPREFIX_H
 
 #endif //INTERNETRADIO_BUTTONPREFIX_H
+
+struct _LeftButtons getButtonPrefix();
+
 struct _LeftButtons
 {
     u_short id;

+ 2 - 0
main.c

@@ -234,6 +234,8 @@ THREAD(AlarmSync, arg)
             parseAlarmJson(content);
             free(content);
             content = httpGet(urlb);
+            parsePrefixJson(content);
+            free(content);
             isAlarmSyncing = 0;
         }
         NutSleep(3000);

+ 98 - 0
network.c

@@ -26,6 +26,7 @@
 #include "jsmn.h"
 #include "rtc.h"
 #include "alarm.h"
+#include "buttonPrefix.h"
 
 bool isReceiving;
 bool hasNetwork;
@@ -207,6 +208,103 @@ void parseAlarmJson(char* content){
     }
 }
 
+void parsePrefixJson(char* content){
+    int r;
+    int i;
+    jsmn_parser p;
+    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]));
+    if (r <= 0) {
+        printf("Failed to parse JSON: %d \n", r);
+        return;
+    }else{
+        printf("Aantal tokens found: %d \n", r);
+    }
+
+    int start = 1;
+    //int usedAlarms[maxAlarms()];
+    //int j;
+    //for(j = 0; j < maxAlarms(); j++){
+    //    usedAlarms[j] = 0;
+    //}
+    for(i = 1; i < r; i++)
+    {
+        struct _LeftButtons something;
+        u_short id;
+        u_short bid;
+        char name[16];
+        char ip[24];
+        u_short port;
+        char url[24];
+        memset(url, 0, 24);
+        memset(ip, 0, 24);
+        memset(name, 0, 16);
+
+//        for (i = i; !((i + start) % 24 == 0); i++) {
+//            if (jsoneq(content, &token[i], "YYYY") == 0) {
+//                time.tm_year= getIntegerToken(content, &token[i + 1]) - 1900;
+//                i++;
+//            }else if (jsoneq(content, &token[i], "MM") == 0) {
+//                time.tm_mon=  getIntegerToken(content, &token[i + 1]) - 1;
+//                i++;
+//            }else if (jsoneq(content, &token[i], "DD") == 0) {
+//                time.tm_mday =  getIntegerToken(content, &token[i + 1]);
+//                i++;
+//            }else if (jsoneq(content, &token[i], "hh") == 0) {
+//                time.tm_hour = 	getIntegerToken(content, &token[i + 1]);
+//                i++;
+//            }else if (jsoneq(content, &token[i], "mm") == 0) {
+//                time.tm_min = getIntegerToken(content, &token[i + 1]);
+//                i++;
+//            }else if (jsoneq(content, &token[i], "ss") == 0) {
+//                time.tm_sec = getIntegerToken(content, &token[i + 1]);
+//                i++;
+//            }else if (jsoneq(content, &token[i], "id") == 0) {
+//                id = getIntegerToken(content, &token[i + 1]);
+//                i++;
+//            }else if (jsoneq(content, &token[i], "port") == 0) {
+//                port = getIntegerToken(content, &token[i + 1]);
+//                i++;
+//            }else if (jsoneq(content, &token[i], "ip") == 0) {
+//                getStringToken(content, &token[i + 1], ip);
+//                i++;
+//            }else if (jsoneq(content, &token[i], "url") == 0) {
+//                getStringToken(content, &token[i + 1], url);
+//                i++;
+//            }else if (jsoneq(content, &token[i], "name") == 0) {
+//                getStringToken(content, &token[i + 1], name);
+//                i++;
+//            }
+//        }
+        start = 0;
+
+        int idx = alarmExist(id);
+        if(idx == -1){
+            printf("New alarm found!\n");
+            printf("Alarm stream data is: %s:%d%s\n", ip, port, url);
+            printf("Alarm id and name is: %d %s\n\n", id, name);
+
+//            //zoek naar een vrije plaats in de alarm array
+//            for(j = 0; j < maxAlarms(); j++){
+//                if(usedAlarms[j] == 0){ //Dit is een lege plaats, hier kunnen we ons nieuwe alarm plaatsen
+//                    setAlarm(time, name, ip, port, url, 5, id, j);
+//                    usedAlarms[j] = 1;
+//                    j = 10;
+//                }
+//            }
+//        }else{
+//            usedAlarms[idx] = 1; //Alarm bestaat al, dus we houden deze plaats vrij voor dat alarm
+        }
+    }
+//    for(j = 0; j < maxAlarms(); j++){ //Alle overige plaatsen, die wij niet gezet hebben, verwijderen.
+//        if(usedAlarms[j] == 0){
+//            deleteAlarm(j);
+//        };
+//    }
+}
+
 bool NetworkIsReceiving(void){
     return isReceiving;
 }