)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"dd9e2bfab9ac1885508797a03dece6f4ccefaa2c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"6c4878d6_731df60d","updated":"2022-04-22 09:49:42.000000000","message":"forgot:\nmissing the file in tcl/interface/?\nAny vid/pid to add in contrib/60-openocd.rules?","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"1705d1ae_2f136cf1","updated":"2022-04-22 09:44:57.000000000","message":"thanks, some issue but nothing scaring.\nMissing documentation...","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"aefc1bd5b0d1724823a33a923a0061f4bd0a8f42","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"69432ed2_3999b74c","in_reply_to":"6c4878d6_731df60d","updated":"2022-04-22 10:02:02.000000000","message":"Yes. I added now.","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"ef197b3fd57db588240b832e31f44d0bbdba668e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"f717fda6_73ccdfbd","updated":"2022-06-15 22:10:05.000000000","message":"I think it\u0027s almost done. few point to close, below","commit_id":"7c1c79be0b8adcdcfe14283478dc5aca2d7b0554"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"1591d469dcf1f845569ef7e8c0366d40180cc583","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"3fb7a6fb_02f91773","in_reply_to":"f717fda6_73ccdfbd","updated":"2022-06-16 19:18:37.000000000","message":"Thank you Antonio.","commit_id":"7c1c79be0b8adcdcfe14283478dc5aca2d7b0554"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4a23278a7fb6b1fbfeac5684247a52e51ac0aedf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"e51acef7_1499fefd","updated":"2022-06-16 21:12:20.000000000","message":"Please review the loop boundaries","commit_id":"2117e247c0ab0e18cb6b99e69b786cf561a5bf30"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"872e76e380b8f7d6a4aaa52e60a0f6627a0203a5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"f85d3a56_22744def","updated":"2022-06-18 22:37:05.000000000","message":"One typo. Then I\u0027m ok with this version\nThanks for your effort","commit_id":"1e79367588483f9c40f14d2e038de7dd016f556d"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"48eea6fb9228409d82531d21549d6561dc24fb6c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"604c592d_5ab28ca1","in_reply_to":"f85d3a56_22744def","updated":"2022-06-18 22:56:08.000000000","message":"I really appreciated your review skills. You look like a human debugger :) \nThanks a lot for your patience.","commit_id":"1e79367588483f9c40f14d2e038de7dd016f556d"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"b0a98dd348ec0ff6c71503effac3a519659da355","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"711c2621_cc00e964","updated":"2022-06-19 16:48:28.000000000","message":"I think this is also done!\nI will merge the ESP32 next weekend 25th. This one one week later, if no one has concerns","commit_id":"fe25e1db84a18d4ed3f49ac88241a3337cf5ac9b"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"a6a118596a1814d7bb271af108ee2bc7f42f2d48","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"9d919c3d_d3db6065","updated":"2022-06-24 20:56:18.000000000","message":"Antonio, small addition to doc. ","commit_id":"6b26ab6bbbd77c199d525c80861fcf90f445b1ae"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"55eac4fc15fe98c04748c1af76906a5b2e8677db","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"ef9f8383_9618a9e3","updated":"2022-06-25 14:24:40.000000000","message":"thanks","commit_id":"6b26ab6bbbd77c199d525c80861fcf90f445b1ae"}],"configure.ac":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":124,"context_line":"\t[[rlink], [Raisonance RLink JTAG Programmer], [RLINK]],"},{"line_number":125,"context_line":"\t[[usbprog], [USBProg JTAG Programmer], [USBPROG]],"},{"line_number":126,"context_line":"\t[[aice], [Andes JTAG Programmer], [AICE]],"},{"line_number":127,"context_line":"  [[esp_usb_jtag], [Espressif JTAG Programmer], [ESP_USB_JTAG]]])"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"m4_define([HIDAPI_ADAPTERS],"},{"line_number":130,"context_line":"\t[[[cmsis_dap], [CMSIS-DAP Compliant Debugger], [CMSIS_DAP_HID]],"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"63d0ae62_3d678316","line":127,"updated":"2022-04-22 09:44:57.000000000","message":"fix the indentation, the other lines use one TAB","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":124,"context_line":"\t[[rlink], [Raisonance RLink JTAG Programmer], [RLINK]],"},{"line_number":125,"context_line":"\t[[usbprog], [USBProg JTAG Programmer], [USBPROG]],"},{"line_number":126,"context_line":"\t[[aice], [Andes JTAG Programmer], [AICE]],"},{"line_number":127,"context_line":"  [[esp_usb_jtag], [Espressif JTAG Programmer], [ESP_USB_JTAG]]])"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"m4_define([HIDAPI_ADAPTERS],"},{"line_number":130,"context_line":"\t[[[cmsis_dap], [CMSIS-DAP Compliant Debugger], [CMSIS_DAP_HID]],"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"eb2b13ed_df8da8d9","line":127,"in_reply_to":"63d0ae62_3d678316","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":699,"context_line":"  build_bitq\u003dyes"},{"line_number":700,"context_line":"])"},{"line_number":701,"context_line":""},{"line_number":702,"context_line":" # esp-usb-jtag also needs the bitq module"},{"line_number":703,"context_line":"AS_IF([test \"x$enable_esp_usb_jtag\" !\u003d \"xno\"], ["},{"line_number":704,"context_line":"  build_bitq\u003dyes"},{"line_number":705,"context_line":"])"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"79dda782_b3ab2d25","line":702,"updated":"2022-04-22 09:44:57.000000000","message":"indentation, remove the space before \u0027#\u0027","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":699,"context_line":"  build_bitq\u003dyes"},{"line_number":700,"context_line":"])"},{"line_number":701,"context_line":""},{"line_number":702,"context_line":" # esp-usb-jtag also needs the bitq module"},{"line_number":703,"context_line":"AS_IF([test \"x$enable_esp_usb_jtag\" !\u003d \"xno\"], ["},{"line_number":704,"context_line":"  build_bitq\u003dyes"},{"line_number":705,"context_line":"])"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"375853dd_96601d31","line":702,"in_reply_to":"79dda782_b3ab2d25","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"5d03a1f157185bf7be6bc6aaf8949c1302de41f1","unresolved":true,"context_lines":[{"line_number":704,"context_line":"  build_bitq\u003dyes"},{"line_number":705,"context_line":"])"},{"line_number":706,"context_line":""},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"AM_CONDITIONAL([RELEASE], [test \"x$build_release\" \u003d \"xyes\"])"},{"line_number":709,"context_line":"AM_CONDITIONAL([PARPORT], [test \"x$build_parport\" \u003d \"xyes\"])"},{"line_number":710,"context_line":"AM_CONDITIONAL([DUMMY], [test \"x$build_dummy\" \u003d \"xyes\"])"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"817d2349_d31fdfe9","line":707,"updated":"2022-05-01 15:26:29.000000000","message":"please remove one of the two empty lines","commit_id":"48ec51dbaec80350caa2cd777d2c095b2281d304"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"298bc97e456b73ff520f12035a123933b4a8d94a","unresolved":false,"context_lines":[{"line_number":704,"context_line":"  build_bitq\u003dyes"},{"line_number":705,"context_line":"])"},{"line_number":706,"context_line":""},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"AM_CONDITIONAL([RELEASE], [test \"x$build_release\" \u003d \"xyes\"])"},{"line_number":709,"context_line":"AM_CONDITIONAL([PARPORT], [test \"x$build_parport\" \u003d \"xyes\"])"},{"line_number":710,"context_line":"AM_CONDITIONAL([DUMMY], [test \"x$build_dummy\" \u003d \"xyes\"])"}],"source_content_type":"application/octet-stream","patch_set":6,"id":"f77b85f7_90b56ce5","line":707,"in_reply_to":"817d2349_d31fdfe9","updated":"2022-05-01 22:33:29.000000000","message":"Done","commit_id":"48ec51dbaec80350caa2cd777d2c095b2281d304"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"51b366078bc4e84fd935b9e1458f77397c7cf5b4","unresolved":true,"context_lines":[{"line_number":123,"context_line":"\t[[armjtagew], [Olimex ARM-JTAG-EW Programmer], [ARMJTAGEW]],"},{"line_number":124,"context_line":"\t[[rlink], [Raisonance RLink JTAG Programmer], [RLINK]],"},{"line_number":125,"context_line":"\t[[usbprog], [USBProg JTAG Programmer], [USBPROG]],"},{"line_number":126,"context_line":"  [[esp_usb_jtag], [Espressif JTAG Programmer], [ESP_USB_JTAG]]])"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"m4_define([DEPRECATED_USB1_ADAPTERS],"},{"line_number":129,"context_line":"\t[[[aice], [Andes JTAG Programmer (deprecated)], [AICE]]])"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"ebd47dcf_bc324c64","line":126,"updated":"2022-05-15 20:54:38.000000000","message":"keep same indentation (one TAB) as the previous lines. Here I see two space chars","commit_id":"25c99762bc5e0b76ac42862fb7436da374cdb797"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"914414c9edeac26587eb873687ec7f3df9dc7800","unresolved":false,"context_lines":[{"line_number":123,"context_line":"\t[[armjtagew], [Olimex ARM-JTAG-EW Programmer], [ARMJTAGEW]],"},{"line_number":124,"context_line":"\t[[rlink], [Raisonance RLink JTAG Programmer], [RLINK]],"},{"line_number":125,"context_line":"\t[[usbprog], [USBProg JTAG Programmer], [USBPROG]],"},{"line_number":126,"context_line":"  [[esp_usb_jtag], [Espressif JTAG Programmer], [ESP_USB_JTAG]]])"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"m4_define([DEPRECATED_USB1_ADAPTERS],"},{"line_number":129,"context_line":"\t[[[aice], [Andes JTAG Programmer (deprecated)], [AICE]]])"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"666211f7_fd1e42e6","line":126,"in_reply_to":"ebd47dcf_bc324c64","updated":"2022-05-23 14:40:04.000000000","message":"Done","commit_id":"25c99762bc5e0b76ac42862fb7436da374cdb797"}],"contrib/60-openocd.rules":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"5d03a1f157185bf7be6bc6aaf8949c1302de41f1","unresolved":true,"context_lines":[{"line_number":227,"context_line":"ATTRS{product}\u003d\u003d\"*CMSIS-DAP*\", MODE\u003d\"660\", GROUP\u003d\"plugdev\", TAG+\u003d\"uaccess\""},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"# Espressif USB JTAG/serial debug unit"},{"line_number":230,"context_line":"ATTRS{idVendor}\u003d\u003d\"303a\", ATTRS{idProduct}\u003d\u003d\"1001\", MODE\u003d\"660\", GROUP\u003d\"plugdev\", TAG+\u003d\"uaccess\""},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"# Espressif USB Bridge"},{"line_number":233,"context_line":"ATTRS{idVendor}\u003d\u003d\"303a\", ATTRS{idProduct}\u003d\u003d\"1002\", MODE\u003d\"660\", GROUP\u003d\"plugdev\", TAG+\u003d\"uaccess\""}],"source_content_type":"application/octet-stream","patch_set":6,"id":"a36c38c3_e007cff8","line":230,"updated":"2022-05-01 15:26:29.000000000","message":"line 11 reports \"Please keep this list sorted by VID:PID\"","commit_id":"48ec51dbaec80350caa2cd777d2c095b2281d304"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"f54c9c4b39bb9a4bb920802f8d400b19171a79e8","unresolved":true,"context_lines":[{"line_number":227,"context_line":"ATTRS{product}\u003d\u003d\"*CMSIS-DAP*\", MODE\u003d\"660\", GROUP\u003d\"plugdev\", TAG+\u003d\"uaccess\""},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"# Espressif USB JTAG/serial debug unit"},{"line_number":230,"context_line":"ATTRS{idVendor}\u003d\u003d\"303a\", ATTRS{idProduct}\u003d\u003d\"1001\", MODE\u003d\"660\", GROUP\u003d\"plugdev\", TAG+\u003d\"uaccess\""},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"# Espressif USB Bridge"},{"line_number":233,"context_line":"ATTRS{idVendor}\u003d\u003d\"303a\", ATTRS{idProduct}\u003d\u003d\"1002\", MODE\u003d\"660\", GROUP\u003d\"plugdev\", TAG+\u003d\"uaccess\""}],"source_content_type":"application/octet-stream","patch_set":6,"id":"66032af0_31d2549d","line":230,"in_reply_to":"0e6348c7_2b3fecf6","updated":"2022-05-06 20:41:24.000000000","message":"not fixed. I mean that these 2 new entries with\nATTRS{idVendor}\u003d\u003d\"303a\" ...\nshould be placed after line 218, after\nATTRS{idVendor}\u003d\u003d\"2aec\" ...\nand before\nATTRS{idVendor}\u003d\u003d\"9e88\" ...","commit_id":"48ec51dbaec80350caa2cd777d2c095b2281d304"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"d6e291bfe4826d0975b71b5bc81e8257c2fe6cd6","unresolved":false,"context_lines":[{"line_number":227,"context_line":"ATTRS{product}\u003d\u003d\"*CMSIS-DAP*\", MODE\u003d\"660\", GROUP\u003d\"plugdev\", TAG+\u003d\"uaccess\""},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"# Espressif USB JTAG/serial debug unit"},{"line_number":230,"context_line":"ATTRS{idVendor}\u003d\u003d\"303a\", ATTRS{idProduct}\u003d\u003d\"1001\", MODE\u003d\"660\", GROUP\u003d\"plugdev\", TAG+\u003d\"uaccess\""},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"# Espressif USB Bridge"},{"line_number":233,"context_line":"ATTRS{idVendor}\u003d\u003d\"303a\", ATTRS{idProduct}\u003d\u003d\"1002\", MODE\u003d\"660\", GROUP\u003d\"plugdev\", TAG+\u003d\"uaccess\""}],"source_content_type":"application/octet-stream","patch_set":6,"id":"6fe6537f_e4484174","line":230,"in_reply_to":"66032af0_31d2549d","updated":"2022-05-06 21:48:24.000000000","message":"Now its ok. btw, line 198,199,200 and 203 breaks this rule.","commit_id":"48ec51dbaec80350caa2cd777d2c095b2281d304"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"298bc97e456b73ff520f12035a123933b4a8d94a","unresolved":false,"context_lines":[{"line_number":227,"context_line":"ATTRS{product}\u003d\u003d\"*CMSIS-DAP*\", MODE\u003d\"660\", GROUP\u003d\"plugdev\", TAG+\u003d\"uaccess\""},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"# Espressif USB JTAG/serial debug unit"},{"line_number":230,"context_line":"ATTRS{idVendor}\u003d\u003d\"303a\", ATTRS{idProduct}\u003d\u003d\"1001\", MODE\u003d\"660\", GROUP\u003d\"plugdev\", TAG+\u003d\"uaccess\""},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"# Espressif USB Bridge"},{"line_number":233,"context_line":"ATTRS{idVendor}\u003d\u003d\"303a\", ATTRS{idProduct}\u003d\u003d\"1002\", MODE\u003d\"660\", GROUP\u003d\"plugdev\", TAG+\u003d\"uaccess\""}],"source_content_type":"application/octet-stream","patch_set":6,"id":"0e6348c7_2b3fecf6","line":230,"in_reply_to":"a36c38c3_e007cff8","updated":"2022-05-01 22:33:29.000000000","message":"Done","commit_id":"48ec51dbaec80350caa2cd777d2c095b2281d304"}],"src/jtag/drivers/esp_usb_jtag.c":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":22,"context_line":"#endif"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"#if IS_CYGWIN \u003d\u003d 1"},{"line_number":25,"context_line":"#include \"windows.h\""},{"line_number":26,"context_line":"#endif"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"#include \u003cjtag/adapter.h\u003e"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"5dba214f_f05e79a4","line":25,"updated":"2022-04-22 09:44:57.000000000","message":"I cannot find any windows specific stuff in this code, but I haven\u0027t tried to compile without this.\nIs is needed?","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"e5f2f0140cfb0f1618ae40bd9dde85f101ec3893","unresolved":false,"context_lines":[{"line_number":22,"context_line":"#endif"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"#if IS_CYGWIN \u003d\u003d 1"},{"line_number":25,"context_line":"#include \"windows.h\""},{"line_number":26,"context_line":"#endif"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"#include \u003cjtag/adapter.h\u003e"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"6ecc2910_64b1b87c","line":25,"in_reply_to":"58a97702_349fe032","updated":"2022-05-09 22:47:14.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":true,"context_lines":[{"line_number":22,"context_line":"#endif"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"#if IS_CYGWIN \u003d\u003d 1"},{"line_number":25,"context_line":"#include \"windows.h\""},{"line_number":26,"context_line":"#endif"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"#include \u003cjtag/adapter.h\u003e"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"58a97702_349fe032","line":25,"in_reply_to":"5dba214f_f05e79a4","updated":"2022-04-23 19:03:59.000000000","message":"Not sure. Let me compile without it.","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":77,"context_line":"4. CMD_REP with r1\u003d0 and r0\u003d1 - This will execute 1. another (0*2+1)\u003c\u003c(2*2)\u003d8 time."},{"line_number":78,"context_line":"5. CMD_FLUSH - This will flush the IN pipeline."},{"line_number":79,"context_line":"6. CMD_CLK - This will execute one CMD_CLK"},{"line_number":80,"context_line":"7. CMD_REP with r1\u003d1 and r0\u003d0 - This will execute 1. another (1*2+0)\u003c\u003c(2*0)\u003d2 times."},{"line_number":81,"context_line":"8. CMD_FLUSH - This will flush the IN pipeline."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Note that the net effect of the repetitions is that command 1 is executed (1+1+4+8\u003d) 14 times and"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"cf72c446_fc0cd1c8","line":80,"updated":"2022-04-22 09:44:57.000000000","message":"are you sure this will execute 1.? shouldn\u0027t it execute 6.?","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":77,"context_line":"4. CMD_REP with r1\u003d0 and r0\u003d1 - This will execute 1. another (0*2+1)\u003c\u003c(2*2)\u003d8 time."},{"line_number":78,"context_line":"5. CMD_FLUSH - This will flush the IN pipeline."},{"line_number":79,"context_line":"6. CMD_CLK - This will execute one CMD_CLK"},{"line_number":80,"context_line":"7. CMD_REP with r1\u003d1 and r0\u003d0 - This will execute 1. another (1*2+0)\u003c\u003c(2*0)\u003d2 times."},{"line_number":81,"context_line":"8. CMD_FLUSH - This will flush the IN pipeline."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Note that the net effect of the repetitions is that command 1 is executed (1+1+4+8\u003d) 14 times and"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"2cc10deb_915353d8","line":80,"in_reply_to":"cf72c446_fc0cd1c8","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":81,"context_line":"8. CMD_FLUSH - This will flush the IN pipeline."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Note that the net effect of the repetitions is that command 1 is executed (1+1+4+8\u003d) 14 times and"},{"line_number":84,"context_line":"command 6 is executed (1+2\u003d) 3 times."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Note that the device only has a fairly limited amount of endpoint RAM. It\u0027s probably best to keep"},{"line_number":87,"context_line":"an eye on the amount of bytes that are supposed to be in the IN endpoint and grab those before stuffing"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"5fd4826f_8ac6a340","line":84,"updated":"2022-04-22 09:44:57.000000000","message":"yep, it say now that 6. is repeated!","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":81,"context_line":"8. CMD_FLUSH - This will flush the IN pipeline."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Note that the net effect of the repetitions is that command 1 is executed (1+1+4+8\u003d) 14 times and"},{"line_number":84,"context_line":"command 6 is executed (1+2\u003d) 3 times."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Note that the device only has a fairly limited amount of endpoint RAM. It\u0027s probably best to keep"},{"line_number":87,"context_line":"an eye on the amount of bytes that are supposed to be in the IN endpoint and grab those before stuffing"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"85ec4014_88349049","line":84,"in_reply_to":"5fd4826f_8ac6a340","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"*/"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"#define JTAG_PROTO_CAPS_VER 1\t/*Version field. At the moment, only version 1 is defined. */"},{"line_number":125,"context_line":"struct jtag_proto_caps_hdr {"},{"line_number":126,"context_line":"\tuint8_t proto_ver;\t/*Protocol version. Expects JTAG_PROTO_CAPS_VER for now. */"},{"line_number":127,"context_line":"\tuint8_t length;\t/*of this plus any following descriptors */"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"6cb1a364_ddae1a07","line":124,"updated":"2022-04-22 09:44:57.000000000","message":"add a space after \u0027/*\u0027. comment valid in many places below too.","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"*/"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"#define JTAG_PROTO_CAPS_VER 1\t/*Version field. At the moment, only version 1 is defined. */"},{"line_number":125,"context_line":"struct jtag_proto_caps_hdr {"},{"line_number":126,"context_line":"\tuint8_t proto_ver;\t/*Protocol version. Expects JTAG_PROTO_CAPS_VER for now. */"},{"line_number":127,"context_line":"\tuint8_t length;\t/*of this plus any following descriptors */"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"4bd9b7cc_e7379c7b","line":124,"in_reply_to":"6cb1a364_ddae1a07","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":159,"context_line":"#define VEND_JTAG_GETTDO        2"},{"line_number":160,"context_line":"#define VEND_JTAG_SET_CHIPID    3"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"#define VEND_JTAG_SETIO_TDI     (1 \u003c\u003c 0)"},{"line_number":163,"context_line":"#define VEND_JTAG_SETIO_TMS     (1 \u003c\u003c 1)"},{"line_number":164,"context_line":"#define VEND_JTAG_SETIO_TCK     (1 \u003c\u003c 2)"},{"line_number":165,"context_line":"#define VEND_JTAG_SETIO_TRST    (1 \u003c\u003c 3)"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"d888f5ed_f2552dc0","line":162,"updated":"2022-04-22 09:44:57.000000000","message":"use BIT() macro","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":159,"context_line":"#define VEND_JTAG_GETTDO        2"},{"line_number":160,"context_line":"#define VEND_JTAG_SET_CHIPID    3"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"#define VEND_JTAG_SETIO_TDI     (1 \u003c\u003c 0)"},{"line_number":163,"context_line":"#define VEND_JTAG_SETIO_TMS     (1 \u003c\u003c 1)"},{"line_number":164,"context_line":"#define VEND_JTAG_SETIO_TCK     (1 \u003c\u003c 2)"},{"line_number":165,"context_line":"#define VEND_JTAG_SETIO_TRST    (1 \u003c\u003c 3)"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"24955cba_aace2014","line":162,"in_reply_to":"d888f5ed_f2552dc0","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":165,"context_line":"#define VEND_JTAG_SETIO_TRST    (1 \u003c\u003c 3)"},{"line_number":166,"context_line":"#define VEND_JTAG_SETIO_SRST    (1 \u003c\u003c 4)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"#define CMD_CLK(cap, tdi, tms) ((cap ? 4 : 0) | (tms ? 2 : 0) | (tdi ? 1 : 0))"},{"line_number":169,"context_line":"#define CMD_RST(srst)   (8 | (srst ? 1 : 0))"},{"line_number":170,"context_line":"#define CMD_FLUSH       0xA"},{"line_number":171,"context_line":"#define CMD_RSVD        0xB"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"dca8a83d_64920d89","line":168,"updated":"2022-04-22 09:44:57.000000000","message":"use BIT() for 4, 2, 1","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":165,"context_line":"#define VEND_JTAG_SETIO_TRST    (1 \u003c\u003c 3)"},{"line_number":166,"context_line":"#define VEND_JTAG_SETIO_SRST    (1 \u003c\u003c 4)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"#define CMD_CLK(cap, tdi, tms) ((cap ? 4 : 0) | (tms ? 2 : 0) | (tdi ? 1 : 0))"},{"line_number":169,"context_line":"#define CMD_RST(srst)   (8 | (srst ? 1 : 0))"},{"line_number":170,"context_line":"#define CMD_FLUSH       0xA"},{"line_number":171,"context_line":"#define CMD_RSVD        0xB"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"6d519eea_4fce6b54","line":168,"in_reply_to":"dca8a83d_64920d89","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":166,"context_line":"#define VEND_JTAG_SETIO_SRST    (1 \u003c\u003c 4)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"#define CMD_CLK(cap, tdi, tms) ((cap ? 4 : 0) | (tms ? 2 : 0) | (tdi ? 1 : 0))"},{"line_number":169,"context_line":"#define CMD_RST(srst)   (8 | (srst ? 1 : 0))"},{"line_number":170,"context_line":"#define CMD_FLUSH       0xA"},{"line_number":171,"context_line":"#define CMD_RSVD        0xB"},{"line_number":172,"context_line":"#define CMD_REP(r)      (0xC + (r))"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"bbcfb32b_6297366e","line":169,"updated":"2022-04-22 09:44:57.000000000","message":"use BIT() for 1, but left \u00278\u0027 as is to be similar to the next commands","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":166,"context_line":"#define VEND_JTAG_SETIO_SRST    (1 \u003c\u003c 4)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"#define CMD_CLK(cap, tdi, tms) ((cap ? 4 : 0) | (tms ? 2 : 0) | (tdi ? 1 : 0))"},{"line_number":169,"context_line":"#define CMD_RST(srst)   (8 | (srst ? 1 : 0))"},{"line_number":170,"context_line":"#define CMD_FLUSH       0xA"},{"line_number":171,"context_line":"#define CMD_RSVD        0xB"},{"line_number":172,"context_line":"#define CMD_REP(r)      (0xC + (r))"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"041c2e11_0912a494","line":169,"in_reply_to":"bbcfb32b_6297366e","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":169,"context_line":"#define CMD_RST(srst)   (8 | (srst ? 1 : 0))"},{"line_number":170,"context_line":"#define CMD_FLUSH       0xA"},{"line_number":171,"context_line":"#define CMD_RSVD        0xB"},{"line_number":172,"context_line":"#define CMD_REP(r)      (0xC + (r))"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"/*The internal repeats register is 10 bits, which means we can have 5 repeat commands in a"},{"line_number":175,"context_line":" *row at max. This translates to (\u0027b1111111111+1\u003d)1024 reps max. */"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"83f1e0db_ed61f412","line":172,"updated":"2022-04-22 09:44:57.000000000","message":"(0xC | ((r) \u0026 3))\nIt doesn\u0027t change the result but maybe makes it clearer. Compiler will remove the redundant \u0026","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":169,"context_line":"#define CMD_RST(srst)   (8 | (srst ? 1 : 0))"},{"line_number":170,"context_line":"#define CMD_FLUSH       0xA"},{"line_number":171,"context_line":"#define CMD_RSVD        0xB"},{"line_number":172,"context_line":"#define CMD_REP(r)      (0xC + (r))"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"/*The internal repeats register is 10 bits, which means we can have 5 repeat commands in a"},{"line_number":175,"context_line":" *row at max. This translates to (\u0027b1111111111+1\u003d)1024 reps max. */"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"eff5ba1a_8e1de374","line":172,"in_reply_to":"83f1e0db_ed61f412","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":179,"context_line":"#define USB_CONFIGURATION 0"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"/*Buffer size; is equal to the endpoint size. In bytes"},{"line_number":182,"context_line":" *ToDo for future adapters: read from device configuration? */"},{"line_number":183,"context_line":"#define OUT_EP_SZ 64"},{"line_number":184,"context_line":"/*Out data can be buffered for longer without issues (as long as the in buffer does not overflow),"},{"line_number":185,"context_line":" *so we\u0027ll use an out buffer that is much larger than the out ep size. */"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"1246aef7_e14ab27b","line":182,"updated":"2022-04-22 09:44:57.000000000","message":"use \u0027TODO:\u0027 so can be grepped like other in OpenOCD code","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":179,"context_line":"#define USB_CONFIGURATION 0"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"/*Buffer size; is equal to the endpoint size. In bytes"},{"line_number":182,"context_line":" *ToDo for future adapters: read from device configuration? */"},{"line_number":183,"context_line":"#define OUT_EP_SZ 64"},{"line_number":184,"context_line":"/*Out data can be buffered for longer without issues (as long as the in buffer does not overflow),"},{"line_number":185,"context_line":" *so we\u0027ll use an out buffer that is much larger than the out ep size. */"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"72768638_c1da7608","line":182,"in_reply_to":"1246aef7_e14ab27b","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":183,"context_line":"#define OUT_EP_SZ 64"},{"line_number":184,"context_line":"/*Out data can be buffered for longer without issues (as long as the in buffer does not overflow),"},{"line_number":185,"context_line":" *so we\u0027ll use an out buffer that is much larger than the out ep size. */"},{"line_number":186,"context_line":"#define OUT_BUF_SZ (OUT_EP_SZ*32)"},{"line_number":187,"context_line":"/*The in buffer cannot be larger than the device can offer, though. */"},{"line_number":188,"context_line":"#define IN_BUF_SZ 64"},{"line_number":189,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"3309f873_a7b09a07","line":186,"updated":"2022-04-22 09:44:57.000000000","message":"add space around the operator","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":183,"context_line":"#define OUT_EP_SZ 64"},{"line_number":184,"context_line":"/*Out data can be buffered for longer without issues (as long as the in buffer does not overflow),"},{"line_number":185,"context_line":" *so we\u0027ll use an out buffer that is much larger than the out ep size. */"},{"line_number":186,"context_line":"#define OUT_BUF_SZ (OUT_EP_SZ*32)"},{"line_number":187,"context_line":"/*The in buffer cannot be larger than the device can offer, though. */"},{"line_number":188,"context_line":"#define IN_BUF_SZ 64"},{"line_number":189,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"2ebc684b_abaf35b2","line":186,"in_reply_to":"3309f873_a7b09a07","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":195,"context_line":" * comment from libusb:"},{"line_number":196,"context_line":" * As per the USB 3.0 specs, the current maximum limit for the depth is 7."},{"line_number":197,"context_line":" */"},{"line_number":198,"context_line":"#define MAX_USB_PORTS   7"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"/*Private data */"},{"line_number":201,"context_line":"struct esp_usb_jtag {"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"67eef0dc_985366b6","line":198,"updated":"2022-04-22 09:44:57.000000000","message":"unused. will eventually return with esp_usb_jtag_libusb_location_equal()\ncan be moved in that patch?","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":195,"context_line":" * comment from libusb:"},{"line_number":196,"context_line":" * As per the USB 3.0 specs, the current maximum limit for the depth is 7."},{"line_number":197,"context_line":" */"},{"line_number":198,"context_line":"#define MAX_USB_PORTS   7"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"/*Private data */"},{"line_number":201,"context_line":"struct esp_usb_jtag {"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"51b34adc_143d0d1b","line":198,"in_reply_to":"67eef0dc_985366b6","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"\t/*This is the total number of in bits we need to read, including in unsent commands */"},{"line_number":223,"context_line":"\tint pending_in_bits;"},{"line_number":224,"context_line":"\tFILE *logfile;\t\t\t/*If non-NULL, we log communication traces here. */"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"\tint hw_in_fifo_len;"},{"line_number":227,"context_line":"\tchar *serial[256 + 1];\t/* device serial */"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"97a6e00d_b3cc0556","line":224,"updated":"2022-04-22 09:44:57.000000000","message":"We use LOG_DEBUG_IO() to dump low-level adapter communication.\nWhat about suing the same here?","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"5d03a1f157185bf7be6bc6aaf8949c1302de41f1","unresolved":true,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"\t/*This is the total number of in bits we need to read, including in unsent commands */"},{"line_number":223,"context_line":"\tint pending_in_bits;"},{"line_number":224,"context_line":"\tFILE *logfile;\t\t\t/*If non-NULL, we log communication traces here. */"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"\tint hw_in_fifo_len;"},{"line_number":227,"context_line":"\tchar *serial[256 + 1];\t/* device serial */"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"6a20a884_7a511733","line":224,"in_reply_to":"61fdaf74_7f1786a9","updated":"2022-05-01 15:26:29.000000000","message":"You can send \"all\" the log to a file with \"log_output filename\" command.\nBut the log will contains everything, not only the LOG_DEBUG_IO().\nIf you need to extract something for specific purpose, then you need some post-processing script that digest the log.","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"e5f2f0140cfb0f1618ae40bd9dde85f101ec3893","unresolved":false,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"\t/*This is the total number of in bits we need to read, including in unsent commands */"},{"line_number":223,"context_line":"\tint pending_in_bits;"},{"line_number":224,"context_line":"\tFILE *logfile;\t\t\t/*If non-NULL, we log communication traces here. */"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"\tint hw_in_fifo_len;"},{"line_number":227,"context_line":"\tchar *serial[256 + 1];\t/* device serial */"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"a5d06ea3_b6af0a30","line":224,"in_reply_to":"6a20a884_7a511733","updated":"2022-05-09 22:47:14.000000000","message":"OK. Removed special log functionality for now. if needed, we can add later on,","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":true,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"\t/*This is the total number of in bits we need to read, including in unsent commands */"},{"line_number":223,"context_line":"\tint pending_in_bits;"},{"line_number":224,"context_line":"\tFILE *logfile;\t\t\t/*If non-NULL, we log communication traces here. */"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"\tint hw_in_fifo_len;"},{"line_number":227,"context_line":"\tchar *serial[256 + 1];\t/* device serial */"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"61fdaf74_7f1786a9","line":224,"in_reply_to":"97a6e00d_b3cc0556","updated":"2022-04-23 19:03:59.000000000","message":"I am not aware yet, does LOG_DEBUG_IO support logging to a file?","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":224,"context_line":"\tFILE *logfile;\t\t\t/*If non-NULL, we log communication traces here. */"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"\tint hw_in_fifo_len;"},{"line_number":227,"context_line":"\tchar *serial[256 + 1];\t/* device serial */"},{"line_number":228,"context_line":"};"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"/*For now, we only use one static private struct. Technically, we can re-work this, but I don\u0027t"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"13745d13_ce63b164","line":227,"updated":"2022-04-22 09:44:57.000000000","message":"this field is never used, neither in following reconnect patch.\nCan be removed?","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":224,"context_line":"\tFILE *logfile;\t\t\t/*If non-NULL, we log communication traces here. */"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"\tint hw_in_fifo_len;"},{"line_number":227,"context_line":"\tchar *serial[256 + 1];\t/* device serial */"},{"line_number":228,"context_line":"};"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"/*For now, we only use one static private struct. Technically, we can re-work this, but I don\u0027t"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"6d9dff27_eb613181","line":227,"in_reply_to":"13745d13_ce63b164","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":230,"context_line":"/*For now, we only use one static private struct. Technically, we can re-work this, but I don\u0027t"},{"line_number":231,"context_line":" * think */"},{"line_number":232,"context_line":"/*OpenOCD supports multiple JTAG adapters anyway. */"},{"line_number":233,"context_line":"static struct esp_usb_jtag esp_usb_jtag_priv;"},{"line_number":234,"context_line":"static struct esp_usb_jtag *priv \u003d \u0026esp_usb_jtag_priv;"},{"line_number":235,"context_line":"static const char *esp_usb_jtag_serial;"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"14742e82_9889adbb","line":233,"updated":"2022-04-22 09:44:57.000000000","message":"from a quick computation, this struct is ~3 k byte. And it\u0027s allocated even when this driver is not used.\nCan it be allocated in esp_usb_jtag_init() and freed in esp_usb_jtag_quit()?\n\nAnd from the comment above, I\u0027m going to consider adding support for multiple JTAG adapters in order to support ARM ADI JTAG_AP. There would be the real adapter controlling the chip (either in JTAG or SWD) and controlling the embedded JTAG_AP port. Then there would be a virtual adapter JTAG_AP that will control the on-chip JTAG after the JTAG_AP.\nI\u0027m running a rework of all the adapters to prepare for this. Centralizing the handling of adapter serial is part of this long effort.\n\nIn the same context, the global variables below\nesp_usb_{jtag_serial,vid,pid,jtag_caps,target_chip_id}\nshould be moved inside struct esp_usb_jtag","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"202b14a99891de1e602885126e3bf260bf473b15","unresolved":true,"context_lines":[{"line_number":230,"context_line":"/*For now, we only use one static private struct. Technically, we can re-work this, but I don\u0027t"},{"line_number":231,"context_line":" * think */"},{"line_number":232,"context_line":"/*OpenOCD supports multiple JTAG adapters anyway. */"},{"line_number":233,"context_line":"static struct esp_usb_jtag esp_usb_jtag_priv;"},{"line_number":234,"context_line":"static struct esp_usb_jtag *priv \u003d \u0026esp_usb_jtag_priv;"},{"line_number":235,"context_line":"static const char *esp_usb_jtag_serial;"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"2e452ff0_18553525","line":233,"in_reply_to":"14742e82_9889adbb","updated":"2022-04-23 17:17:39.000000000","message":"I think what I propose is not fully possible, yet!\nCommand \"adapter driver XXX\" activates the commands of the adapter. But the commands need this struct to hold the config values.\nesp_usb_jtag_init() is called later, when configuration is completed and OpenOCD runs \"init\".\nSomething have to stay here as static, only some part can be allocated in esp_usb_jtag_init()","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":true,"context_lines":[{"line_number":230,"context_line":"/*For now, we only use one static private struct. Technically, we can re-work this, but I don\u0027t"},{"line_number":231,"context_line":" * think */"},{"line_number":232,"context_line":"/*OpenOCD supports multiple JTAG adapters anyway. */"},{"line_number":233,"context_line":"static struct esp_usb_jtag esp_usb_jtag_priv;"},{"line_number":234,"context_line":"static struct esp_usb_jtag *priv \u003d \u0026esp_usb_jtag_priv;"},{"line_number":235,"context_line":"static const char *esp_usb_jtag_serial;"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"759b7321_ddb22328","line":233,"in_reply_to":"2e452ff0_18553525","updated":"2022-04-23 19:03:59.000000000","message":"I\u0027ll look at this.","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"ef197b3fd57db588240b832e31f44d0bbdba668e","unresolved":false,"context_lines":[{"line_number":230,"context_line":"/*For now, we only use one static private struct. Technically, we can re-work this, but I don\u0027t"},{"line_number":231,"context_line":" * think */"},{"line_number":232,"context_line":"/*OpenOCD supports multiple JTAG adapters anyway. */"},{"line_number":233,"context_line":"static struct esp_usb_jtag esp_usb_jtag_priv;"},{"line_number":234,"context_line":"static struct esp_usb_jtag *priv \u003d \u0026esp_usb_jtag_priv;"},{"line_number":235,"context_line":"static const char *esp_usb_jtag_serial;"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"0e1e1318_4cba8c8e","line":233,"in_reply_to":"759b7321_ddb22328","updated":"2022-06-15 22:10:05.000000000","message":"This will not be solved shortly, so let\u0027s put as \"resolved\"","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":232,"context_line":"/*OpenOCD supports multiple JTAG adapters anyway. */"},{"line_number":233,"context_line":"static struct esp_usb_jtag esp_usb_jtag_priv;"},{"line_number":234,"context_line":"static struct esp_usb_jtag *priv \u003d \u0026esp_usb_jtag_priv;"},{"line_number":235,"context_line":"static const char *esp_usb_jtag_serial;"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"static int esp_usb_vid;"},{"line_number":238,"context_line":"static int esp_usb_pid;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"f8a5268f_751e9e5b","line":235,"updated":"2022-04-22 09:44:57.000000000","message":"actually this is unused here, should be added in next patch for reconnect","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":232,"context_line":"/*OpenOCD supports multiple JTAG adapters anyway. */"},{"line_number":233,"context_line":"static struct esp_usb_jtag esp_usb_jtag_priv;"},{"line_number":234,"context_line":"static struct esp_usb_jtag *priv \u003d \u0026esp_usb_jtag_priv;"},{"line_number":235,"context_line":"static const char *esp_usb_jtag_serial;"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"static int esp_usb_vid;"},{"line_number":238,"context_line":"static int esp_usb_pid;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"0b52597f_de125b9f","line":235,"in_reply_to":"f8a5268f_751e9e5b","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":252,"context_line":"static void log_cmds(uint8_t *buf, int ct, int wr)"},{"line_number":253,"context_line":"{"},{"line_number":254,"context_line":"\tfprintf(priv-\u003elogfile, \"Wrote %d of %d bytes:%s\\n\", wr, ct, wr !\u003d ct ? \"***ERROR***\" : \"\");"},{"line_number":255,"context_line":"#ifdef LOG_REPLAYABLE"},{"line_number":256,"context_line":"\tfprintf(priv-\u003elogfile, \":w %02X \", ct);"},{"line_number":257,"context_line":"\tfor (int n \u003d 0; n \u003c ct; n++)"},{"line_number":258,"context_line":"\t\tfprintf(priv-\u003elogfile, \"%02X \", buf[n]);"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"5860a3de_b41692cb","line":255,"updated":"2022-04-22 09:44:57.000000000","message":"I\u0027m not in favor of #if/#endif because it can exclude part of the code during compile. When code evolves we do not cover everything and we can end up with compile errors when a macro get defined.\nIf we keep this log in LOG_DEBUG_IO(), we can even have this part always enabled.","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"e5f2f0140cfb0f1618ae40bd9dde85f101ec3893","unresolved":false,"context_lines":[{"line_number":252,"context_line":"static void log_cmds(uint8_t *buf, int ct, int wr)"},{"line_number":253,"context_line":"{"},{"line_number":254,"context_line":"\tfprintf(priv-\u003elogfile, \"Wrote %d of %d bytes:%s\\n\", wr, ct, wr !\u003d ct ? \"***ERROR***\" : \"\");"},{"line_number":255,"context_line":"#ifdef LOG_REPLAYABLE"},{"line_number":256,"context_line":"\tfprintf(priv-\u003elogfile, \":w %02X \", ct);"},{"line_number":257,"context_line":"\tfor (int n \u003d 0; n \u003c ct; n++)"},{"line_number":258,"context_line":"\t\tfprintf(priv-\u003elogfile, \"%02X \", buf[n]);"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"2b824ac3_c29cb19a","line":255,"in_reply_to":"5860a3de_b41692cb","updated":"2022-05-09 22:47:14.000000000","message":"Removed","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":310,"context_line":"\t\t\tpriv-\u003eread_ep,"},{"line_number":311,"context_line":"\t\t\t(char *)priv-\u003ein_buf[priv-\u003ecur_in_buf_wr] + recvd,"},{"line_number":312,"context_line":"\t\t\tct,"},{"line_number":313,"context_line":"\t\t\t500,\t/*ms*/"},{"line_number":314,"context_line":"\t\t\t\u0026tr);"},{"line_number":315,"context_line":"\t\tif (priv-\u003elogfile)"},{"line_number":316,"context_line":"\t\t\tlog_resp(priv-\u003ein_buf[priv-\u003ecur_in_buf_wr], ct, tr);"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"edba3c1c_f282e701","line":313,"updated":"2022-04-22 09:44:57.000000000","message":"It\u0027s better using a macro instead of hardcoded values.\nwe have just merged https://review.openocd.org/6882/\nShould this use LIBUSB_TIMEOUT_MS too?","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"e5f2f0140cfb0f1618ae40bd9dde85f101ec3893","unresolved":false,"context_lines":[{"line_number":310,"context_line":"\t\t\tpriv-\u003eread_ep,"},{"line_number":311,"context_line":"\t\t\t(char *)priv-\u003ein_buf[priv-\u003ecur_in_buf_wr] + recvd,"},{"line_number":312,"context_line":"\t\t\tct,"},{"line_number":313,"context_line":"\t\t\t500,\t/*ms*/"},{"line_number":314,"context_line":"\t\t\t\u0026tr);"},{"line_number":315,"context_line":"\t\tif (priv-\u003elogfile)"},{"line_number":316,"context_line":"\t\t\tlog_resp(priv-\u003ein_buf[priv-\u003ecur_in_buf_wr], ct, tr);"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"c8292e02_fd3761ec","line":313,"in_reply_to":"8923ac6f_837d1ed6","updated":"2022-05-09 22:47:14.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"a2c3cd7bb735bd711dadbabc28731b28fc0aff56","unresolved":true,"context_lines":[{"line_number":310,"context_line":"\t\t\tpriv-\u003eread_ep,"},{"line_number":311,"context_line":"\t\t\t(char *)priv-\u003ein_buf[priv-\u003ecur_in_buf_wr] + recvd,"},{"line_number":312,"context_line":"\t\t\tct,"},{"line_number":313,"context_line":"\t\t\t500,\t/*ms*/"},{"line_number":314,"context_line":"\t\t\t\u0026tr);"},{"line_number":315,"context_line":"\t\tif (priv-\u003elogfile)"},{"line_number":316,"context_line":"\t\t\tlog_resp(priv-\u003ein_buf[priv-\u003ecur_in_buf_wr], ct, tr);"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"8923ac6f_837d1ed6","line":313,"in_reply_to":"d3e431a2_74efa740","updated":"2022-04-23 19:25:06.000000000","message":"Looks OK.","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":true,"context_lines":[{"line_number":310,"context_line":"\t\t\tpriv-\u003eread_ep,"},{"line_number":311,"context_line":"\t\t\t(char *)priv-\u003ein_buf[priv-\u003ecur_in_buf_wr] + recvd,"},{"line_number":312,"context_line":"\t\t\tct,"},{"line_number":313,"context_line":"\t\t\t500,\t/*ms*/"},{"line_number":314,"context_line":"\t\t\t\u0026tr);"},{"line_number":315,"context_line":"\t\tif (priv-\u003elogfile)"},{"line_number":316,"context_line":"\t\t\tlog_resp(priv-\u003ein_buf[priv-\u003ecur_in_buf_wr], ct, tr);"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"d3e431a2_74efa740","line":313,"in_reply_to":"edba3c1c_f282e701","updated":"2022-04-23 19:03:59.000000000","message":"Considering our reconnect scenario, I\u0027ll see what will happen after 6 seconds timeout.","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":352,"context_line":"\twhile (written \u003c ct) {"},{"line_number":353,"context_line":"\t\tint tr \u003d 0, ret \u003d jtag_libusb_bulk_write(priv-\u003eusb_device,"},{"line_number":354,"context_line":"\t\t\tpriv-\u003ewrite_ep,"},{"line_number":355,"context_line":"\t\t\t((char *)priv-\u003eout_buf) + written,"},{"line_number":356,"context_line":"\t\t\tct - written,"},{"line_number":357,"context_line":"\t\t\t500,\t/*ms*/"},{"line_number":358,"context_line":"\t\t\t\u0026tr);"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"d40b821f_895d50e1","line":355,"updated":"2022-04-22 09:44:57.000000000","message":"parentheses can be removed","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":352,"context_line":"\twhile (written \u003c ct) {"},{"line_number":353,"context_line":"\t\tint tr \u003d 0, ret \u003d jtag_libusb_bulk_write(priv-\u003eusb_device,"},{"line_number":354,"context_line":"\t\t\tpriv-\u003ewrite_ep,"},{"line_number":355,"context_line":"\t\t\t((char *)priv-\u003eout_buf) + written,"},{"line_number":356,"context_line":"\t\t\tct - written,"},{"line_number":357,"context_line":"\t\t\t500,\t/*ms*/"},{"line_number":358,"context_line":"\t\t\t\u0026tr);"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"f3d686c6_8c5be973","line":355,"in_reply_to":"d40b821f_895d50e1","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":354,"context_line":"\t\t\tpriv-\u003ewrite_ep,"},{"line_number":355,"context_line":"\t\t\t((char *)priv-\u003eout_buf) + written,"},{"line_number":356,"context_line":"\t\t\tct - written,"},{"line_number":357,"context_line":"\t\t\t500,\t/*ms*/"},{"line_number":358,"context_line":"\t\t\t\u0026tr);"},{"line_number":359,"context_line":"\t\tLOG_DEBUG_IO(\"esp_usb_jtag: sent %d bytes.\", tr);"},{"line_number":360,"context_line":"\t\tif (priv-\u003elogfile)"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"4526e6b6_2322d5c8","line":357,"updated":"2022-04-22 09:44:57.000000000","message":"same here","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"a2c3cd7bb735bd711dadbabc28731b28fc0aff56","unresolved":false,"context_lines":[{"line_number":354,"context_line":"\t\t\tpriv-\u003ewrite_ep,"},{"line_number":355,"context_line":"\t\t\t((char *)priv-\u003eout_buf) + written,"},{"line_number":356,"context_line":"\t\t\tct - written,"},{"line_number":357,"context_line":"\t\t\t500,\t/*ms*/"},{"line_number":358,"context_line":"\t\t\t\u0026tr);"},{"line_number":359,"context_line":"\t\tLOG_DEBUG_IO(\"esp_usb_jtag: sent %d bytes.\", tr);"},{"line_number":360,"context_line":"\t\tif (priv-\u003elogfile)"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"433215f9_f044fb4c","line":357,"in_reply_to":"4526e6b6_2322d5c8","updated":"2022-04-23 19:25:06.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":370,"context_line":"\t}"},{"line_number":371,"context_line":"\tpriv-\u003eout_buf_pos_nibbles \u003d 0;"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"\t/*If there\u0027s more than a bufferful of data queing up in the jtag adapters IN endpoint, empty"},{"line_number":374,"context_line":"\t *"},{"line_number":375,"context_line":"\t *all but one buffer. */"},{"line_number":376,"context_line":"\twhile (priv-\u003epending_in_bits \u003e (IN_BUF_SZ + priv-\u003ehw_in_fifo_len - 1) * 8)"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"162dfab3_8938303c","line":373,"updated":"2022-04-22 09:44:57.000000000","message":"typo s/queing/queuing/ ?","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":370,"context_line":"\t}"},{"line_number":371,"context_line":"\tpriv-\u003eout_buf_pos_nibbles \u003d 0;"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"\t/*If there\u0027s more than a bufferful of data queing up in the jtag adapters IN endpoint, empty"},{"line_number":374,"context_line":"\t *"},{"line_number":375,"context_line":"\t *all but one buffer. */"},{"line_number":376,"context_line":"\twhile (priv-\u003epending_in_bits \u003e (IN_BUF_SZ + priv-\u003ehw_in_fifo_len - 1) * 8)"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"8d6039ed_9428a570","line":373,"in_reply_to":"162dfab3_8938303c","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":434,"context_line":"{"},{"line_number":435,"context_line":"\tif (cmd \u003d\u003d priv-\u003eprev_cmd \u0026\u0026 priv-\u003eprev_cmd_repct \u003c CMD_REP_MAX_REPS)"},{"line_number":436,"context_line":"\t\tpriv-\u003eprev_cmd_repct++;"},{"line_number":437,"context_line":"\telse {"},{"line_number":438,"context_line":"\t\t/*We can now write out the previous command plus repeat count. */"},{"line_number":439,"context_line":"\t\tif (priv-\u003eprev_cmd_repct) {"},{"line_number":440,"context_line":"\t\t\tint ret \u003d esp_usb_jtag_write_rlestream(priv-\u003eprev_cmd, priv-\u003eprev_cmd_repct);"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"419105db_b9470ff8","line":437,"updated":"2022-04-22 09:44:57.000000000","message":"balance the {} on all branches","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":434,"context_line":"{"},{"line_number":435,"context_line":"\tif (cmd \u003d\u003d priv-\u003eprev_cmd \u0026\u0026 priv-\u003eprev_cmd_repct \u003c CMD_REP_MAX_REPS)"},{"line_number":436,"context_line":"\t\tpriv-\u003eprev_cmd_repct++;"},{"line_number":437,"context_line":"\telse {"},{"line_number":438,"context_line":"\t\t/*We can now write out the previous command plus repeat count. */"},{"line_number":439,"context_line":"\t\tif (priv-\u003eprev_cmd_repct) {"},{"line_number":440,"context_line":"\t\t\tint ret \u003d esp_usb_jtag_write_rlestream(priv-\u003eprev_cmd, priv-\u003eprev_cmd_repct);"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"649d4b01_7f1506b8","line":437,"in_reply_to":"419105db_b9470ff8","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":533,"context_line":""},{"line_number":534,"context_line":"\t/*Extract the bit */"},{"line_number":535,"context_line":"\tint r \u003d (priv-\u003ein_buf[priv-\u003ecur_in_buf_rd][priv-\u003ein_buf_pos_bits / 8] \u0026"},{"line_number":536,"context_line":"\t\t(1 \u003c\u003c (priv-\u003ein_buf_pos_bits \u0026 7))) ? 1 : 0;"},{"line_number":537,"context_line":"\t/*Move to next bit. */"},{"line_number":538,"context_line":"\tpriv-\u003ein_buf_pos_bits++;"},{"line_number":539,"context_line":"\tif (priv-\u003ein_buf_pos_bits \u003d\u003d priv-\u003ein_buf_size_bits[priv-\u003ecur_in_buf_rd]) {"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"6c4f4ac4_ec1b8a3b","line":536,"updated":"2022-04-22 09:44:57.000000000","message":"BIT(priv-\u003ein_buf_pos_bits \u0026 7) ?","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":533,"context_line":""},{"line_number":534,"context_line":"\t/*Extract the bit */"},{"line_number":535,"context_line":"\tint r \u003d (priv-\u003ein_buf[priv-\u003ecur_in_buf_rd][priv-\u003ein_buf_pos_bits / 8] \u0026"},{"line_number":536,"context_line":"\t\t(1 \u003c\u003c (priv-\u003ein_buf_pos_bits \u0026 7))) ? 1 : 0;"},{"line_number":537,"context_line":"\t/*Move to next bit. */"},{"line_number":538,"context_line":"\tpriv-\u003ein_buf_pos_bits++;"},{"line_number":539,"context_line":"\tif (priv-\u003ein_buf_pos_bits \u003d\u003d priv-\u003ein_buf_size_bits[priv-\u003ecur_in_buf_rd]) {"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"9273dd0c_34d72e55","line":536,"in_reply_to":"6c4f4ac4_ec1b8a3b","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":554,"context_line":"\tconst uint16_t vids[] \u003d {esp_usb_vid, 0};\t/* must be null terminated */"},{"line_number":555,"context_line":"\tconst uint16_t pids[] \u003d {esp_usb_pid, 0};\t/* must be null terminated */"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"\tbitq_interface \u003d calloc(sizeof(struct bitq_interface), 1);"},{"line_number":558,"context_line":"\tbitq_interface-\u003eout \u003d esp_usb_jtag_out;"},{"line_number":559,"context_line":"\tbitq_interface-\u003eflush \u003d esp_usb_jtag_flush;"},{"line_number":560,"context_line":"\tbitq_interface-\u003esleep \u003d esp_usb_jtag_sleep;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"298b9775_7e7cadb4","line":557,"updated":"2022-04-22 09:44:57.000000000","message":"you can avoid the calloc by embedding a \u0027struct bitq_interface\u0027 inside \u0027struct esp_usb_jtag\u0027 and here:\nbitq_interface \u003d \u0026priv-\u003ebitq_interface;\nBy the way, for every Xalloc() we need to check if has returned NULL","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":554,"context_line":"\tconst uint16_t vids[] \u003d {esp_usb_vid, 0};\t/* must be null terminated */"},{"line_number":555,"context_line":"\tconst uint16_t pids[] \u003d {esp_usb_pid, 0};\t/* must be null terminated */"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"\tbitq_interface \u003d calloc(sizeof(struct bitq_interface), 1);"},{"line_number":558,"context_line":"\tbitq_interface-\u003eout \u003d esp_usb_jtag_out;"},{"line_number":559,"context_line":"\tbitq_interface-\u003eflush \u003d esp_usb_jtag_flush;"},{"line_number":560,"context_line":"\tbitq_interface-\u003esleep \u003d esp_usb_jtag_sleep;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"c2426276_44c1303c","line":557,"in_reply_to":"298b9775_7e7cadb4","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":558,"context_line":"\tbitq_interface-\u003eout \u003d esp_usb_jtag_out;"},{"line_number":559,"context_line":"\tbitq_interface-\u003eflush \u003d esp_usb_jtag_flush;"},{"line_number":560,"context_line":"\tbitq_interface-\u003esleep \u003d esp_usb_jtag_sleep;"},{"line_number":561,"context_line":"\tbitq_interface-\u003ereset \u003d esp_usb_jtag_reset;"},{"line_number":562,"context_line":"\tbitq_interface-\u003ein_rdy \u003d esp_usb_jtag_in_rdy;"},{"line_number":563,"context_line":"\tbitq_interface-\u003ein \u003d esp_usb_jtag_in;"},{"line_number":564,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"0bf5ee42_5c91b6cb","line":561,"updated":"2022-04-22 09:44:57.000000000","message":"yes, I have to accept this. I\u0027m working at removing the reset from jtag queue, but bitq is still using it.\nAnother task on my head!","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":558,"context_line":"\tbitq_interface-\u003eout \u003d esp_usb_jtag_out;"},{"line_number":559,"context_line":"\tbitq_interface-\u003eflush \u003d esp_usb_jtag_flush;"},{"line_number":560,"context_line":"\tbitq_interface-\u003esleep \u003d esp_usb_jtag_sleep;"},{"line_number":561,"context_line":"\tbitq_interface-\u003ereset \u003d esp_usb_jtag_reset;"},{"line_number":562,"context_line":"\tbitq_interface-\u003ein_rdy \u003d esp_usb_jtag_in_rdy;"},{"line_number":563,"context_line":"\tbitq_interface-\u003ein \u003d esp_usb_jtag_in;"},{"line_number":564,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"efad9b07_069b9e6c","line":561,"in_reply_to":"0bf5ee42_5c91b6cb","updated":"2022-04-23 19:03:59.000000000","message":"Ack","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":577,"context_line":"\tjtag_libusb_set_configuration(priv-\u003eusb_device, USB_CONFIGURATION);"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":"\tr \u003d jtag_libusb_choose_interface(priv-\u003eusb_device, \u0026priv-\u003eread_ep, \u0026priv-\u003ewrite_ep,"},{"line_number":580,"context_line":"\t\t0xff, 0xff, 0x01, 0x2);"},{"line_number":581,"context_line":"\tif (r !\u003d ERROR_OK) {"},{"line_number":582,"context_line":"\t\tLOG_ERROR(\"esp_usb_jtag: error finding/claiming JTAG interface on device!\");"},{"line_number":583,"context_line":"\t\tgoto out;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"df120fee_275d58ca","line":580,"updated":"2022-04-22 09:44:57.000000000","message":"#define ESP_USB_INTERFACE 1\nUSB_CLASS_VENDOR_SPEC, ???, ESP_USB_INTERFACE, USB_ENDPOINT_TYPE_BULK);","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":577,"context_line":"\tjtag_libusb_set_configuration(priv-\u003eusb_device, USB_CONFIGURATION);"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":"\tr \u003d jtag_libusb_choose_interface(priv-\u003eusb_device, \u0026priv-\u003eread_ep, \u0026priv-\u003ewrite_ep,"},{"line_number":580,"context_line":"\t\t0xff, 0xff, 0x01, 0x2);"},{"line_number":581,"context_line":"\tif (r !\u003d ERROR_OK) {"},{"line_number":582,"context_line":"\t\tLOG_ERROR(\"esp_usb_jtag: error finding/claiming JTAG interface on device!\");"},{"line_number":583,"context_line":"\t\tgoto out;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"bfaf8356_b68cd2ef","line":580,"in_reply_to":"df120fee_275d58ca","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":587,"context_line":"\tr \u003d jtag_libusb_control_transfer(priv-\u003eusb_device,"},{"line_number":588,"context_line":"\t\tLIBUSB_ENDPOINT_IN|LIBUSB_REQUEST_TYPE_STANDARD|LIBUSB_RECIPIENT_DEVICE,"},{"line_number":589,"context_line":"\t\tLIBUSB_REQUEST_GET_DESCRIPTOR, esp_usb_jtag_caps, 0,"},{"line_number":590,"context_line":"\t\tjtag_caps_desc, 255, 1000);"},{"line_number":591,"context_line":"\tif (r \u003c\u003d 0) {"},{"line_number":592,"context_line":"\t\tLOG_ERROR(\"esp_usb_jtag: could not retrieve jtag_caps descriptor!\");"},{"line_number":593,"context_line":"\t\tgoto out;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"abecec41_08fbdb19","line":590,"updated":"2022-04-22 09:44:57.000000000","message":"maybe\njtag_caps_desc, sizeof(jtag_caps_desc) - 1, LIBUSB_TIMEOUT_MS);\nwhy \u0027- 1\u0027 ? Should the array have only 255 entries?","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"ef197b3fd57db588240b832e31f44d0bbdba668e","unresolved":true,"context_lines":[{"line_number":587,"context_line":"\tr \u003d jtag_libusb_control_transfer(priv-\u003eusb_device,"},{"line_number":588,"context_line":"\t\tLIBUSB_ENDPOINT_IN|LIBUSB_REQUEST_TYPE_STANDARD|LIBUSB_RECIPIENT_DEVICE,"},{"line_number":589,"context_line":"\t\tLIBUSB_REQUEST_GET_DESCRIPTOR, esp_usb_jtag_caps, 0,"},{"line_number":590,"context_line":"\t\tjtag_caps_desc, 255, 1000);"},{"line_number":591,"context_line":"\tif (r \u003c\u003d 0) {"},{"line_number":592,"context_line":"\t\tLOG_ERROR(\"esp_usb_jtag: could not retrieve jtag_caps descriptor!\");"},{"line_number":593,"context_line":"\t\tgoto out;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"e3ae4922_d874f3ab","line":590,"in_reply_to":"abecec41_08fbdb19","updated":"2022-06-15 22:10:05.000000000","message":"This is not resolved yet","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"225ec90328e0c2642648ae21bfad5b6caac88242","unresolved":false,"context_lines":[{"line_number":587,"context_line":"\tr \u003d jtag_libusb_control_transfer(priv-\u003eusb_device,"},{"line_number":588,"context_line":"\t\tLIBUSB_ENDPOINT_IN|LIBUSB_REQUEST_TYPE_STANDARD|LIBUSB_RECIPIENT_DEVICE,"},{"line_number":589,"context_line":"\t\tLIBUSB_REQUEST_GET_DESCRIPTOR, esp_usb_jtag_caps, 0,"},{"line_number":590,"context_line":"\t\tjtag_caps_desc, 255, 1000);"},{"line_number":591,"context_line":"\tif (r \u003c\u003d 0) {"},{"line_number":592,"context_line":"\t\tLOG_ERROR(\"esp_usb_jtag: could not retrieve jtag_caps descriptor!\");"},{"line_number":593,"context_line":"\t\tgoto out;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"830ede55_04a4250c","line":590,"in_reply_to":"e3ae4922_d874f3ab","updated":"2022-06-16 19:17:54.000000000","message":"Yes. 256 does not work. Looks like there is a limitation in the builtin usb jtag rom code.","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":599,"context_line":"\tpriv-\u003ediv_max \u003d 1;"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"\t/* start of the descriptor header *"},{"line_number":602,"context_line":"\t * eub uses string descriptor. Skip 1 byte length and 1 byte descriptor type */"},{"line_number":603,"context_line":"\tint p \u003d esp_usb_jtag_caps \u003d\u003d VEND_DESCRIPTOR_BUILTIN_JTAG_CAPS ? 0 : 2;"},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"\tstruct jtag_proto_caps_hdr *hdr \u003d (struct jtag_proto_caps_hdr *)\u0026jtag_caps_desc[p];"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"0be35668_36c26465","line":602,"range":{"start_line":602,"start_character":4,"end_line":602,"end_character":7},"updated":"2022-04-22 09:44:57.000000000","message":"what \u0027eub\u0027 is?\nI see several problems in the way the descriptor is parsed below:\n1) it is mandatory for the user to specify \u0027esp_usb_jtag_caps\u0027 with the command \u0027caps_descriptor\u0027. How can user know the value? There is no default, no info how to get it. Can it be autodetected?\n2) endianess issue. Here you assume that esp_usb communication and PC use the same endianess, so the uint16_t can be read directly (spcap-\u003eapb_speed_10khz, spcap-\u003ediv_min, spcap-\u003ediv_max). Instead PC can be little endian (x86) or big endian (old MAC). you should use, e.g. le_to_h_u16(spcap-\u003ediv_min).\n3) alignment issue. many compiles expect struct to be 8-byte aligned. here you assign a struct pointer to some address in the middle of an array. That\u0027s fine for x86, but not in general case.\n4) no check if \u0027p\u0027 go out of jtag_caps_desc[256], even no check if the struct is fully contained in jtag_caps_desc[256]; blindly trust that the reply from USB is correct!","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"e5f2f0140cfb0f1618ae40bd9dde85f101ec3893","unresolved":true,"context_lines":[{"line_number":599,"context_line":"\tpriv-\u003ediv_max \u003d 1;"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"\t/* start of the descriptor header *"},{"line_number":602,"context_line":"\t * eub uses string descriptor. Skip 1 byte length and 1 byte descriptor type */"},{"line_number":603,"context_line":"\tint p \u003d esp_usb_jtag_caps \u003d\u003d VEND_DESCRIPTOR_BUILTIN_JTAG_CAPS ? 0 : 2;"},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"\tstruct jtag_proto_caps_hdr *hdr \u003d (struct jtag_proto_caps_hdr *)\u0026jtag_caps_desc[p];"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"fb4fc7c1_fa5a8806","line":602,"range":{"start_line":602,"start_character":4,"end_line":602,"end_character":7},"in_reply_to":"0be35668_36c26465","updated":"2022-05-09 22:47:14.000000000","message":"Antonio, here you can see the details about the eub. https://github.com/espressif/esp-usb-bridge \n\nThanks for the critical catches. I will look at them.","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"914414c9edeac26587eb873687ec7f3df9dc7800","unresolved":true,"context_lines":[{"line_number":599,"context_line":"\tpriv-\u003ediv_max \u003d 1;"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"\t/* start of the descriptor header *"},{"line_number":602,"context_line":"\t * eub uses string descriptor. Skip 1 byte length and 1 byte descriptor type */"},{"line_number":603,"context_line":"\tint p \u003d esp_usb_jtag_caps \u003d\u003d VEND_DESCRIPTOR_BUILTIN_JTAG_CAPS ? 0 : 2;"},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"\tstruct jtag_proto_caps_hdr *hdr \u003d (struct jtag_proto_caps_hdr *)\u0026jtag_caps_desc[p];"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"27f177c3_e0bb070a","line":602,"range":{"start_line":602,"start_character":4,"end_line":602,"end_character":7},"in_reply_to":"1ba1a3a4_cd7b1479","updated":"2022-05-23 14:40:04.000000000","message":"Antonio, can you please check again.","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"ef197b3fd57db588240b832e31f44d0bbdba668e","unresolved":true,"context_lines":[{"line_number":599,"context_line":"\tpriv-\u003ediv_max \u003d 1;"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"\t/* start of the descriptor header *"},{"line_number":602,"context_line":"\t * eub uses string descriptor. Skip 1 byte length and 1 byte descriptor type */"},{"line_number":603,"context_line":"\tint p \u003d esp_usb_jtag_caps \u003d\u003d VEND_DESCRIPTOR_BUILTIN_JTAG_CAPS ? 0 : 2;"},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"\tstruct jtag_proto_caps_hdr *hdr \u003d (struct jtag_proto_caps_hdr *)\u0026jtag_caps_desc[p];"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"4b131a9e_1aff5f58","line":602,"range":{"start_line":602,"start_character":4,"end_line":602,"end_character":7},"in_reply_to":"27f177c3_e0bb070a","updated":"2022-06-15 22:10:05.000000000","message":"this now looks fixed, apart for the check in the while loop that I\u0027m commenting below. I think this can be tagged \"resolved\"","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"225ec90328e0c2642648ae21bfad5b6caac88242","unresolved":false,"context_lines":[{"line_number":599,"context_line":"\tpriv-\u003ediv_max \u003d 1;"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"\t/* start of the descriptor header *"},{"line_number":602,"context_line":"\t * eub uses string descriptor. Skip 1 byte length and 1 byte descriptor type */"},{"line_number":603,"context_line":"\tint p \u003d esp_usb_jtag_caps \u003d\u003d VEND_DESCRIPTOR_BUILTIN_JTAG_CAPS ? 0 : 2;"},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"\tstruct jtag_proto_caps_hdr *hdr \u003d (struct jtag_proto_caps_hdr *)\u0026jtag_caps_desc[p];"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"7d2d5a21_7ce4d262","line":602,"range":{"start_line":602,"start_character":4,"end_line":602,"end_character":7},"in_reply_to":"4b131a9e_1aff5f58","updated":"2022-06-16 19:17:54.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"51b366078bc4e84fd935b9e1458f77397c7cf5b4","unresolved":true,"context_lines":[{"line_number":599,"context_line":"\tpriv-\u003ediv_max \u003d 1;"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"\t/* start of the descriptor header *"},{"line_number":602,"context_line":"\t * eub uses string descriptor. Skip 1 byte length and 1 byte descriptor type */"},{"line_number":603,"context_line":"\tint p \u003d esp_usb_jtag_caps \u003d\u003d VEND_DESCRIPTOR_BUILTIN_JTAG_CAPS ? 0 : 2;"},{"line_number":604,"context_line":""},{"line_number":605,"context_line":"\tstruct jtag_proto_caps_hdr *hdr \u003d (struct jtag_proto_caps_hdr *)\u0026jtag_caps_desc[p];"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"1ba1a3a4_cd7b1479","line":602,"range":{"start_line":602,"start_character":4,"end_line":602,"end_character":7},"in_reply_to":"fb4fc7c1_fa5a8806","updated":"2022-05-15 20:54:38.000000000","message":"so EUB is \"ESP USB Bridge\", maybe better writing it extended.\nIt means this driver targets two possible interfaces, the EUB as standalong USB-to-JTAG adapter and the one integrated in the target chip? Documentation becomes important to have.\n\nyes, please, have a look at these endianness issues.\nI\u0027m also thinking that the three __packed struct defined at the beginning of this file should be replaced with a array of uint8_t. I mean, the USB transfer should be done using array, then the array should be converted to C variables keeping position and endianness in consideration:\n read_array(x, length);\n uint8_t *spcap \u003d x + offset_of_spcap;\n priv-\u003ebase_speed_khz \u003d le_to_h_u16(spcap + offset_apb_speed_10khz) * 10 / 2;\n priv-\u003ediv_min \u003d le_to_h_u16(spcap + offset_div_min);\n priv-\u003ediv_max \u003d le_to_h_u16(spcap + offset_div_max);","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":640,"context_line":"\t/* inform bridge board about the connected target chip for the specific operations"},{"line_number":641,"context_line":"\t * it is also safe to send this info to chips that have builtin usb jtag */"},{"line_number":642,"context_line":"\tjtag_libusb_control_transfer(priv-\u003eusb_device,"},{"line_number":643,"context_line":"\t\t0x40,"},{"line_number":644,"context_line":"\t\tVEND_JTAG_SET_CHIPID,"},{"line_number":645,"context_line":"\t\tesp_usb_target_chip_id,"},{"line_number":646,"context_line":"\t\t0,"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"9e78485b_55f1ff84","line":643,"updated":"2022-04-22 09:44:57.000000000","message":"Define a macro for this request type","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":640,"context_line":"\t/* inform bridge board about the connected target chip for the specific operations"},{"line_number":641,"context_line":"\t * it is also safe to send this info to chips that have builtin usb jtag */"},{"line_number":642,"context_line":"\tjtag_libusb_control_transfer(priv-\u003eusb_device,"},{"line_number":643,"context_line":"\t\t0x40,"},{"line_number":644,"context_line":"\t\tVEND_JTAG_SET_CHIPID,"},{"line_number":645,"context_line":"\t\tesp_usb_target_chip_id,"},{"line_number":646,"context_line":"\t\t0,"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"3e0670e7_8ea103dd","line":643,"in_reply_to":"9e78485b_55f1ff84","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":646,"context_line":"\t\t0,"},{"line_number":647,"context_line":"\t\tNULL,"},{"line_number":648,"context_line":"\t\t0,"},{"line_number":649,"context_line":"\t\t1000);"},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"\treturn ERROR_OK;"},{"line_number":652,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"5857881f_4c600c54","line":649,"updated":"2022-04-22 09:44:57.000000000","message":"LIBUSB_TIMEOUT_MS ???","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"a2c3cd7bb735bd711dadbabc28731b28fc0aff56","unresolved":false,"context_lines":[{"line_number":646,"context_line":"\t\t0,"},{"line_number":647,"context_line":"\t\tNULL,"},{"line_number":648,"context_line":"\t\t0,"},{"line_number":649,"context_line":"\t\t1000);"},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"\treturn ERROR_OK;"},{"line_number":652,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"26ad6ab8_9a3e8dc0","line":649,"in_reply_to":"5857881f_4c600c54","updated":"2022-04-23 19:25:06.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":651,"context_line":"\treturn ERROR_OK;"},{"line_number":652,"context_line":""},{"line_number":653,"context_line":"out:"},{"line_number":654,"context_line":"\tfree((void *)esp_usb_jtag_serial);"},{"line_number":655,"context_line":"\tesp_usb_jtag_serial \u003d NULL;"},{"line_number":656,"context_line":"\tif (priv-\u003eusb_device)"},{"line_number":657,"context_line":"\t\tjtag_libusb_close(priv-\u003eusb_device);"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"52a61f20_d9ba6a90","line":654,"updated":"2022-04-22 09:44:57.000000000","message":"no need for cast","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":651,"context_line":"\treturn ERROR_OK;"},{"line_number":652,"context_line":""},{"line_number":653,"context_line":"out:"},{"line_number":654,"context_line":"\tfree((void *)esp_usb_jtag_serial);"},{"line_number":655,"context_line":"\tesp_usb_jtag_serial \u003d NULL;"},{"line_number":656,"context_line":"\tif (priv-\u003eusb_device)"},{"line_number":657,"context_line":"\t\tjtag_libusb_close(priv-\u003eusb_device);"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"a86d05d7_870d84f4","line":654,"in_reply_to":"52a61f20_d9ba6a90","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":663,"context_line":""},{"line_number":664,"context_line":"static int esp_usb_jtag_quit(void)"},{"line_number":665,"context_line":"{"},{"line_number":666,"context_line":"\tif (priv-\u003eusb_device \u003d\u003d NULL)"},{"line_number":667,"context_line":"\t\treturn ERROR_OK;"},{"line_number":668,"context_line":"\tjtag_libusb_close(priv-\u003eusb_device);"},{"line_number":669,"context_line":"\tbitq_cleanup();"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"248edd9c_57cff9ca","line":666,"updated":"2022-04-22 09:44:57.000000000","message":"no comparison with NULL, drectly\nif (priv-\u003eusb_device)","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":663,"context_line":""},{"line_number":664,"context_line":"static int esp_usb_jtag_quit(void)"},{"line_number":665,"context_line":"{"},{"line_number":666,"context_line":"\tif (priv-\u003eusb_device \u003d\u003d NULL)"},{"line_number":667,"context_line":"\t\treturn ERROR_OK;"},{"line_number":668,"context_line":"\tjtag_libusb_close(priv-\u003eusb_device);"},{"line_number":669,"context_line":"\tbitq_cleanup();"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"9ef7ee88_e6172d86","line":666,"in_reply_to":"248edd9c_57cff9ca","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":711,"context_line":"\tif (priv-\u003elogfile)"},{"line_number":712,"context_line":"\t\tfprintf(priv-\u003elogfile, \"Setting divisor to %d\\n.\", divisor);"},{"line_number":713,"context_line":"\tjtag_libusb_control_transfer(priv-\u003eusb_device,"},{"line_number":714,"context_line":"\t\t0x40, VEND_JTAG_SETDIV, divisor, 0, NULL, 0, 1000);"},{"line_number":715,"context_line":""},{"line_number":716,"context_line":"\treturn ERROR_OK;"},{"line_number":717,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"38de5817_9d148a94","line":714,"updated":"2022-04-22 09:44:57.000000000","message":"macros for 0x40 and timeout","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"a2c3cd7bb735bd711dadbabc28731b28fc0aff56","unresolved":false,"context_lines":[{"line_number":711,"context_line":"\tif (priv-\u003elogfile)"},{"line_number":712,"context_line":"\t\tfprintf(priv-\u003elogfile, \"Setting divisor to %d\\n.\", divisor);"},{"line_number":713,"context_line":"\tjtag_libusb_control_transfer(priv-\u003eusb_device,"},{"line_number":714,"context_line":"\t\t0x40, VEND_JTAG_SETDIV, divisor, 0, NULL, 0, 1000);"},{"line_number":715,"context_line":""},{"line_number":716,"context_line":"\treturn ERROR_OK;"},{"line_number":717,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"9110e5ac_294d3ab7","line":714,"in_reply_to":"38de5817_9d148a94","updated":"2022-04-23 19:25:06.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":722,"context_line":"\tif (!priv-\u003eusb_device)"},{"line_number":723,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":724,"context_line":"\tint r \u003d jtag_libusb_control_transfer(priv-\u003eusb_device,"},{"line_number":725,"context_line":"\t\t0xC0, VEND_JTAG_GETTDO, 0, 0, \u0026tdo, 1, 1000);"},{"line_number":726,"context_line":"\tif (r \u003c 1)"},{"line_number":727,"context_line":"\t\treturn r;"},{"line_number":728,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"de92013f_790a51c4","line":725,"updated":"2022-04-22 09:44:57.000000000","message":"also here","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"a2c3cd7bb735bd711dadbabc28731b28fc0aff56","unresolved":false,"context_lines":[{"line_number":722,"context_line":"\tif (!priv-\u003eusb_device)"},{"line_number":723,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":724,"context_line":"\tint r \u003d jtag_libusb_control_transfer(priv-\u003eusb_device,"},{"line_number":725,"context_line":"\t\t0xC0, VEND_JTAG_GETTDO, 0, 0, \u0026tdo, 1, 1000);"},{"line_number":726,"context_line":"\tif (r \u003c 1)"},{"line_number":727,"context_line":"\t\treturn r;"},{"line_number":728,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"43e4064d_2ff593e1","line":725,"in_reply_to":"de92013f_790a51c4","updated":"2022-04-23 19:25:06.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":785,"context_line":""},{"line_number":786,"context_line":"COMMAND_HANDLER(esp_usb_jtag_vid_pid)"},{"line_number":787,"context_line":"{"},{"line_number":788,"context_line":"\tif (CMD_ARGC \u003c 2) {"},{"line_number":789,"context_line":"\t\tLOG_ERROR(\"You need to supply the vendor and product IDs\");"},{"line_number":790,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":791,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"f549f6cc_6d8c120a","line":788,"updated":"2022-04-22 09:44:57.000000000","message":"It should be enough using\nif (CMD_ARGC !\u003d 2)\n  return ERROR_COMMAND_SYNTAX_ERROR;","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":785,"context_line":""},{"line_number":786,"context_line":"COMMAND_HANDLER(esp_usb_jtag_vid_pid)"},{"line_number":787,"context_line":"{"},{"line_number":788,"context_line":"\tif (CMD_ARGC \u003c 2) {"},{"line_number":789,"context_line":"\t\tLOG_ERROR(\"You need to supply the vendor and product IDs\");"},{"line_number":790,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":791,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"04e26c44_236e3248","line":788,"in_reply_to":"f549f6cc_6d8c120a","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":799,"context_line":""},{"line_number":800,"context_line":"COMMAND_HANDLER(esp_usb_jtag_caps_descriptor)"},{"line_number":801,"context_line":"{"},{"line_number":802,"context_line":"\tif (CMD_ARGC \u003c 1) {"},{"line_number":803,"context_line":"\t\tLOG_ERROR(\"You need to supply the jtag capabilities descriptor\");"},{"line_number":804,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":805,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"f23ddc74_6e958b72","line":802,"updated":"2022-04-22 09:44:57.000000000","message":"same here \u003d! 1","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":799,"context_line":""},{"line_number":800,"context_line":"COMMAND_HANDLER(esp_usb_jtag_caps_descriptor)"},{"line_number":801,"context_line":"{"},{"line_number":802,"context_line":"\tif (CMD_ARGC \u003c 1) {"},{"line_number":803,"context_line":"\t\tLOG_ERROR(\"You need to supply the jtag capabilities descriptor\");"},{"line_number":804,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":805,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"f0748701_6f79da59","line":802,"in_reply_to":"f23ddc74_6e958b72","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":812,"context_line":""},{"line_number":813,"context_line":"COMMAND_HANDLER(esp_usb_jtag_chip_id)"},{"line_number":814,"context_line":"{"},{"line_number":815,"context_line":"\tif (CMD_ARGC \u003c 1) {"},{"line_number":816,"context_line":"\t\tLOG_ERROR(\"You need to supply the chip id\");"},{"line_number":817,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":818,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"ca474964_4ee5163b","line":815,"updated":"2022-04-22 09:44:57.000000000","message":"and here","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":812,"context_line":""},{"line_number":813,"context_line":"COMMAND_HANDLER(esp_usb_jtag_chip_id)"},{"line_number":814,"context_line":"{"},{"line_number":815,"context_line":"\tif (CMD_ARGC \u003c 1) {"},{"line_number":816,"context_line":"\t\tLOG_ERROR(\"You need to supply the chip id\");"},{"line_number":817,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":818,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"6356aae2_8afb2336","line":815,"in_reply_to":"ca474964_4ee5163b","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":850,"context_line":"\t\t.handler \u003d \u0026esp_usb_jtag_vid_pid,"},{"line_number":851,"context_line":"\t\t.mode \u003d COMMAND_CONFIG,"},{"line_number":852,"context_line":"\t\t.help \u003d \"set vendor ID and product ID for ESP usb jtag driver\","},{"line_number":853,"context_line":"\t\t.usage \u003d \"\","},{"line_number":854,"context_line":"\t},"},{"line_number":855,"context_line":"\t{"},{"line_number":856,"context_line":"\t\t.name \u003d \"caps_descriptor\","}],"source_content_type":"text/x-csrc","patch_set":2,"id":"4f1d8c9f_2042f668","line":853,"updated":"2022-04-22 09:44:57.000000000","message":".usage \u003d \"vid pid\";","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":850,"context_line":"\t\t.handler \u003d \u0026esp_usb_jtag_vid_pid,"},{"line_number":851,"context_line":"\t\t.mode \u003d COMMAND_CONFIG,"},{"line_number":852,"context_line":"\t\t.help \u003d \"set vendor ID and product ID for ESP usb jtag driver\","},{"line_number":853,"context_line":"\t\t.usage \u003d \"\","},{"line_number":854,"context_line":"\t},"},{"line_number":855,"context_line":"\t{"},{"line_number":856,"context_line":"\t\t.name \u003d \"caps_descriptor\","}],"source_content_type":"text/x-csrc","patch_set":2,"id":"a0483743_97fbf740","line":853,"in_reply_to":"4f1d8c9f_2042f668","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":857,"context_line":"\t\t.handler \u003d \u0026esp_usb_jtag_caps_descriptor,"},{"line_number":858,"context_line":"\t\t.mode \u003d COMMAND_CONFIG,"},{"line_number":859,"context_line":"\t\t.help \u003d \"set jtag descriptor to read capabilities of ESP usb jtag driver\","},{"line_number":860,"context_line":"\t\t.usage \u003d \"\","},{"line_number":861,"context_line":"\t},"},{"line_number":862,"context_line":"\t{"},{"line_number":863,"context_line":"\t\t.name \u003d \"chip_id\","}],"source_content_type":"text/x-csrc","patch_set":2,"id":"04ee3ba7_1d43ad20","line":860,"updated":"2022-04-22 09:44:57.000000000","message":"\"descriptor\",","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":857,"context_line":"\t\t.handler \u003d \u0026esp_usb_jtag_caps_descriptor,"},{"line_number":858,"context_line":"\t\t.mode \u003d COMMAND_CONFIG,"},{"line_number":859,"context_line":"\t\t.help \u003d \"set jtag descriptor to read capabilities of ESP usb jtag driver\","},{"line_number":860,"context_line":"\t\t.usage \u003d \"\","},{"line_number":861,"context_line":"\t},"},{"line_number":862,"context_line":"\t{"},{"line_number":863,"context_line":"\t\t.name \u003d \"chip_id\","}],"source_content_type":"text/x-csrc","patch_set":2,"id":"8b739765_ec448587","line":860,"in_reply_to":"04ee3ba7_1d43ad20","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4979fed05f0216fa171b0c03984f39358c0494c2","unresolved":true,"context_lines":[{"line_number":864,"context_line":"\t\t.handler \u003d \u0026esp_usb_jtag_chip_id,"},{"line_number":865,"context_line":"\t\t.mode \u003d COMMAND_CONFIG,"},{"line_number":866,"context_line":"\t\t.help \u003d \"set chip_id to transfer to the bridge\","},{"line_number":867,"context_line":"\t\t.usage \u003d \"\","},{"line_number":868,"context_line":"\t},"},{"line_number":869,"context_line":"\tCOMMAND_REGISTRATION_DONE"},{"line_number":870,"context_line":"};"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"2b3d0696_a3434772","line":867,"updated":"2022-04-22 09:44:57.000000000","message":"\"chip_id\",","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"ebde5320e74535d8e0fd761ee9d4544739ee97bb","unresolved":false,"context_lines":[{"line_number":864,"context_line":"\t\t.handler \u003d \u0026esp_usb_jtag_chip_id,"},{"line_number":865,"context_line":"\t\t.mode \u003d COMMAND_CONFIG,"},{"line_number":866,"context_line":"\t\t.help \u003d \"set chip_id to transfer to the bridge\","},{"line_number":867,"context_line":"\t\t.usage \u003d \"\","},{"line_number":868,"context_line":"\t},"},{"line_number":869,"context_line":"\tCOMMAND_REGISTRATION_DONE"},{"line_number":870,"context_line":"};"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"432e4d79_e1688c27","line":867,"in_reply_to":"2b3d0696_a3434772","updated":"2022-04-23 19:03:59.000000000","message":"Done","commit_id":"0790b4e65cec738e9ce7ca111b9318795d482f93"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"5d03a1f157185bf7be6bc6aaf8949c1302de41f1","unresolved":true,"context_lines":[{"line_number":181,"context_line":"/* Out data can be buffered for longer without issues (as long as the in buffer does not overflow),"},{"line_number":182,"context_line":" * so we\u0027ll use an out buffer that is much larger than the out ep size. */"},{"line_number":183,"context_line":"#define OUT_BUF_SZ (OUT_EP_SZ * 32)"},{"line_number":184,"context_line":"/* T he in buffer cannot be larger than the device can offer, though. */"},{"line_number":185,"context_line":"#define IN_BUF_SZ 64"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"/* Because a series of out commands can lead to a multitude of IN_BUF_SZ-sized in packets"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"bc2c17b6_bd421f0d","line":184,"updated":"2022-05-01 15:26:29.000000000","message":"typo s/T he/The/","commit_id":"48ec51dbaec80350caa2cd777d2c095b2281d304"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"298bc97e456b73ff520f12035a123933b4a8d94a","unresolved":false,"context_lines":[{"line_number":181,"context_line":"/* Out data can be buffered for longer without issues (as long as the in buffer does not overflow),"},{"line_number":182,"context_line":" * so we\u0027ll use an out buffer that is much larger than the out ep size. */"},{"line_number":183,"context_line":"#define OUT_BUF_SZ (OUT_EP_SZ * 32)"},{"line_number":184,"context_line":"/* T he in buffer cannot be larger than the device can offer, though. */"},{"line_number":185,"context_line":"#define IN_BUF_SZ 64"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"/* Because a series of out commands can lead to a multitude of IN_BUF_SZ-sized in packets"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"3a0dc494_b4ccc4ca","line":184,"in_reply_to":"bc2c17b6_bd421f0d","updated":"2022-05-01 22:33:29.000000000","message":"Done","commit_id":"48ec51dbaec80350caa2cd777d2c095b2281d304"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"5d03a1f157185bf7be6bc6aaf8949c1302de41f1","unresolved":true,"context_lines":[{"line_number":405,"context_line":"\t\treturn ret;"},{"line_number":406,"context_line":"\tct--;\t/* as the previous line already executes the command one time */"},{"line_number":407,"context_line":"\twhile (ct \u003e 0) {"},{"line_number":408,"context_line":"\t\tret \u003d esp_usb_jtag_command_add_raw(CMD_REP(ct\u00263));"},{"line_number":409,"context_line":"\t\tif (ret !\u003d ERROR_OK)"},{"line_number":410,"context_line":"\t\t\treturn ret;"},{"line_number":411,"context_line":"\t\tct \u003e\u003e\u003d 2;"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"1e446a2d_cfa6f782","line":408,"updated":"2022-05-01 15:26:29.000000000","message":"add space around \u0027\u0026\u0027","commit_id":"48ec51dbaec80350caa2cd777d2c095b2281d304"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"298bc97e456b73ff520f12035a123933b4a8d94a","unresolved":false,"context_lines":[{"line_number":405,"context_line":"\t\treturn ret;"},{"line_number":406,"context_line":"\tct--;\t/* as the previous line already executes the command one time */"},{"line_number":407,"context_line":"\twhile (ct \u003e 0) {"},{"line_number":408,"context_line":"\t\tret \u003d esp_usb_jtag_command_add_raw(CMD_REP(ct\u00263));"},{"line_number":409,"context_line":"\t\tif (ret !\u003d ERROR_OK)"},{"line_number":410,"context_line":"\t\t\treturn ret;"},{"line_number":411,"context_line":"\t\tct \u003e\u003e\u003d 2;"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"abbfee00_f760ca0e","line":408,"in_reply_to":"1e446a2d_cfa6f782","updated":"2022-05-01 22:33:29.000000000","message":"Done","commit_id":"48ec51dbaec80350caa2cd777d2c095b2281d304"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"5d03a1f157185bf7be6bc6aaf8949c1302de41f1","unresolved":true,"context_lines":[{"line_number":601,"context_line":"\t\t\tpriv-\u003ediv_max \u003d spcap-\u003ediv_max;"},{"line_number":602,"context_line":"\t\t\t/* TODO: mark in priv that this is apb-derived and as such may change if apb"},{"line_number":603,"context_line":"\t\t\t * ever changes? */"},{"line_number":604,"context_line":"\t\t} else"},{"line_number":605,"context_line":"\t\t\tLOG_WARNING(\"esp_usb_jtag: unknown caps type 0x%X\", dhdr-\u003etype);"},{"line_number":606,"context_line":"\t\tp +\u003d dhdr-\u003elength;"},{"line_number":607,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"e38c9825_c2f01b49","line":604,"updated":"2022-05-01 15:26:29.000000000","message":"add {} also to the else branch","commit_id":"48ec51dbaec80350caa2cd777d2c095b2281d304"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"298bc97e456b73ff520f12035a123933b4a8d94a","unresolved":false,"context_lines":[{"line_number":601,"context_line":"\t\t\tpriv-\u003ediv_max \u003d spcap-\u003ediv_max;"},{"line_number":602,"context_line":"\t\t\t/* TODO: mark in priv that this is apb-derived and as such may change if apb"},{"line_number":603,"context_line":"\t\t\t * ever changes? */"},{"line_number":604,"context_line":"\t\t} else"},{"line_number":605,"context_line":"\t\t\tLOG_WARNING(\"esp_usb_jtag: unknown caps type 0x%X\", dhdr-\u003etype);"},{"line_number":606,"context_line":"\t\tp +\u003d dhdr-\u003elength;"},{"line_number":607,"context_line":"\t}"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"9dafe5ba_ecdc0144","line":604,"in_reply_to":"e38c9825_c2f01b49","updated":"2022-05-01 22:33:29.000000000","message":"Done","commit_id":"48ec51dbaec80350caa2cd777d2c095b2281d304"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"5d03a1f157185bf7be6bc6aaf8949c1302de41f1","unresolved":true,"context_lines":[{"line_number":662,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":663,"context_line":"\t}"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"\t*divisor \u003d priv-\u003ebase_speed_khz/khz;"},{"line_number":666,"context_line":"\tLOG_DEBUG(\"Divisor for %d KHz with base clock of %d khz is %d\","},{"line_number":667,"context_line":"\t\tkhz,"},{"line_number":668,"context_line":"\t\tpriv-\u003ebase_speed_khz,"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"89697884_8b66d8de","line":665,"updated":"2022-05-01 15:26:29.000000000","message":"add space around \u0027/\u0027","commit_id":"48ec51dbaec80350caa2cd777d2c095b2281d304"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"298bc97e456b73ff520f12035a123933b4a8d94a","unresolved":false,"context_lines":[{"line_number":662,"context_line":"\t\treturn ERROR_FAIL;"},{"line_number":663,"context_line":"\t}"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"\t*divisor \u003d priv-\u003ebase_speed_khz/khz;"},{"line_number":666,"context_line":"\tLOG_DEBUG(\"Divisor for %d KHz with base clock of %d khz is %d\","},{"line_number":667,"context_line":"\t\tkhz,"},{"line_number":668,"context_line":"\t\tpriv-\u003ebase_speed_khz,"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"5076369d_7479d1ed","line":665,"in_reply_to":"89697884_8b66d8de","updated":"2022-05-01 22:33:29.000000000","message":"Done","commit_id":"48ec51dbaec80350caa2cd777d2c095b2281d304"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"599f9ef9eeef5521d6c5ea1d050f7320927e0413","unresolved":true,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"#define JTAG_PROTO_CAPS_SPEED_APB_TYPE        1"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"#define VEND_DESCRIPTOR_BUILTIN_JTAG_CAPS     0x2000"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"#define VEND_JTAG_SETDIV        0"},{"line_number":156,"context_line":"#define VEND_JTAG_SETIO         1"}],"source_content_type":"text/x-csrc","patch_set":10,"id":"758001c3_94a11920","line":153,"updated":"2022-06-13 22:18:57.000000000","message":"yes, this fixes the endianess, but I think using these macros kills the readability.\nWould it be more readable using something halfway?\nstruct jtag_proto_caps_speed_apb {\n\tuint8_t type;\t/* Type, always JTAG_PROTO_CAPS_SPEED_APB_TYPE */\n\tuint8_t length;\t/* Length of this */\n\tuint8_t apb_speed_10khz[2];\t/* ABP bus speed, in 10KHz increments. Base speed is half this. */\n\tuint8_t div_min[2];\t/* minimum divisor (to base speed), inclusive */\n\tuint8_t div_max[2];\t/* maximum divisor (to base speed), inclusive */\n} __packed;\n\nand below?\npriv-\u003ediv_max \u003d le_to_h_u16(\u0026spcap-\u003ediv_max);","commit_id":"e755e9dcd13cfd48f90b79f3712791a310946602"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"4cb498cf33fd0e842dce229648af86e414421dee","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"#define JTAG_PROTO_CAPS_SPEED_APB_TYPE        1"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"#define VEND_DESCRIPTOR_BUILTIN_JTAG_CAPS     0x2000"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"#define VEND_JTAG_SETDIV        0"},{"line_number":156,"context_line":"#define VEND_JTAG_SETIO         1"}],"source_content_type":"text/x-csrc","patch_set":10,"id":"0f2854d0_c92fb6e5","line":153,"in_reply_to":"758001c3_94a11920","updated":"2022-06-15 18:05:44.000000000","message":"ok. So we turned back to __packed struct again.","commit_id":"e755e9dcd13cfd48f90b79f3712791a310946602"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"ef197b3fd57db588240b832e31f44d0bbdba668e","unresolved":true,"context_lines":[{"line_number":533,"context_line":"\tint p \u003d esp_usb_jtag_caps \u003d\u003d"},{"line_number":534,"context_line":"\t\tVEND_DESCR_BUILTIN_JTAG_CAPS ? JTAG_BUILTIN_DESCR_START_OFF : JTAG_EUB_DESCR_START_OFF;"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"\tstruct jtag_proto_caps_hdr *hdr \u003d (struct jtag_proto_caps_hdr *)\u0026jtag_caps_desc[p];"},{"line_number":537,"context_line":"\tif (hdr-\u003eproto_ver !\u003d JTAG_PROTO_CAPS_VER) {"},{"line_number":538,"context_line":"\t\tLOG_ERROR(\"esp_usb_jtag: unknown jtag_caps descriptor version 0x%X!\","},{"line_number":539,"context_line":"\t\t\thdr-\u003eproto_ver);"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"c2de3572_84177ef4","line":536,"updated":"2022-06-15 22:10:05.000000000","message":"before this, you should guarantee you have received enough data to get hdr:\n if (p + sizeof(struct jtag_proto_caps_hdr) \u003e jtag_caps_read_len)\n   error;","commit_id":"7c1c79be0b8adcdcfe14283478dc5aca2d7b0554"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"225ec90328e0c2642648ae21bfad5b6caac88242","unresolved":false,"context_lines":[{"line_number":533,"context_line":"\tint p \u003d esp_usb_jtag_caps \u003d\u003d"},{"line_number":534,"context_line":"\t\tVEND_DESCR_BUILTIN_JTAG_CAPS ? JTAG_BUILTIN_DESCR_START_OFF : JTAG_EUB_DESCR_START_OFF;"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"\tstruct jtag_proto_caps_hdr *hdr \u003d (struct jtag_proto_caps_hdr *)\u0026jtag_caps_desc[p];"},{"line_number":537,"context_line":"\tif (hdr-\u003eproto_ver !\u003d JTAG_PROTO_CAPS_VER) {"},{"line_number":538,"context_line":"\t\tLOG_ERROR(\"esp_usb_jtag: unknown jtag_caps descriptor version 0x%X!\","},{"line_number":539,"context_line":"\t\t\thdr-\u003eproto_ver);"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"db1e294b_7f08dff0","line":536,"in_reply_to":"c2de3572_84177ef4","updated":"2022-06-16 19:17:54.000000000","message":"Done","commit_id":"7c1c79be0b8adcdcfe14283478dc5aca2d7b0554"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"ef197b3fd57db588240b832e31f44d0bbdba668e","unresolved":true,"context_lines":[{"line_number":547,"context_line":""},{"line_number":548,"context_line":"\tp +\u003d sizeof(struct jtag_proto_caps_hdr);"},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"\twhile (p \u003c hdr-\u003elength) {"},{"line_number":551,"context_line":"\t\tstruct jtag_gen_hdr *dhdr \u003d (struct jtag_gen_hdr *)\u0026jtag_caps_desc[p];"},{"line_number":552,"context_line":"\t\tif (dhdr-\u003etype \u003d\u003d JTAG_PROTO_CAPS_SPEED_APB_TYPE) {"},{"line_number":553,"context_line":"\t\t\tstruct jtag_proto_caps_speed_apb *spcap \u003d (struct jtag_proto_caps_speed_apb *)dhdr;"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"59391890_76b82db5","line":550,"updated":"2022-06-15 22:10:05.000000000","message":"Also here you have to guarantee you have received enough data\n while ((p + sizeof(struct jtag_proto_caps_speed_apb)) \u003c hdr-\u003elength)","commit_id":"7c1c79be0b8adcdcfe14283478dc5aca2d7b0554"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"225ec90328e0c2642648ae21bfad5b6caac88242","unresolved":false,"context_lines":[{"line_number":547,"context_line":""},{"line_number":548,"context_line":"\tp +\u003d sizeof(struct jtag_proto_caps_hdr);"},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"\twhile (p \u003c hdr-\u003elength) {"},{"line_number":551,"context_line":"\t\tstruct jtag_gen_hdr *dhdr \u003d (struct jtag_gen_hdr *)\u0026jtag_caps_desc[p];"},{"line_number":552,"context_line":"\t\tif (dhdr-\u003etype \u003d\u003d JTAG_PROTO_CAPS_SPEED_APB_TYPE) {"},{"line_number":553,"context_line":"\t\t\tstruct jtag_proto_caps_speed_apb *spcap \u003d (struct jtag_proto_caps_speed_apb *)dhdr;"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"0dc0ce74_a4f78b2a","line":550,"in_reply_to":"59391890_76b82db5","updated":"2022-06-16 19:17:54.000000000","message":"Done","commit_id":"7c1c79be0b8adcdcfe14283478dc5aca2d7b0554"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"ef197b3fd57db588240b832e31f44d0bbdba668e","unresolved":true,"context_lines":[{"line_number":694,"context_line":"COMMAND_HANDLER(esp_usb_jtag_vid_pid)"},{"line_number":695,"context_line":"{"},{"line_number":696,"context_line":"\tif (CMD_ARGC !\u003d 2) {"},{"line_number":697,"context_line":"\t\tLOG_ERROR(\"Command takes exactly 2 parameters.You need to supply the vendor and product IDs\");"},{"line_number":698,"context_line":"\t\treturn ERROR_COMMAND_SYNTAX_ERROR;"},{"line_number":699,"context_line":"\t}"},{"line_number":700,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":11,"id":"db19bdc0_c5d6530b","line":697,"updated":"2022-06-15 22:10:05.000000000","message":"remove the LOG_ERROR and only return ERROR_COMMAND_SYNTAX_ERROR. OpenOCD will automatically dump the usage.","commit_id":"7c1c79be0b8adcdcfe14283478dc5aca2d7b0554"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"225ec90328e0c2642648ae21bfad5b6caac88242","unresolved":false,"context_lines":[{"line_number":694,"context_line":"COMMAND_HANDLER(esp_usb_jtag_vid_pid)"},{"line_number":695,"context_line":"{"},{"line_number":696,"context_line":"\tif (CMD_ARGC !\u003d 2) {"},{"line_number":697,"context_line":"\t\tLOG_ERROR(\"Command takes exactly 2 parameters.You need to supply the vendor and product IDs\");"},{"line_number":698,"context_line":"\t\treturn ERROR_COMMAND_SYNTAX_ERROR;"},{"line_number":699,"context_line":"\t}"},{"line_number":700,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":11,"id":"54e14b87_5ec7ce31","line":697,"in_reply_to":"db19bdc0_c5d6530b","updated":"2022-06-16 19:17:54.000000000","message":"Done","commit_id":"7c1c79be0b8adcdcfe14283478dc5aca2d7b0554"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"ef197b3fd57db588240b832e31f44d0bbdba668e","unresolved":true,"context_lines":[{"line_number":708,"context_line":"COMMAND_HANDLER(esp_usb_jtag_caps_descriptor)"},{"line_number":709,"context_line":"{"},{"line_number":710,"context_line":"\tif (CMD_ARGC !\u003d 1) {"},{"line_number":711,"context_line":"\t\tLOG_ERROR(\"Command takes exactly 1 parameter.You need to supply the jtag capabilities descriptor\");"},{"line_number":712,"context_line":"\t\treturn ERROR_COMMAND_SYNTAX_ERROR;"},{"line_number":713,"context_line":"\t}"},{"line_number":714,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":11,"id":"90be90e1_34f8cdf6","line":711,"updated":"2022-06-15 22:10:05.000000000","message":"same here","commit_id":"7c1c79be0b8adcdcfe14283478dc5aca2d7b0554"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"225ec90328e0c2642648ae21bfad5b6caac88242","unresolved":false,"context_lines":[{"line_number":708,"context_line":"COMMAND_HANDLER(esp_usb_jtag_caps_descriptor)"},{"line_number":709,"context_line":"{"},{"line_number":710,"context_line":"\tif (CMD_ARGC !\u003d 1) {"},{"line_number":711,"context_line":"\t\tLOG_ERROR(\"Command takes exactly 1 parameter.You need to supply the jtag capabilities descriptor\");"},{"line_number":712,"context_line":"\t\treturn ERROR_COMMAND_SYNTAX_ERROR;"},{"line_number":713,"context_line":"\t}"},{"line_number":714,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":11,"id":"d7e773b8_7580031f","line":711,"in_reply_to":"90be90e1_34f8cdf6","updated":"2022-06-16 19:17:54.000000000","message":"Done","commit_id":"7c1c79be0b8adcdcfe14283478dc5aca2d7b0554"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"ef197b3fd57db588240b832e31f44d0bbdba668e","unresolved":true,"context_lines":[{"line_number":721,"context_line":"COMMAND_HANDLER(esp_usb_jtag_chip_id)"},{"line_number":722,"context_line":"{"},{"line_number":723,"context_line":"\tif (CMD_ARGC !\u003d 1) {"},{"line_number":724,"context_line":"\t\tLOG_ERROR(\"Command takes exactly 1 parameter.You need to supply the chip id\");"},{"line_number":725,"context_line":"\t\treturn ERROR_COMMAND_SYNTAX_ERROR;"},{"line_number":726,"context_line":"\t}"},{"line_number":727,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":11,"id":"41e37539_f1ebf2c3","line":724,"updated":"2022-06-15 22:10:05.000000000","message":"and here","commit_id":"7c1c79be0b8adcdcfe14283478dc5aca2d7b0554"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"225ec90328e0c2642648ae21bfad5b6caac88242","unresolved":false,"context_lines":[{"line_number":721,"context_line":"COMMAND_HANDLER(esp_usb_jtag_chip_id)"},{"line_number":722,"context_line":"{"},{"line_number":723,"context_line":"\tif (CMD_ARGC !\u003d 1) {"},{"line_number":724,"context_line":"\t\tLOG_ERROR(\"Command takes exactly 1 parameter.You need to supply the chip id\");"},{"line_number":725,"context_line":"\t\treturn ERROR_COMMAND_SYNTAX_ERROR;"},{"line_number":726,"context_line":"\t}"},{"line_number":727,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":11,"id":"1c1a6c15_ad7d3032","line":724,"in_reply_to":"41e37539_f1ebf2c3","updated":"2022-06-16 19:17:54.000000000","message":"Done","commit_id":"7c1c79be0b8adcdcfe14283478dc5aca2d7b0554"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4a23278a7fb6b1fbfeac5684247a52e51ac0aedf","unresolved":true,"context_lines":[{"line_number":515,"context_line":"\t\tgoto out;"},{"line_number":516,"context_line":"\t}"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"\tuint8_t jtag_caps_desc[256];"},{"line_number":519,"context_line":"\tint jtag_caps_read_len \u003d jtag_libusb_control_transfer(priv-\u003eusb_device,"},{"line_number":520,"context_line":"\t\tLIBUSB_ENDPOINT_IN | LIBUSB_REQUEST_TYPE_STANDARD | LIBUSB_RECIPIENT_DEVICE,"},{"line_number":521,"context_line":"\t\tLIBUSB_REQUEST_GET_DESCRIPTOR, esp_usb_jtag_caps, 0,"}],"source_content_type":"text/x-csrc","patch_set":14,"id":"ce7042df_6f57ab29","line":518,"updated":"2022-06-16 21:12:20.000000000","message":"must this be 256, or can be 255?\nOr can even be a macro?","commit_id":"2117e247c0ab0e18cb6b99e69b786cf561a5bf30"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"d68f843e060943e28edcc86a9b93acb86d2ab759","unresolved":false,"context_lines":[{"line_number":515,"context_line":"\t\tgoto out;"},{"line_number":516,"context_line":"\t}"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"\tuint8_t jtag_caps_desc[256];"},{"line_number":519,"context_line":"\tint jtag_caps_read_len \u003d jtag_libusb_control_transfer(priv-\u003eusb_device,"},{"line_number":520,"context_line":"\t\tLIBUSB_ENDPOINT_IN | LIBUSB_REQUEST_TYPE_STANDARD | LIBUSB_RECIPIENT_DEVICE,"},{"line_number":521,"context_line":"\t\tLIBUSB_REQUEST_GET_DESCRIPTOR, esp_usb_jtag_caps, 0,"}],"source_content_type":"text/x-csrc","patch_set":14,"id":"555557f2_fa1f3e02","line":518,"in_reply_to":"ce7042df_6f57ab29","updated":"2022-06-17 07:44:56.000000000","message":"Tested with 255. It is also OK. And defined len as macro","commit_id":"2117e247c0ab0e18cb6b99e69b786cf561a5bf30"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"4a23278a7fb6b1fbfeac5684247a52e51ac0aedf","unresolved":true,"context_lines":[{"line_number":552,"context_line":""},{"line_number":553,"context_line":"\tp +\u003d sizeof(struct jtag_proto_caps_hdr);"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"\twhile (p \u003c hdr-\u003elength) {"},{"line_number":556,"context_line":"\t\tstruct jtag_gen_hdr *dhdr \u003d (struct jtag_gen_hdr *)\u0026jtag_caps_desc[p];"},{"line_number":557,"context_line":"\t\tif (dhdr-\u003etype \u003d\u003d JTAG_PROTO_CAPS_SPEED_APB_TYPE) {"},{"line_number":558,"context_line":"\t\t\tstruct jtag_proto_caps_speed_apb *spcap \u003d (struct jtag_proto_caps_speed_apb *)dhdr;"}],"source_content_type":"text/x-csrc","patch_set":14,"id":"cf9b6274_01631dde","line":555,"updated":"2022-06-16 21:12:20.000000000","message":"I think it\u0027s not enough checking only at the end of this loop.\n\nHere you execute the loop if p \u003c hdr-\u003elength, so there is some space between p and hdr-\u003elength, but in next line you expect that p is the start of a struct jtag_gen_hdr that later can be cast-ed to struct jtag_proto_caps_speed_apb.\nAre you sure that these struct fit between p and  hdr-\u003elength?\nThat\u0027s why I suggested to change the loop condition, but I was wrong. It should be\n while ((p + sizeof(struct jtag_gen_hdr)) \u003c hdr-\u003elength)\nand inside the loop\n if (dhdr-\u003etype \u003d\u003d JTAG_PROTO_CAPS_SPEED_APB_TYPE) {\n   if ((p + sizeof(struct jtag_proto_caps_speed_apb)) \u003c hdr-\u003elength)\n     error no space for struct jtag_proto_caps_speed_apb","commit_id":"2117e247c0ab0e18cb6b99e69b786cf561a5bf30"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"d68f843e060943e28edcc86a9b93acb86d2ab759","unresolved":false,"context_lines":[{"line_number":552,"context_line":""},{"line_number":553,"context_line":"\tp +\u003d sizeof(struct jtag_proto_caps_hdr);"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"\twhile (p \u003c hdr-\u003elength) {"},{"line_number":556,"context_line":"\t\tstruct jtag_gen_hdr *dhdr \u003d (struct jtag_gen_hdr *)\u0026jtag_caps_desc[p];"},{"line_number":557,"context_line":"\t\tif (dhdr-\u003etype \u003d\u003d JTAG_PROTO_CAPS_SPEED_APB_TYPE) {"},{"line_number":558,"context_line":"\t\t\tstruct jtag_proto_caps_speed_apb *spcap \u003d (struct jtag_proto_caps_speed_apb *)dhdr;"}],"source_content_type":"text/x-csrc","patch_set":14,"id":"382f6aa2_25120bf1","line":555,"in_reply_to":"cf9b6274_01631dde","updated":"2022-06-17 07:44:56.000000000","message":"Sorry, not debugged enough. Now it is ok. Tested with 2 different client.","commit_id":"2117e247c0ab0e18cb6b99e69b786cf561a5bf30"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"872e76e380b8f7d6a4aaa52e60a0f6627a0203a5","unresolved":true,"context_lines":[{"line_number":448,"context_line":"static int esp_usb_jtag_reset(int trst, int srst)"},{"line_number":449,"context_line":"{"},{"line_number":450,"context_line":"\t/* TODO: handle trst using setup commands. Kind-of superfluous, however, as we can also do"},{"line_number":451,"context_line":"\t * a tap reser using tms, and it\u0027s also not implemented on other ESP32 chips with external JTAG. */"},{"line_number":452,"context_line":"\treturn esp_usb_jtag_command_add(CMD_RST(srst));"},{"line_number":453,"context_line":"}"},{"line_number":454,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":16,"id":"87d79be9_1a930be6","line":451,"updated":"2022-06-18 22:37:05.000000000","message":"typo s/reser/reset/","commit_id":"1e79367588483f9c40f14d2e038de7dd016f556d"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"e095f81033da5bf47f8de4edc44df82b4793d71a","unresolved":false,"context_lines":[{"line_number":448,"context_line":"static int esp_usb_jtag_reset(int trst, int srst)"},{"line_number":449,"context_line":"{"},{"line_number":450,"context_line":"\t/* TODO: handle trst using setup commands. Kind-of superfluous, however, as we can also do"},{"line_number":451,"context_line":"\t * a tap reser using tms, and it\u0027s also not implemented on other ESP32 chips with external JTAG. */"},{"line_number":452,"context_line":"\treturn esp_usb_jtag_command_add(CMD_RST(srst));"},{"line_number":453,"context_line":"}"},{"line_number":454,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":16,"id":"d2958d80_d8624d41","line":451,"in_reply_to":"87d79be9_1a930be6","updated":"2022-06-18 22:53:45.000000000","message":"Done","commit_id":"1e79367588483f9c40f14d2e038de7dd016f556d"}],"tcl/interface/esp_usb_bridge.cfg":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"5d03a1f157185bf7be6bc6aaf8949c1302de41f1","unresolved":true,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":"adapter driver esp_usb_jtag"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"espusbjtag vid_pid 0x303a 0x1002"}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"c5eb0128_d82ad364","line":1,"updated":"2022-05-01 15:26:29.000000000","message":"Please add as first line\n# SPDX-License-Identifier: GPL-2.0-or-later\nThen a short description, even a single line, in a comment is welcome","commit_id":"48ec51dbaec80350caa2cd777d2c095b2281d304"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"298bc97e456b73ff520f12035a123933b4a8d94a","unresolved":false,"context_lines":[{"line_number":1,"context_line":""},{"line_number":2,"context_line":"adapter driver esp_usb_jtag"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"espusbjtag vid_pid 0x303a 0x1002"}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"bc663bab_ccbd7386","line":1,"in_reply_to":"c5eb0128_d82ad364","updated":"2022-05-01 22:33:29.000000000","message":"Done","commit_id":"48ec51dbaec80350caa2cd777d2c095b2281d304"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"5d03a1f157185bf7be6bc6aaf8949c1302de41f1","unresolved":true,"context_lines":[{"line_number":5,"context_line":"espusbjtag caps_descriptor 0x030A  # string descriptor index:10"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"#max speed"},{"line_number":8,"context_line":"adapter speed 40000"}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"c37081cd_13fc263d","line":8,"updated":"2022-05-01 15:26:29.000000000","message":"Usually the speed is reported in the tcl/board/ or tcl/target/ file.\nHere you can add in a comment what the max speed is","commit_id":"48ec51dbaec80350caa2cd777d2c095b2281d304"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"e5f2f0140cfb0f1618ae40bd9dde85f101ec3893","unresolved":false,"context_lines":[{"line_number":5,"context_line":"espusbjtag caps_descriptor 0x030A  # string descriptor index:10"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"#max speed"},{"line_number":8,"context_line":"adapter speed 40000"}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"f713c824_821fbea7","line":8,"in_reply_to":"177fbcf4_6003af7c","updated":"2022-05-09 22:47:14.000000000","message":"Rebased onto esp32s2 patch. So that we can use esp32s2-bridge config file.","commit_id":"48ec51dbaec80350caa2cd777d2c095b2281d304"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"298bc97e456b73ff520f12035a123933b4a8d94a","unresolved":true,"context_lines":[{"line_number":5,"context_line":"espusbjtag caps_descriptor 0x030A  # string descriptor index:10"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"#max speed"},{"line_number":8,"context_line":"adapter speed 40000"}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"177fbcf4_6003af7c","line":8,"in_reply_to":"c37081cd_13fc263d","updated":"2022-05-01 22:33:29.000000000","message":"ok. I will move this setting after I create a patch for the compatible board/target.","commit_id":"48ec51dbaec80350caa2cd777d2c095b2281d304"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"ef197b3fd57db588240b832e31f44d0bbdba668e","unresolved":true,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"espusbjtag vid_pid 0x303a 0x1002"},{"line_number":9,"context_line":"espusbjtag caps_descriptor 0x030A  # string descriptor index:10"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":11,"id":"45922f71_cbeffd1c","line":10,"updated":"2022-06-15 22:10:05.000000000","message":"please remove the empty line at the end of the file","commit_id":"7c1c79be0b8adcdcfe14283478dc5aca2d7b0554"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"225ec90328e0c2642648ae21bfad5b6caac88242","unresolved":false,"context_lines":[{"line_number":7,"context_line":""},{"line_number":8,"context_line":"espusbjtag vid_pid 0x303a 0x1002"},{"line_number":9,"context_line":"espusbjtag caps_descriptor 0x030A  # string descriptor index:10"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":11,"id":"4abd9750_d617e740","line":10,"in_reply_to":"45922f71_cbeffd1c","updated":"2022-06-16 19:17:54.000000000","message":"Done","commit_id":"7c1c79be0b8adcdcfe14283478dc5aca2d7b0554"}],"tcl/interface/esp_usb_jtag.cfg":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"5d03a1f157185bf7be6bc6aaf8949c1302de41f1","unresolved":true,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"# ESP32-C3 builtin USB-JTAG adapter"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"814b75d1_0674f87a","line":1,"updated":"2022-05-01 15:26:29.000000000","message":"Please add as first line\n# SPDX-License-Identifier: GPL-2.0-or-later","commit_id":"48ec51dbaec80350caa2cd777d2c095b2281d304"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"298bc97e456b73ff520f12035a123933b4a8d94a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"# ESP32-C3 builtin USB-JTAG adapter"},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"f7d2ca2b_78e7d962","line":1,"in_reply_to":"814b75d1_0674f87a","updated":"2022-05-01 22:33:29.000000000","message":"Done","commit_id":"48ec51dbaec80350caa2cd777d2c095b2281d304"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"5d03a1f157185bf7be6bc6aaf8949c1302de41f1","unresolved":true,"context_lines":[{"line_number":8,"context_line":"espusbjtag caps_descriptor 0x2000"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"#max speed"},{"line_number":11,"context_line":"adapter speed 40000"}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"018dd4ee_626f1827","line":11,"updated":"2022-05-01 15:26:29.000000000","message":"same comment here where to put adapter speed","commit_id":"48ec51dbaec80350caa2cd777d2c095b2281d304"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"298bc97e456b73ff520f12035a123933b4a8d94a","unresolved":true,"context_lines":[{"line_number":8,"context_line":"espusbjtag caps_descriptor 0x2000"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"#max speed"},{"line_number":11,"context_line":"adapter speed 40000"}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"a82fdc0a_7169801a","line":11,"in_reply_to":"018dd4ee_626f1827","updated":"2022-05-01 22:33:29.000000000","message":"ok. I will move this setting after I create a patch for the compatible board/target.","commit_id":"48ec51dbaec80350caa2cd777d2c095b2281d304"},{"author":{"_account_id":1001964,"name":"Erhan Kurubas","display_name":"Erhan Kurubas","email":"erhan.kurubas@espressif.com","username":"erhankur"},"change_message_id":"e5f2f0140cfb0f1618ae40bd9dde85f101ec3893","unresolved":false,"context_lines":[{"line_number":8,"context_line":"espusbjtag caps_descriptor 0x2000"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"#max speed"},{"line_number":11,"context_line":"adapter speed 40000"}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"8e99f2c0_3687eb7c","line":11,"in_reply_to":"a82fdc0a_7169801a","updated":"2022-05-09 22:47:14.000000000","message":"esp_usb_jtag.cfg will be used by esp32c3 or esp32s3 chips. So, I removed this config until I create a patch for them.","commit_id":"48ec51dbaec80350caa2cd777d2c095b2281d304"}]}
