diff --git a/Autobuild/rpi.sh b/Autobuild/rpi.sh index 67e6f94cd5..f35fabebd1 100644 --- a/Autobuild/rpi.sh +++ b/Autobuild/rpi.sh @@ -6,8 +6,8 @@ build() TOOLCHAIN_URL=http://www.lonelycoder.com/download/arm-unknown-linux-gnueabi.tar.gz TOOLCHAIN="${WORKINGDIR}/arm-unknown-linux-gnueabi" - SYSROOT_URL=http://www.lonelycoder.com/download/rpi_alpha_sysroot.tar.gz - SYSROOT="${WORKINGDIR}/rpi_alpha_sysroot" + SYSROOT_URL=http://www.lonelycoder.com/download/rpi_sysroot-1.0-13-ga8630c9.tar.gz + SYSROOT="${WORKINGDIR}/rpi_sysroot-1.0-13-ga8630c9" cleanup() { diff --git a/Manifests/rpi.json b/Manifests/rpi.json index da504a4929..7e006f80c8 100644 --- a/Manifests/rpi.json +++ b/Manifests/rpi.json @@ -1,3 +1,3 @@ { - "stosVersion": "1.0.9" + "stosVersion": "1.0.17" } diff --git a/configure.rpi b/configure.rpi index a526be68b7..bdaa1b053e 100755 --- a/configure.rpi +++ b/configure.rpi @@ -74,6 +74,11 @@ if [ -n "$SYSROOT" ]; then echo >>${CONFIG_MAK} "CFLAGS_cfg += " `pkg-config --cflags gio-2.0` echo "Using gio: `pkg-config --modversion gio-2.0`" + echo >>${CONFIG_MAK} "LDFLAGS_cfg += " `pkg-config --libs avahi-client` + echo >>${CONFIG_MAK} "CFLAGS_AVAHI += "`pkg-config --cflags avahi-client` + echo "Using AVAHI client: `pkg-config --modversion avahi-client`" + enable avahi + echo >>${CONFIG_MAK} "LDFLAGS_cfg += -lbz2" enable connman diff --git a/src/sd/avahi.c b/src/sd/avahi.c index 95f6270b31..6a7487753b 100644 --- a/src/sd/avahi.c +++ b/src/sd/avahi.c @@ -39,6 +39,7 @@ #include "avahi.h" #include "sd.h" +static AvahiSimplePoll *asp; static struct service_instance_list services; @@ -56,6 +57,7 @@ typedef struct service_aux { static void client_state_change(AvahiClient *c, AvahiClientState state, void *aux) { + TRACE(TRACE_DEBUG, "AVAHI", "Client state change %d", state); } @@ -346,7 +348,7 @@ client_callback(AvahiClient *c, AvahiClientState state, void *userdata) assert(c); /* Called whenever the client or server state changes */ - + TRACE(TRACE_DEBUG, "AVAHI", "State %d", state); switch (state) { case AVAHI_CLIENT_S_RUNNING: @@ -384,13 +386,16 @@ client_callback(AvahiClient *c, AvahiClientState state, void *userdata) } #endif +#if STOS +static int hostname_changed; +#endif + /** * */ static void * avahi_thread(void *aux) { - AvahiSimplePoll *asp = avahi_simple_poll_new(); const AvahiPoll *ap = avahi_simple_poll_get(asp); AvahiClient *c; @@ -406,7 +411,20 @@ avahi_thread(void *aux) avahi_client_new(ap, AVAHI_CLIENT_NO_FAIL, client_callback, NULL, NULL); #endif - while((avahi_simple_poll_iterate(asp, -1)) != -1) {} +#if STOS + avahi_client_set_host_name(c, gconf.system_name); +#endif + + while((avahi_simple_poll_iterate(asp, -1)) != -1) { +#if STOS + if(avahi_client_get_state(c) != AVAHI_CLIENT_S_REGISTERING) { + if(hostname_changed) { + hostname_changed = 0; + avahi_client_set_host_name(c, gconf.system_name); + } + } +#endif + } return NULL; } @@ -418,6 +436,22 @@ avahi_thread(void *aux) void avahi_init(void) { + asp = avahi_simple_poll_new(); + hts_thread_create_detached("AVAHI", avahi_thread, NULL, THREAD_PRIO_BGTASK); } + +#if STOS + +/** + * + */ +void +avahi_update_hostname(void) +{ + hostname_changed = 1; + if(asp != NULL) + avahi_simple_poll_wakeup(asp); +} +#endif diff --git a/src/settings.c b/src/settings.c index a426baf046..b458aa7c47 100644 --- a/src/settings.c +++ b/src/settings.c @@ -1186,6 +1186,11 @@ static void set_system_name(void *opaque, const char *str) { snprintf(gconf.system_name, sizeof(gconf.system_name), "%s", str); +#if STOS && ENABLE_AVAHI + extern void avahi_update_hostname(void); + avahi_update_hostname(); +#endif + } @@ -1253,29 +1258,13 @@ settings_init(void) // Add configurable system name htsmsg_t *s = htsmsg_store_load("netinfo") ?: htsmsg_create_map(); - - const char *sysname = NULL; -#if !defined(STOS) && (defined(linux) || defined(__APPLE__)) - char hname[64]; - if(!gethostname(hname, sizeof(hname))) - sysname = hname; -#endif - - if(sysname == NULL) - sysname = showtime_get_system_type(); - - - - char default_name[64]; - snprintf(default_name, sizeof(default_name), "Showtime on %s", sysname); - setting_create(SETTING_STRING, gconf.settings_network, SETTINGS_INITIAL_UPDATE | SETTINGS_EMPTY_IS_DEFAULT, SETTING_TITLE(_p("System name")), - SETTING_VALUE(default_name), + SETTING_VALUE("Showtime"), SETTING_CALLBACK(set_system_name, NULL), - SETTING_HTSMSG("systemname", s, "netinfo"), + SETTING_HTSMSG("sysname", s, "netinfo"), NULL);