LCOV - code coverage report
Current view: top level - ffb - FFBMetadataManager.cpp (source / functions) Coverage Total Hit
Test: coverage_filtered.info Lines: 100.0 % 34 34
Test Date: 2026-03-18 19:01:10 Functions: 100.0 % 2 2
Branches: 64.5 % 62 40

             Branch data     Line data    Source code
       1                 :             : #include "FFBMetadataManager.h"
       2                 :             : #include "logging/Logger.h"
       3                 :             : #include "io/RestApiProvider.h"
       4                 :             : 
       5                 :        3166 : bool FFBMetadataManager::UpdateMetadata(const SharedMemoryObjectOut& data) {
       6                 :        3166 :     const char* trackName = data.scoring.scoringInfo.mTrackName;
       7                 :        3166 :     const char* vehicleClass = nullptr;
       8                 :        3166 :     const char* vehicleName = nullptr;
       9                 :             : 
      10         [ +  + ]:        3166 :     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                 :        3166 :     return UpdateInternal(vehicleClass, vehicleName, trackName);
      26                 :             : }
      27                 :             : 
      28                 :       19131 : bool FFBMetadataManager::UpdateInternal(const char* vehicleClass, const char* vehicleName, const char* trackName) {
      29         [ +  - ]:       19131 :     std::lock_guard<std::mutex> lock(m_mutex);
      30                 :       19131 :     bool changed = false;
      31                 :             : 
      32   [ +  +  +  + ]:       19131 :     if (vehicleName && std::strcmp(vehicleName, m_vehicle_name) != 0) {
      33                 :         115 :         StringUtils::SafeCopy(m_vehicle_name, STR_BUF_64, vehicleName);
      34                 :         115 :         changed = true;
      35                 :             : 
      36                 :             :         // Issue #368: Request manufacturer info from REST API on car change
      37   [ +  -  +  - ]:         115 :         RestApiProvider::Get().ResetManufacturer();
      38         [ +  - ]:         115 :         RestApiProvider::Get().ResetSteeringRange(); // Issue #379
      39   [ +  -  +  -  :         345 :         RestApiProvider::Get().RequestManufacturer(6397, m_vehicle_name); // TODO: use configured port
                   +  - ]
      40                 :             :     }
      41                 :             : 
      42   [ +  +  +  -  :       26829 :     if (vehicleClass && std::string(vehicleClass) != m_current_class_name) {
          +  +  +  +  +  
          +  +  +  -  -  
                   -  - ]
      43         [ +  - ]:         127 :         m_current_class_name = vehicleClass;
      44                 :         127 :         changed = true;
      45                 :             :     }
      46                 :             : 
      47         [ +  + ]:       19131 :     if (changed) {
      48         [ +  - ]:         131 :         m_current_vclass = ParseVehicleClass(m_current_class_name.c_str(), m_vehicle_name);
      49                 :             :     }
      50                 :             : 
      51   [ +  +  +  + ]:       19131 :     if (trackName && std::strcmp(trackName, m_track_name) != 0) {
      52                 :         274 :         StringUtils::SafeCopy(m_track_name, STR_BUF_64, trackName);
      53                 :             :     }
      54                 :             : 
      55                 :       19131 :     return changed;
      56                 :       19131 : }
        

Generated by: LCOV version 2.0-1