)]}'
{
  "commit": "c60c7bac231cee58db0fa8bdd3c3fd251dad2ee8",
  "tree": "4908cd52200d66201ea922ec654fd94ec8baa18e",
  "parents": [
    "b7cda213b0c3a75bf04b3f88179f97df6390d9db"
  ],
  "author": {
    "name": "hathach",
    "email": "thach@tinyusb.org",
    "time": "Thu Sep 03 18:19:17 2026 +0700"
  },
  "committer": {
    "name": "hathach",
    "email": "thach@tinyusb.org",
    "time": "Sat Sep 05 15:25:15 2026 +0700"
  },
  "message": "examples: write the host cdc console over RTT when that is the console\n\nconsole_write() forwards what the attached CDC device sent back to the\nboard\u0027s console, and reached for board_uart_write() directly to stay\nnon-blocking. On a board whose console is the debug probe there is no UART:\nboard_uart_write() is a stub returning -1, so everything the device echoed was\ndropped, and the do/while loop retried a write that could never make progress\nand spun until more data arrived.\n\nSend it through SEGGER_RTT_Write() on LOGGER_RTT builds -- already\nnon-blocking in the default NO_BLOCK_SKIP mode, which is what the UART path\nwanted board_uart_write() for.\n\nThe retry is also bounded now. board_uart_write() is only documented to\nreturn the number of bytes sent, and the stubs disagree on how they say \"no\nconsole here\" -- lpc40 returns -1, apm32f0xx returns 0 -- so the loop cannot\ndecide from the return value alone when to stop. It gives up after 10 ms\nwithout progress instead, which no draining console ever hits, and keeps the\nnegative return as a fast path so a stub UART does not cost that wait on\nevery read.\n\nThe RTT header include lives in board_api.h so any example can reach it; the\ninclude path only exists when LOGGER\u003drtt defines LOGGER_RTT.\n\nhost/cdc_msc_hid now passes on ea4088_quickstart, whose probe (LPC-Link2) has\nno VCOM: the CDC echo round-trips through a CH340 with TX-RX shorted.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e6c190715dfeb38fbd4ff90fdf9b1025837f13b4",
      "old_mode": 33188,
      "old_path": "examples/host/cdc_msc_hid/src/cdc_app.c",
      "new_id": "b77f7b00e87170ea42d44452c057b98b1758ea33",
      "new_mode": 33188,
      "new_path": "examples/host/cdc_msc_hid/src/cdc_app.c"
    },
    {
      "type": "modify",
      "old_id": "73c06078a30c3aa277382aa9f35df6c9845b059c",
      "old_mode": 33188,
      "old_path": "hw/bsp/board_api.h",
      "new_id": "27316af09ce382ac16eceb6bda6627741f8d54d1",
      "new_mode": 33188,
      "new_path": "hw/bsp/board_api.h"
    }
  ]
}
