LCOV - code coverage report
Current view: top level - applications/instrument-cluster/src - DataManager.cpp (source / functions) Coverage Total Hit
Test: coverage.info Lines: 0.0 % 50 0
Test Date: 2025-06-11 17:47:30 Functions: 0.0 % 8 0
Branches: - 0 0

             Branch data     Line data    Source code
       1                 :             : #include "DataManager.hpp"
       2                 :             : 
       3                 :             : #include "applications/instrument-cluster/mq/ZMQSubscriber.hpp"
       4                 :             : 
       5                 :           0 : DataManager::DataManager(QObject* parent) : QObject{parent}, context(1) {
       6                 :             :     // ZeroMQ setup (in a separate thread)
       7                 :             :     // move the task object to the thread BEFORE connecting any signal/slots
       8                 :           0 :     thread = new QThread(this);
       9                 :             :     std::unique_ptr<MQ::ZeroMQSocket> sub_socket =
      10                 :           0 :         std::make_unique<MQ::ZeroMQSocket>(context, zmq::socket_type::sub);
      11                 :           0 :     sub_socket->bind("ipc:///tmp/speed.ipc");
      12                 :           0 :     worker = new ZmqSubscriber(std::move(sub_socket));
      13                 :           0 :     worker->moveToThread(thread);
      14                 :             : 
      15                 :           0 :     connect(this, &DataManager::startZeroMQ, worker, &ZmqSubscriber::checkForMessages);
      16                 :           0 :     connect(worker, &ZmqSubscriber::messageReceived, this, &DataManager::updateData);
      17                 :           0 :     connect(worker, &ZmqSubscriber::batteryMessageReceived, this, &DataManager::setBattery);
      18                 :           0 :     connect(worker, &ZmqSubscriber::temperatureMessageReceived, this, &DataManager::setTemperature);
      19                 :             : 
      20                 :             :     // automatically delete thread and task object when work is done:
      21                 :           0 :     connect(thread, &QThread::finished, worker, &DataManager::deleteLater);  // Clean up
      22                 :           0 :     connect(thread, &QThread::finished, this, &DataManager::deleteLater);
      23                 :             : 
      24                 :             :     // Start ZeroMQ
      25                 :           0 :     thread->start();
      26                 :           0 :     emit startZeroMQ();
      27                 :           0 : }
      28                 :             : 
      29                 :           0 : DataManager::~DataManager() {
      30                 :           0 :     qDebug() << "DataManager::shutting down context";
      31                 :           0 :     context.shutdown();
      32                 :           0 :     qDebug() << "DataManager::quitting thread";
      33                 :           0 :     thread->quit();
      34                 :           0 :     qDebug() << "DataManager::waiting thread finishes";
      35                 :           0 :     thread->wait();  // Ensure thread finishes
      36                 :           0 :     qDebug() << "DataManager::closing context";
      37                 :           0 :     context.close();
      38                 :           0 :     qDebug() << "DataManager::finished";
      39                 :           0 : }
      40                 :             : 
      41                 :           0 : void DataManager::setSpeed(float speed) {
      42                 :           0 :     if (m_speed != speed) {
      43                 :           0 :         m_speed = speed;
      44                 :           0 :         emit speedChanged();
      45                 :             :     }
      46                 :           0 : }
      47                 :             : 
      48                 :           0 : void DataManager::setRpm(float rpm) {
      49                 :           0 :     if (m_rpm != rpm) {
      50                 :           0 :         m_rpm = rpm;
      51                 :           0 :         emit rpmChanged();
      52                 :             :     }
      53                 :           0 : }
      54                 :             : 
      55                 :           0 : void DataManager::setBattery(uint8_t battery) {
      56                 :           0 :     if (m_battery != battery) {
      57                 :           0 :         m_battery = battery;
      58                 :           0 :         emit batteryChanged();
      59                 :             :     }
      60                 :           0 : }
      61                 :             : 
      62                 :           0 : void DataManager::setTemperature(uint8_t temperature) {
      63                 :           0 :     if (m_temperature != temperature) {
      64                 :           0 :         m_temperature = temperature;
      65                 :           0 :         emit temperatureChanged();
      66                 :             :     }
      67                 :           0 : }
      68                 :             : 
      69                 :           0 : void DataManager::updateData(float speed, float rpm) {
      70                 :           0 :     setSpeed(speed);
      71                 :           0 :     setRpm(rpm);
      72                 :           0 : }
        

Generated by: LCOV version 2.0-1