)]}'
{
  "commit": "c69f9589cc7543baba08dbabdb5c30104fadaa34",
  "tree": "15cb64369c6f7e50a399c5b43e7b1a3b917ee028",
  "parents": [
    "c219b5d8a9536cc87e9c53e8389e59c706ba3f8e"
  ],
  "author": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Fri Oct 18 13:13:28 2024 +0100"
  },
  "committer": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Fri Oct 18 13:13:51 2024 +0100"
  },
  "message": "[usb] Expose USB device descriptor and strings via settings\n\nAllow scripts to read basic information from USB device descriptors\nvia the settings mechanism.  For example:\n\n  echo USB vendor ID: ${usb/${busloc}.8.2}\n  echo USB device ID: ${usb/${busloc}.10.2}\n  echo USB manufacturer name: ${usb/${busloc}.14.0}\n\nThe general syntax is\n\n  usb/\u003cbus:dev\u003e.\u003coffset\u003e.\u003clength\u003e\n\nwhere bus:dev is the USB bus:device address (as obtained via the\n\"usbscan\" command, or from e.g. ${net0/busloc} for a USB network\ndevice), and \u003coffset\u003e and \u003clength\u003e select the required portion of the\nUSB device descriptor.\n\nFollowing the usage of SMBIOS settings tags, a \u003clength\u003e of zero may be\nused to indicate that the byte at \u003coffset\u003e contains a USB string\ndescriptor index, and an \u003coffset\u003e of zero may be used to indicate that\nthe \u003clength\u003e contains a literal USB string descriptor index.\n\nSince the byte at offset zero can never contain a string index, and a\nliteral string index can never be zero, the combination of both\n\u003clength\u003e and \u003coffset\u003e being zero may be used to indicate that the\nentire device descriptor is to be read as a raw hex dump.\n\nSigned-off-by: Michael Brown \u003cmcb30@ipxe.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b679aeb2743ccb3272c27e03d9d915212d2d5d78",
      "old_mode": 33188,
      "old_path": "src/config/config_usb.c",
      "new_id": "10dec221a226d095d263c1c0cf5f24c17b6b073f",
      "new_mode": 33188,
      "new_path": "src/config/config_usb.c"
    },
    {
      "type": "modify",
      "old_id": "d7f787d38e762a387b57239f6bfab0e1da54ae6f",
      "old_mode": 33188,
      "old_path": "src/config/settings.h",
      "new_id": "7b4af4fdf7206518b00e2b338fd349e0dc1fc59d",
      "new_mode": 33188,
      "new_path": "src/config/settings.h"
    },
    {
      "type": "modify",
      "old_id": "e1e7d51f71e4587ae0febf081c1f9f48e49e8024",
      "old_mode": 33188,
      "old_path": "src/drivers/bus/usb.c",
      "new_id": "b3b361b0d7a908c3254cf5157037191b22c992e6",
      "new_mode": 33188,
      "new_path": "src/drivers/bus/usb.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "db6f94d8afb6b45dc6c4b2c88d7b46a9013129c6",
      "new_mode": 33188,
      "new_path": "src/drivers/bus/usb_settings.c"
    },
    {
      "type": "modify",
      "old_id": "ab1f9837017346a8a7664dd3d71244da4b0e6db5",
      "old_mode": 33188,
      "old_path": "src/drivers/net/ecm.c",
      "new_id": "7b3e92b9b2d740d5ce3a0cad470e5a43568ab6c9",
      "new_mode": 33188,
      "new_path": "src/drivers/net/ecm.c"
    },
    {
      "type": "modify",
      "old_id": "01a2be6543706fc7e3d06c10c69f91ce98c6096d",
      "old_mode": 33188,
      "old_path": "src/include/ipxe/errfile.h",
      "new_id": "6183e5b7e076394ff0d2b86cb0d5e1e294f22919",
      "new_mode": 33188,
      "new_path": "src/include/ipxe/errfile.h"
    }
  ]
}
