)]}'
{
  "commit": "00cf4669df4ff91c2cdbd88b09cf8e98b5e47c62",
  "tree": "04e1646e53df06e9ee594d9924acdc3e087609f6",
  "parents": [
    "9a5dcfac079a2f80b142427e5007d7165c22c8cc"
  ],
  "author": {
    "name": "gBMC Team",
    "email": "gbmc-core@google.com",
    "time": "Wed Sep 02 12:08:18 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Wed Sep 02 12:09:39 2026 -0700"
  },
  "message": "Add tlBMC sensor value override functionality\n\nIntroduces thread-safe software override support in the `milotic_tlbmc::Sensor` base class and overridden sensors.\n\nKey changes:\n- Adds `SetOverrideValue()`, `ClearOverride()`, `IsOverridden()`, and `GetOverrideValue()` to `Sensor`, guarded by `override_mutex_`.\n- Updates `PollingBaseSensor::GetSensorData()` and `BulkSensor::GetSensorData()` to return the active override value when present.\n- Updates `Sensor::GetSensorAttributesDynamic()` and `BulkSensor::GetSensorAttributesDynamic()` to report `STATUS_READY` when overridden.\n- Shields `SyncPollingSensor::RefreshOnceAsync()` and `AdcSensor::RefreshOnceAsync()` by skipping physical hardware reads while an override is active and immediately dispatching the callback with the overridden reading.\n- Adds comprehensive unit tests in `polling_base_sensor_test.cc` verifying override set, get, clear, dynamic attributes, threshold evaluations, and polling shielding.\n\nGoogle-Bug-Id:550410302\nPiperOrigin-RevId: 975255792\nChange-Id: I3e793b2f0d75a78a4c97e8612b6096d5bf01bd1d\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "483b0115a4d453cd5ba2c8363de6027d746fdbfe",
      "old_mode": 33188,
      "old_path": "tlbmc/sensors/adc_sensor.cc",
      "new_id": "64066f5c3c24f1a42b57158ea34cee81935f1ac2",
      "new_mode": 33188,
      "new_path": "tlbmc/sensors/adc_sensor.cc"
    },
    {
      "type": "modify",
      "old_id": "175fc1ff2f05ec81a152c3cffaec19478027e1f5",
      "old_mode": 33188,
      "old_path": "tlbmc/sensors/polling_base_sensor.h",
      "new_id": "f222612b1079c0428609804f7c4a8b3c38c49de9",
      "new_mode": 33188,
      "new_path": "tlbmc/sensors/polling_base_sensor.h"
    },
    {
      "type": "modify",
      "old_id": "c18f4fdbab139747b0ee6856f7ff32e97f262cf1",
      "old_mode": 33188,
      "old_path": "tlbmc/sensors/sensor.cc",
      "new_id": "f149bfc48058ba3e0b03eaddf637c9caf9924657",
      "new_mode": 33188,
      "new_path": "tlbmc/sensors/sensor.cc"
    },
    {
      "type": "modify",
      "old_id": "bdbb51e5adba2250b48f3428fa542fad51f0e8cd",
      "old_mode": 33188,
      "old_path": "tlbmc/sensors/sensor.h",
      "new_id": "61688db1b14a4431af3ce662750aea3b82b46f6b",
      "new_mode": 33188,
      "new_path": "tlbmc/sensors/sensor.h"
    },
    {
      "type": "modify",
      "old_id": "68f3e7b8be47a6783fb1a392236c9ad654656011",
      "old_mode": 33188,
      "old_path": "tlbmc/sensors/sync_polling_sensor.cc",
      "new_id": "5c8cf057ef7022a9784b9b0053c8e5660a60764d",
      "new_mode": 33188,
      "new_path": "tlbmc/sensors/sync_polling_sensor.cc"
    }
  ]
}
