You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

30 lines
792 B

--- 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]);