Add VehicleMessage queue methods
authorRomain Forlot <romain.forlot@iot.bzh>
Tue, 14 Feb 2017 19:02:08 +0000 (20:02 +0100)
committerRomain Forlot <romain.forlot@iot.bzh>
Tue, 14 Feb 2017 19:02:08 +0000 (20:02 +0100)
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
src/can-utils.cpp
src/can-utils.h

index 09f4947..f10b968 100644 (file)
@@ -143,7 +143,7 @@ CanMessage_c* CanBus_c::next_can_message()
                return &can_msg;
        }
 
-       return NULL;
+       return nullptr;
 }
 
 void CanBus_c::insert_new_can_message(CanMessage_c *can_msg)
@@ -151,6 +151,28 @@ void CanBus_c::insert_new_can_message(CanMessage_c *can_msg)
        can_message_q.push(can_msg);
 }
 
+/*
+ * Get a VehicleMessage from vehicle_message_q and return it
+ * then point to the next VehicleMessage in queue.
+ * 
+ * Return the next queue element or NULL if queue is empty.
+ */
+openxc_VehicleMessage* CanBus_c::next_vehicle_message()
+{
+       if(! vehicle_message_q.empty())
+       {
+               openxc_VehicleMessage v_msg = vehicle_message_q.front();
+               vehicle_message_q.pop()
+               return &v_msg;
+       }
+
+       return nullptr;
+}
+
+void CanBus_c::insert_new_vehicle_message(openxc_VehicleMessage *v_msg)
+{
+       vehicle_message_q.push(v_msg);
+}
 /********************************************************************************
 *
 *              CanMessage method implementation
index a760af1..e0f6c64 100644 (file)
@@ -112,6 +112,9 @@ class CanBus_c {
 
                CanMessage_c* next_can_message();
                void insert_new_can_message(CanMessage_c *can_msg);
+
+               openxc_VehicleMessage* next_vehicle_message();
+               void insert_new_vehicle_message(openxc_VehicleMessage *v_msg);
 };
 
 /* A compact representation of a single CAN message, meant to be used in in/out