subscription: Optimizing opening sockets
authorRomain Forlot <romain.forlot@iot.bzh>
Tue, 5 Nov 2019 14:37:47 +0000 (15:37 +0100)
committerRomain Forlot <romain.forlot@iot.bzh>
Tue, 5 Nov 2019 14:37:47 +0000 (15:37 +0100)
Also review some aligment and make more space between bool ops

Change-Id: Id1880cbde10cc8deec66a6be163d8a012dbaa0f9
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
low-can-binding/binding/application-generated.cpp
low-can-binding/binding/low-can-cb.cpp
low-can-binding/binding/low-can-subscription.cpp

index f4d2635..5ad5951 100644 (file)
@@ -5,7 +5,7 @@
 application_t::application_t()
        : can_bus_manager_{utils::config_parser_t{"/etc/dev-mapping.conf"}}
        , message_set_{
-               {std::make_shared<message_set_t>(message_set_t{0,"AGL Virtual Car",
+               {std::make_shared<message_set_t>(message_set_t{0,"example",
                        { // beginning message_definition_ vector
                                {std::make_shared<message_definition_t>(message_definition_t{"ls",0x21,"",0,2,frequency_clock_t(5.00000f),true,
                                        { // beginning signals vector
@@ -120,23 +120,7 @@ application_t::application_t()
                                                        ""// unit
                                                })},
                                                {std::make_shared<signal_t> (signal_t{
-                                                       "steering_wheel.cruise.set",// generic_name
-                                                       51,// bit_position
-                                                       1,// bit_size
-                                                       1.00000f,// factor
-                                                       0.00000f,// offset
-                                                       0,// min_value
-                                                       0,// max_value
-                                                       frequency_clock_t(0.00000f),// frequency
-                                                       true,// send_same
-                                                       false,// force_send_changed
-                                                       {
-                                                       },// states
-                                                       false,// writable
                                                        decoder_t::decode_boolean,// decoder
-                                                       nullptr,// encoder
-                                                       false,// received
-                                                       std::make_pair<bool, int>(false, 0),// multiplex
                                                        false,// is_big_endian
                                                        false,// is_signed
                                                        ""// unit
@@ -852,258 +836,6 @@ application_t::application_t()
 
                }, // end message_definition vector
                        { // beginning diagnostic_messages_ vector
-                               {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
-                                       4,
-                                       "engine.load",
-                                       0,
-                                       0,
-                                       UNIT::INVALID,
-                                       5.00000f,
-                                       decoder_t::decode_obd2_response,
-                                       nullptr,
-                                       true,
-                                       false
-                               })}
-,                              {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
-                                       5,
-                                       "engine.coolant.temperature",
-                                       0,
-                                       0,
-                                       UNIT::INVALID,
-                                       1.00000f,
-                                       decoder_t::decode_obd2_response,
-                                       nullptr,
-                                       true,
-                                       false
-                               })}
-,                              {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
-                                       10,
-                                       "fuel.pressure",
-                                       0,
-                                       0,
-                                       UNIT::INVALID,
-                                       1.00000f,
-                                       decoder_t::decode_obd2_response,
-                                       nullptr,
-                                       true,
-                                       false
-                               })}
-,                              {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
-                                       11,
-                                       "intake.manifold.pressure",
-                                       0,
-                                       0,
-                                       UNIT::INVALID,
-                                       1.00000f,
-                                       decoder_t::decode_obd2_response,
-                                       nullptr,
-                                       true,
-                                       false
-                               })}
-,                              {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
-                                       12,
-                                       "engine.speed",
-                                       0,
-                                       0,
-                                       UNIT::INVALID,
-                                       5.00000f,
-                                       decoder_t::decode_obd2_response,
-                                       nullptr,
-                                       true,
-                                       false
-                               })}
-,                              {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
-                                       13,
-                                       "vehicle.speed",
-                                       0,
-                                       0,
-                                       UNIT::INVALID,
-                                       5.00000f,
-                                       decoder_t::decode_obd2_response,
-                                       nullptr,
-                                       true,
-                                       false
-                               })}
-,                              {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
-                                       15,
-                                       "intake.air.temperature",
-                                       0,
-                                       0,
-                                       UNIT::INVALID,
-                                       1.00000f,
-                                       decoder_t::decode_obd2_response,
-                                       nullptr,
-                                       true,
-                                       false
-                               })}
-,                              {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
-                                       16,
-                                       "mass.airflow",
-                                       0,
-                                       0,
-                                       UNIT::INVALID,
-                                       5.00000f,
-                                       decoder_t::decode_obd2_response,
-                                       nullptr,
-                                       true,
-                                       false
-                               })}
-,                              {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
-                                       17,
-                                       "throttle.position",
-                                       0,
-                                       0,
-                                       UNIT::INVALID,
-                                       5.00000f,
-                                       decoder_t::decode_obd2_response,
-                                       nullptr,
-                                       true,
-                                       false
-                               })}
-,                              {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
-                                       31,
-                                       "running.time",
-                                       0,
-                                       0,
-                                       UNIT::INVALID,
-                                       1.00000f,
-                                       decoder_t::decode_obd2_response,
-                                       nullptr,
-                                       true,
-                                       false
-                               })}
-,                              {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
-                                       45,
-                                       "EGR.error",
-                                       0,
-                                       0,
-                                       UNIT::INVALID,
-                                       0.00000f,
-                                       decoder_t::decode_obd2_response,
-                                       nullptr,
-                                       true,
-                                       false
-                               })}
-,                              {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
-                                       47,
-                                       "fuel.level",
-                                       0,
-                                       0,
-                                       UNIT::INVALID,
-                                       1.00000f,
-                                       decoder_t::decode_obd2_response,
-                                       nullptr,
-                                       true,
-                                       false
-                               })}
-,                              {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
-                                       51,
-                                       "barometric.pressure",
-                                       0,
-                                       0,
-                                       UNIT::INVALID,
-                                       1.00000f,
-                                       decoder_t::decode_obd2_response,
-                                       nullptr,
-                                       true,
-                                       false
-                               })}
-,                              {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
-                                       70,
-                                       "ambient.air.temperature",
-                                       0,
-                                       0,
-                                       UNIT::INVALID,
-                                       1.00000f,
-                                       decoder_t::decode_obd2_response,
-                                       nullptr,
-                                       true,
-                                       false
-                               })}
-,                              {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
-                                       76,
-                                       "commanded.throttle.position",
-                                       0,
-                                       0,
-                                       UNIT::INVALID,
-                                       1.00000f,
-                                       decoder_t::decode_obd2_response,
-                                       nullptr,
-                                       true,
-                                       false
-                               })}
-,                              {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
-                                       82,
-                                       "ethanol.fuel.percentage",
-                                       0,
-                                       0,
-                                       UNIT::INVALID,
-                                       1.00000f,
-                                       decoder_t::decode_obd2_response,
-                                       nullptr,
-                                       true,
-                                       false
-                               })}
-,                              {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
-                                       90,
-                                       "accelerator.pedal.position",
-                                       0,
-                                       0,
-                                       UNIT::INVALID,
-                                       5.00000f,
-                                       decoder_t::decode_obd2_response,
-                                       nullptr,
-                                       true,
-                                       false
-                               })}
-,                              {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
-                                       91,
-                                       "hybrid.battery-pack.remaining.life",
-                                       0,
-                                       0,
-                                       UNIT::INVALID,
-                                       5.00000f,
-                                       decoder_t::decode_obd2_response,
-                                       nullptr,
-                                       true,
-                                       false
-                               })}
-,                              {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
-                                       92,
-                                       "engine.oil.temperature",
-                                       0,
-                                       0,
-                                       UNIT::INVALID,
-                                       1.00000f,
-                                       decoder_t::decode_obd2_response,
-                                       nullptr,
-                                       true,
-                                       false
-                               })}
-,                              {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
-                                       94,
-                                       "engine.fuel.rate",
-                                       0,
-                                       0,
-                                       UNIT::INVALID,
-                                       1.00000f,
-                                       decoder_t::decode_obd2_response,
-                                       nullptr,
-                                       true,
-                                       false
-                               })}
-,                              {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
-                                       99,
-                                       "engine.torque",
-                                       0,
-                                       0,
-                                       UNIT::INVALID,
-                                       1.00000f,
-                                       decoder_t::decode_obd2_response,
-                                       nullptr,
-                                       true,
-                                       false
-                               })}
 
                        } // end diagnostic_messages_ vector
                })} // end message_set entry
