manage unset values with NAN
authorJosé Bollo <jose.bollo@iot.bzh>
Tue, 30 May 2017 17:21:22 +0000 (19:21 +0200)
committerRomain Forlot <romain.forlot@iot.bzh>
Thu, 1 Jun 2017 16:26:17 +0000 (18:26 +0200)
Change-Id: I144bc110864f507e57d5e4b7f03ee1c0aa61ff63
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
CAN-binder/low-can-binding/binding/low-can-cb.cpp
CAN-binder/low-can-binding/binding/low-can-cb.hpp

index ace5348..4fa375b 100644 (file)
@@ -395,12 +395,7 @@ static int subscribe_unsubscribe_signals(struct afb_req request, bool subscribe,
                // poll a PID for nothing.
                if(sig->get_supported() && subscribe)
                {
-                       float frequency;
-
-                       if(event_filter.frequency >= 0)
-                               { frequency = event_filter.frequency; }
-                       else
-                               { frequency = sig->get_frequency(); }
+                       float frequency = isnan(event_filter.frequency) ? sig->get_frequency() : event_filter.frequency;
 
                        diag_m.add_recurring_request(diag_req, sig->get_name().c_str(), false, sig->get_decoder(), sig->get_callback(), frequency);
                        //TODO: Adding callback requesting ignition status:     diag_req, sig.c_str(), false, diagnostic_message_t::decode_obd2_response, diagnostic_message_t::check_ignition_status, frequency);
index 1608db7..6490fdc 100644 (file)
@@ -16,6 +16,7 @@
  */
 
 #include <string>
+#include <cmath>
 #include "../utils/socketcan-bcm.hpp"
 
 struct event_filter_t
@@ -23,6 +24,7 @@ struct event_filter_t
        float frequency;
        float min;
        float max;
+       event_filter_t() : frequency{NAN}, min{NAN}, max{NAN} {}
 };
 
 class low_can_subscription_t
@@ -44,7 +46,7 @@ private:
                                                        *       don't need an offset. */
 
        /// Filtering part
-       struct event_filter_t event_filter_ = {-1.0, -1.0, -1.0};
+       struct event_filter_t event_filter_;
 
        utils::socketcan_bcm_t socket_;
 public: