diff options
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/CMakeLists.txt | 12 | ||||
-rw-r--r-- | src/af-gps-binding.c | 49 |
3 files changed, 42 insertions, 21 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 016b497..c4a94b8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,7 @@ project(af-gps-binding C) -cmake_minimum_required(VERSION 3.4) +cmake_minimum_required(VERSION 3.3) include(GNUInstallDirs) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 38e82ed..5badd01 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -16,7 +16,7 @@ # limitations under the License. ########################################################################### -cmake_minimum_required(VERSION 3.4) +cmake_minimum_required(VERSION 3.3) ########################################################################### @@ -50,11 +50,11 @@ link_libraries(${EXTRAS_LIBRARIES}) message(STATUS "Creation af-gps-binding for AFB-DAEMON") ############################################################### -pkg_get_variable(afb_binding_install_dir afb-daemon binding_install_dir) -#execute_process( -# COMMAND pkg-config --variable binding_install_dir afb-daemon -# OUTPUT_VARIABLE afb_binding_install_dir OUTPUT_STRIP_TRAILING_WHITESPACE -#) +#pkg_get_variable(afb_binding_install_dir afb-daemon binding_install_dir) +execute_process( + COMMAND pkg-config --variable binding_install_dir afb-daemon + OUTPUT_VARIABLE afb_binding_install_dir OUTPUT_STRIP_TRAILING_WHITESPACE +) ############################################################### add_library(af-gps-binding MODULE af-gps-binding.c) diff --git a/src/af-gps-binding.c b/src/af-gps-binding.c index 668a10f..2eee437 100644 --- a/src/af-gps-binding.c +++ b/src/af-gps-binding.c @@ -151,9 +151,6 @@ static struct json_object *positions[type_COUNT]; /* computed positions by type /* head of the list of periods */ static struct period *list_of_periods; -/* declare the connection routine */ -static int nmea_connect(); - /***************************************************************************************/ /***************************************************************************************/ /** **/ @@ -472,7 +469,7 @@ static void event_send() /***************************************************************************************/ /** **/ /** **/ -/** SECTION: HANDLING NMEA SENTENCES **/ +/** SECTION: HANDLING NMEA **/ /** **/ /** **/ /***************************************************************************************/ @@ -772,10 +769,22 @@ static int nmea_read(int fd) } } +/***************************************************************************************/ +/***************************************************************************************/ +/** **/ +/** **/ +/** SECTION: HANDLING OF CONNECTION **/ +/** **/ +/** **/ +/***************************************************************************************/ +/***************************************************************************************/ +/* declare the connection routine */ +static int connection(); + /* * called on an event on the NMEA stream */ -static int nmea_on_event(sd_event_source *s, int fd, uint32_t revents, void *userdata) +static int on_event(sd_event_source *s, int fd, uint32_t revents, void *userdata) { /* read available data */ if ((revents & EPOLLIN) != 0) { @@ -787,7 +796,7 @@ static int nmea_on_event(sd_event_source *s, int fd, uint32_t revents, void *use if ((revents & (EPOLLERR|EPOLLRDHUP|EPOLLHUP)) != 0) { sd_event_source_unref(s); close(fd); - nmea_connect(fd); + connection(fd); } return 0; @@ -829,18 +838,14 @@ static int open_socket_to(const char *host, const char *service) } /* - * connection to nmea stream + * connection to nmea stream for the host and the port */ -static int nmea_connect() +static int connect_to(const char *host, const char *service, int isgpsd) { sd_event_source *source; int rc, fd; - const char *host; - const char *service; /* TODO connect to somewhere else */ - host = "sinagot.net"; - service = "5001"; fd = open_socket_to(host, service); if (fd < 0) { ERROR(afbitf, "can't connect to host %s, service %s", host, service); @@ -848,7 +853,7 @@ static int nmea_connect() } /* adds to the event loop */ - rc = sd_event_add_io(afb_daemon_get_event_loop(afbitf->daemon), &source, fd, EPOLLIN, nmea_on_event, NULL); + rc = sd_event_add_io(afb_daemon_get_event_loop(afbitf->daemon), &source, fd, EPOLLIN, on_event, NULL); if (rc < 0) { close(fd); ERROR(afbitf, "can't coonect host %s, service %s to the event loop", host, service); @@ -856,6 +861,22 @@ static int nmea_connect() return rc; } +/* + * connection to nmea stream + */ +static int connection() +{ + const char *host; + const char *service; + int isgpsd; + + /* TODO connect to somewhere else */ + host = getenv("AFBGPS_HOST") ? : "sinagot.net"; + service = getenv("AFBGPS_SERVICE") ? : "5001"; + isgpsd = getenv("AFBGPS_ISNMEA") ? 0 : 1; + return connect_to(host, service, isgpsd); +} + /***************************************************************************************/ /***************************************************************************************/ /** **/ @@ -980,7 +1001,7 @@ const struct afb_binding *afbBindingV1Register(const struct afb_binding_interfac { afbitf = itf; /* records the interface for accessing afb-daemon */ - nmea_connect(); + connection(); return &binding_description; /* returns the description of the binding */ } |