summaryrefslogtreecommitdiffstats
path: root/sound/squeezelite/patches/010-wait_for_nonzero_mac.patch
blob: 69d4f34a85d10bd15f60825af928a7da6de02a1f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
--- a/main.c
+++ b/main.c
@@ -187,6 +187,17 @@ static void sighandler(int signum) {
 	signal(signum, SIG_DFL);
 }
 
+// Waits for nonzero MAC
+static void get_nonzero_mac(u8_t mac[], u32_t timeout_ms) {
+	u32_t wait_timeout = gettime_ms() + timeout_ms;
+	do{
+		get_mac(mac);
+		if ((mac[0]+mac[1]+mac[2]+mac[3]+mac[4]+mac[5]) != 0) {
+			break;
+		}
+	}while(wait_timeout > gettime_ms());
+}
+
 int main(int argc, char **argv) {
 	char *server = NULL;
 	char *output_device = "default";
@@ -240,7 +251,8 @@ int main(int argc, char **argv) {
 #define MAXCMDLINE 512
 	char cmdline[MAXCMDLINE] = "";
 
-	get_mac(mac);
+	// Waits for nonzero MAC
+	get_nonzero_mac(mac,10000);
 
 	for (i = 0; i < argc && (strlen(argv[i]) + strlen(cmdline) + 2 < MAXCMDLINE); i++) {
 		strcat(cmdline, argv[i]);