LCOV - code coverage report
Current view: top level - ffb - FFBMetadataManager.cpp (source / functions) Coverage Total Hit
Test: coverage_filtered.info Lines: 100.0 % 31 31
Test Date: 2026-03-20 13:12:51 Functions: 100.0 % 2 2
Branches: 71.4 % 42 30

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

Generated by: LCOV version 2.0-1