@@ -1132,7 +864,7 @@ application_t::application_t()
 
 const std::string application_t::get_diagnostic_bus() const
 {
-       return "hs";
+       return diagnostic_manager_.get_bus_device_name();;
 }
 
 
index fd57867..8bb595e 100644 (file)
@@ -111,7 +111,7 @@ int read_message(sd_event_source *event_source, int fd, uint32_t revents, void *
        }
 
        // check if error or hangup
-       if ((revents & (EPOLLERR|EPOLLRDHUP|EPOLLHUP)) != 0)
+       if ((revents & (EPOLLERR | EPOLLRDHUP | EPOLLHUP)) != 0)
        {
                sd_event_source_unref(event_source);
                can_subscription->get_socket()->close();
@@ -193,11 +193,11 @@ static int add_to_event_loop(std::shared_ptr<low_can_subscription_t>& can_subscr
 }
 
 static int subscribe_unsubscribe_diagnostic_messages(afb_req_t request,
-                                                        bool subscribe,
-                                                        list_ptr_diag_msg_t diagnostic_messages,
-                                                        struct event_filter_t& event_filter,
-                                                        map_subscription& s,
-                                                        bool perm_rec_diag_req)
+                                                    bool subscribe,
+                                                    list_ptr_diag_msg_t diagnostic_messages,
+                                                    struct event_filter_t& event_filter,
+                                                    map_subscription& s,
+                                                    bool perm_rec_diag_req)
 {
        int rets = 0;
        application_t& app = application_t::instance();
@@ -258,10 +258,10 @@ static int subscribe_unsubscribe_diagnostic_messages(afb_req_t request,
 }
 
 static int subscribe_unsubscribe_signals(afb_req_t request,
-                                                bool subscribe,
-                                                list_ptr_signal_t signals,
-                                                struct event_filter_t& event_filter,
-                                                map_subscription& s)
+                                        bool subscribe,
+                                        list_ptr_signal_t signals,
+                                        struct event_filter_t& event_filter,
+                                        map_subscription& s)
 {
        int rets = 0;
        for(const auto& sig: signals)
@@ -589,7 +589,7 @@ static void write_raw_frame(afb_req_t request, const std::string& bus_name, mess
        if( !sf.signals.empty() )
        {
                AFB_DEBUG("ID WRITE RAW : %d",sf.signals.front()->get_message()->get_id());
-               if(flags&BCM_PROTOCOL)
+               if(flags & BCM_PROTOCOL)
                {
                        if(sf.signals.front()->get_message()->is_fd())
                        {
index e9ee198..1e22d26 100644 (file)
@@ -366,27 +366,21 @@ int low_can_subscription_t::open_socket(low_can_subscription_t &subscription, co
        {
                if(flags & BCM_PROTOCOL)
                {
-                       if( subscription.signal_ != nullptr)
-                       {
-                                       subscription.socket_ = std::make_shared<utils::socketcan_bcm_t>();
-                                       ret = subscription.socket_->open(subscription.signal_->get_message()->get_bus_device_name());
-                       }
-                       else if (! subscription.diagnostic_message_ .empty())
-                       {
-                                       subscription.socket_ = std::make_shared<utils::socketcan_bcm_t>();
-                                       ret = subscription.socket_->open(application_t::instance().get_diagnostic_manager().get_bus_device_name());
-                       }
-                       else if ( !bus_name.empty())
-                       {
-                                       subscription.socket_ = std::make_shared<utils::socketcan_bcm_t>();
-                                       ret = subscription.socket_->open(bus_name);
-                       }
+                       subscription.socket_ = std::make_shared<utils::socketcan_bcm_t>();
+                       if( subscription.signal_ )
+                               ret = subscription.socket_->open(subscription.signal_->get_message()->get_bus_device_name());
+                       else if(! subscription.diagnostic_message_.empty())
+                               ret = subscription.socket_->open(application_t::instance().get_diagnostic_bus());
+                       else if(! bus_name.empty())
+                               ret = subscription.socket_->open(bus_name);
+
                        subscription.index_ = (int)subscription.socket_->socket();
                }
 #ifdef USE_FEATURE_ISOTP
                else if(flags & ISOTP_PROTOCOL)
                {
-                       if(subscription.signal_ != nullptr)
+                       std::shared_ptr<utils::socketcan_isotp_t> socket = std::make_shared<utils::socketcan_isotp_t>();
+                       if(subscription.signal_ )
                        {
                                canid_t rx = NO_CAN_ID;
                                canid_t tx = NO_CAN_ID;
@@ -400,13 +394,11 @@ int low_can_subscription_t::open_socket(low_can_subscription_t &subscription, co
                                        rx = subscription.signal_->get_message()->get_id();
                                        tx = subscription.get_tx_id();
                                }
-                               std::shared_ptr<utils::socketcan_isotp_t> socket = std::make_shared<utils::socketcan_isotp_t>();
                                ret = socket->open(subscription.signal_->get_message()->get_bus_device_name(),rx,tx);
                                subscription.socket_ = socket;
                        }
-                       else if(!bus_name.empty())
+                       else if(! bus_name.empty())
                        {
-                               std::shared_ptr<utils::socketcan_isotp_t> socket = std::make_shared<utils::socketcan_isotp_t>();
                                ret = socket->open(bus_name, subscription.get_rx_id(),subscription.get_tx_id());
                                subscription.socket_ = socket;
                        }