Selaa lähdekoodia

Merge branch 'developer' into eeprom-controller-v2

Conflicts in main.c and network.c
Jordy Sipkema 9 vuotta sitten
vanhempi
commit
209d2ae91b
6 muutettua tiedostoa jossa 79 lisäystä ja 54 poistoa
  1. 1 1
      alarm.c
  2. 28 4
      displayHandler.c
  3. 1 1
      main.c
  4. 47 47
      network.c
  5. 1 0
      network.h
  6. 1 1
      vs10xx.c

+ 1 - 1
alarm.c

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

+ 28 - 4
displayHandler.c

@@ -63,17 +63,41 @@ void displayDate(int line_number) {
 void displayAlarm(int line_number, int line_numberTwo, int idx)
 {
 	int i;
-    char str[12];
+	int j;
+	int startidx;
+    char str[16];
 	struct _alarm am = getAlarm(idx);
+	
     sprintf(str, "    %02d:%02d:%02d    ", am.time.tm_hour, am.time.tm_min, am.time.tm_sec);
     if (line_number > -1 && line_number < 2){
-        (*write_display_ptr[line_number])(str, 12);
+        (*write_display_ptr[line_number])(str, 16);
     }
     playStream(am.ip, am.port, am.url);
 
+	j = 0;
     char str2[16];
-	for(i = 0; i < 17; i++){
-		str2[i] = am.name[i];
+	for (i = 0; i < 16;i++){
+		if (am.name[i] != 0){
+			j = j + 1;
+		}
+	}
+	
+	if (j != 16){
+		startidx = (8-(j/2));
+	}
+	printf("startidx: %d, %d",startidx, j);
+	j = 0;
+	for(i = 0; i < 16; i++){
+		if (i >= startidx){
+			if (am.name[j] != 0){
+				str2[i] = am.name[j];
+			} else {
+				str2[i] = ' ';
+			}
+			j++;
+		} else {
+			str2[i] = ' ';
+		}
 	}
     if (line_numberTwo > -1 && line_numberTwo < 2){
         (*write_display_ptr[line_numberTwo])(str2, 16);

+ 1 - 1
main.c

@@ -348,7 +348,7 @@ int main(void)
         }
         else if(timer(start) >= 5 && checkAlarms() == 1)
         {
-			for (idx = 0; idx < 3; idx++){
+			for (idx = 0; idx < 2; idx++){
 				if (getState(idx) == 1){
 					displayAlarm(0,1,idx);
 					if (KbGetKey() == KEY_ESC){

+ 47 - 47
network.c

@@ -39,63 +39,59 @@ void NetworkInit() {
     else if (NutDhcpIfConfig(DEV_ETHER_NAME, NULL, 0)) {
         printf("DHCP failed. \n");
     }else {
-        printf("Ik heb een internet connectie. Ip is: %s \n\n", inet_ntoa(confnet.cdn_ip_addr));
+        printf("Ik heb een internet connectie. Ip is: %s \nMac address is:  %s\n\n", inet_ntoa(confnet.cdn_ip_addr),  ether_ntoa(confnet.cdn_mac));
     }
     NutSleep(100);
     hasNetwork = true;
 }
 
+char* getMacAdress(){
+    ether_ntoa(confnet.cdn_mac);
+}
+
 char* httpGet(char address[]){
     isReceiving = true;
-    NutDelay(1000);
-    //printf("\n\n #-- HTTP get -- #\n");
+    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 written: %sNow reading...\n", 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,12 +111,13 @@ 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]));
-    if (r < 0) {
+    if (r <= 0) {
         printf("Failed to parse JSON: %d \n", r);
+        return;
     }else{
         printf("Aantal tokens found: %d \n\n", r);
     }
@@ -140,8 +137,12 @@ void parseAlarmJson(char* content){
         char url[24];
         char ip[24];
         char name[16];
-        int id;
-        for (i = i; !((i + start) % 23 == 0); i++) {
+		memset(url, 0, 24);
+		memset(ip, 0, 24);
+		memset(name, 0, 16);
+        
+		int id;
+        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++;
@@ -173,7 +174,7 @@ void parseAlarmJson(char* content){
                 getStringToken(content, &token[i + 1], url);
                 i++;
             }else if (jsoneq(content, &token[i], "name") == 0) {
-                getStringToken(name, &token[i + 1], name);
+                getStringToken(content, &token[i + 1], name);
                 i++;
             }
         }
@@ -198,7 +199,6 @@ void parseAlarmJson(char* content){
         }else{
             usedAlarms[idx] = 1; //Alarm bestaat al, dus we houden deze plaats vrij voor dat alarm
         }
-        NutDelay(1000);
     }
     for(j = 0; j < maxAlarms(); j++){ //Alle overige plaatsen, die wij niet gezet hebben, verwijderen.
         if(usedAlarms[j] == 0){

+ 1 - 0
network.h

@@ -11,6 +11,7 @@ bool hasNetworkConnection(void);
 bool NetworkIsReceiving(void);
 extern void NetworkInit(void);
 char* httpGet(char address[]);
+char* getMacAdress();
 void parseAlarmJson(char* content);
 int getTimeZone(void);
 

+ 1 - 1
vs10xx.c

@@ -513,7 +513,7 @@ int VsPlayerKick(void)
 //        LogMsg_P(LOG_DEBUG,PSTR("Kick: CLOCKF = [0x%02X]"),VsRegRead(VS_CLOCKF_REG));
 //        LogMsg_P(LOG_DEBUG,PSTR("Kick: CLOCKF = [0x%02X]"),VsRegRead(VS_CLOCKF_REG));
 
-        //VsLoadProgramCode();
+        VsLoadProgramCode();
         vs_status = VS_STATUS_RUNNING;
         VsPlayerFeed(NULL);
         VsPlayerInterrupts(1);