)]}'
{
  "commit": "4364a9547e95fc8869d72e8718b22f4fd3855eec",
  "tree": "9d9c30dc11592870a404e69f5ea8b2bc90a97232",
  "parents": [
    "cc5a6b4fbc4d6433a40c0993a39b396ff1b70aad"
  ],
  "author": {
    "name": "Sam Leffler",
    "email": "sleffler@google.com",
    "time": "Wed Aug 30 08:57:57 2023 -0700"
  },
  "committer": {
    "name": "Sam Leffler",
    "email": "sleffler@google.com",
    "time": "Tue Sep 05 12:37:59 2023 -0700"
  },
  "message": "storage_capsule: initial implementation\n\nAdd CMD_GET_NAME for constructing the list of builtins,\nCMD_STORAGE_FIND_FILE for finding a file by name, and CMD_STORAGE_READ\nfor reading a page of data from a previously found file.\n\nCMD_GET_NAME takes a storage offset at which to look for a file\nand returns the offset of the next file. If a buffer is allow\u0027d\nCMD_GET_NAME copies the file name into the buffer and returns the\nlength (in bytes).\n\nCMD_STORAGE_FIND_FILE takes a file name and returns a unique \"file\nidentifier\" and the file size in bytes. The file identifier is suitable\nfor issuing CMD_STORAGE_READ requests.\n\nCMD_STORAGE_READ takes a file identifier, an offset into the file, and the\nphsical address of an SMC page to write 4KiB (or the remainder at EOF).\n\nMore:\n- tar searches depend on the per-file magic field being set (true in\n  any POSIX-compliant tarball); otherwise falling back to searching\n  the entire SPI flash (set at 16MiB)\n- the file offset specified for read\u0027s must be SPI flash page-aligned\n- SMC memory bounds are baked into smc_is_page\n- only one app at a time is supported\n\nBug: 294433731\n\nChange-Id: I0b731707890f0506800938f828a0782b0dbc7264\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4051ccb638b288af4326ef32d7dd6c8ed55b7a01",
      "old_mode": 33188,
      "old_path": "capsules/src/lib.rs",
      "new_id": "2e1ce90c8ca948c919f2a46acaeccb5163e3272a",
      "new_mode": 33188,
      "new_path": "capsules/src/lib.rs"
    },
    {
      "type": "modify",
      "old_id": "0dbfed10c3b2116a428b803a65bb87eb3bec2b86",
      "old_mode": 33188,
      "old_path": "capsules/src/storage_capsule.rs",
      "new_id": "db549c7ff1c847329f9ab6052a7caec2f303fcb3",
      "new_mode": 33188,
      "new_path": "capsules/src/storage_capsule.rs"
    },
    {
      "type": "modify",
      "old_id": "aa777b353009c780d6d18f134196f1f8f8c0b392",
      "old_mode": 33188,
      "old_path": "config/src/lib.rs",
      "new_id": "14d4d1997a2fad1bf59f54d404c97bbc74e7c6bd",
      "new_mode": 33188,
      "new_path": "config/src/lib.rs"
    },
    {
      "type": "modify",
      "old_id": "0d96a7e3aa0462e76bf1c5e510fdad7eb3ed6e28",
      "old_mode": 33188,
      "old_path": "platform/src/main.rs",
      "new_id": "2ce5d0990d4403230ececafd6684c4c1f1e4c5ef",
      "new_mode": 33188,
      "new_path": "platform/src/main.rs"
    },
    {
      "type": "modify",
      "old_id": "d21d6e9fd91c69fdb84f10c092d9dd4c6d485066",
      "old_mode": 33188,
      "old_path": "utils/src/lib.rs",
      "new_id": "25f0f1f0500894d9a7fbe250fc0198e790d37793",
      "new_mode": 33188,
      "new_path": "utils/src/lib.rs"
    }
  ]
}
