LCOV - code coverage report
Current view: top level - ffb - FFBMetadataManager.cpp (source / functions) Coverage Total Hit
Test: coverage_filtered.info Lines: 100.0 % 33 33
Test Date: 2026-03-16 13:51:44 Functions: 100.0 % 2 2
Branches: 65.0 % 60 39

             Branch data     Line data    Source code
       1                 :             : #include "FFBMetadataManager.h"
       2                 :             : #include "logging/Logger.h"
       3                 :             : #include "io/RestApiProvider.h"
       4                 :             : 
       5                 :        3133 : bool FFBMetadataManager::UpdateMetadata(const SharedMemoryObjectOut& data) {
       6                 :        3133 :     const char* trackName = data.scoring.scoringInfo.mTrackName;
       7                 :        3133 :     const char* vehicleClass = nullptr;
       8                 :        3133 :     const char* vehicleName = nullptr;
       9                 :             : 
      10         [ +  + ]:        3133 :     if (data.telemetry.playerHasVehicle) {
      11                 :           2 :         int idx = data.telemetry.playerVehicleIdx;
      12                 :           2 :         const VehicleScoringInfoV01& veh = data.scoring.vehScoringInfo[idx];
      13                 :           2 :         vehicleClass = veh.mVehicleClass;
      14                 :           2 :         vehicleName = veh.mVehicleName;
      15                 :             : 
      16                 :             :         // Issue #368: Log all fields that might contain brand info if a change is detected
      17   [ +  -  +  -  :           2 :         if (vehicleName && m_last_logged_veh != vehicleName) {
                   +  - ]
      18   [ +  -  +  - ]:           2 :             std::string restBrand = RestApiProvider::Get().GetManufacturer();
      19         [ +  - ]:           2 :             Logger::Get().LogFile("[Metadata] Vehicle Change Detected: '%s' (Class: '%s', PitGroup: '%s', Filename: '%s', REST Brand: '%s')",
      20         [ +  - ]:           2 :                 vehicleName, vehicleClass, veh.mPitGroup, veh.mVehFilename, restBrand.c_str());
      21         [ +  - ]:           2 :             m_last_logged_veh = vehicleName;
      22                 :           2 :         }
      23                 :             :     }
      24                 :             : 
      25                 :        3133 :     return UpdateInternal(vehicleClass, vehicleName, trackName);
      26                 :             : }
      27                 :             : 
      28                 :       18974 : bool FFBMetadataManager::UpdateInternal(const char* vehicleClass, const char* vehicleName, const char* trackName) {
      29         [ +  - ]:       18974 :     std::lock_guard<std::mutex> lock(m_mutex);
      30                 :       18974 :     bool changed = false;
      31                 :             : 
      32   [ +  +  +  + ]:       18974 :     if (vehicleName && std::strcmp(vehicleName, m_vehicle_name) != 0) {
      33                 :         100 :         StringUtils::SafeCopy(m_vehicle_name, STR_BUF_64, vehicleName);
      34                 :         100 :         changed = true;
      35                 :             : 
      36                 :             :         // Issue #368: Request manufacturer info from REST API on car change
      37   [ +  -  +  - ]:         100 :         RestApiProvider::Get().ResetManufacturer();
      38   [ +  -  +  -  :         300 :         RestApiProvider::Get().RequestManufacturer(6397, m_vehicle_name); // TODO: use configured port
                   +  - ]
      39                 :             :     }
      40                 :             : 
      41   [ +  +  +  -  :       26456 :     if (vehicleClass && std::string(vehicleClass) != m_current_class_name) {
          +  +  +  +  +  
          +  +  +  -  -  
                   -  - ]
      42         [ +  - ]:         112 :         m_current_class_name = vehicleClass;
      43                 :         112 :         changed = true;
      44                 :             :     }
      45                 :             : 
      46         [ +  + ]:       18974 :     if (changed) {
      47         [ +  - ]:         116 :         m_current_vclass = ParseVehicleClass(m_current_class_name.c_str(), m_vehicle_name);
      48                 :             :     }
      49                 :             : 
      50   [ +  +  +  + ]:       18974 :     if (trackName && std::strcmp(trackName, m_track_name) != 0) {
      51                 :         267 :         StringUtils::SafeCopy(m_track_name, STR_BUF_64, trackName);
      52                 :             :     }
      53                 :             : 
      54                 :       18974 :     return changed;
      55                 :       18974 : }
        

Generated by: LCOV version 2.0-1