)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1002162,"name":"Steve Sims","email":"steves@broycecontrol.com","username":"steves"},"change_message_id":"b7e93dacbe24dcb1d79624d71d0fc23b92b1324d","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"c77d7ab0_d874ce5b","updated":"2023-07-10 07:59:30.000000000","message":"Thanks for looking at it Tomas, great points and I\u0027ll address these over the next few weeks and resubmit. Thank you also for the pointer on the async flash write, it is indeed slow at the moment taking almost 15-seconds for the 32k part that I\u0027ve tested against and so I\u0027ll take a look to try and implement this as well.","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"98d224035e3646d521be905aca2d71ebf8307e1b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3d003d34_3cbdc1fa","updated":"2023-07-08 09:46:45.000000000","message":"Thanks for the driver, Steve!\n\nPlease add driver documentation to doc/openocd.texi, chapter 12.5.2 Internal Flash (Microcontrollers)\n\nPlease check the new code with at least Clang Static Analyzer as described\nin https://openocd.org/doc/doxygen/html/patchguide.html\n\nMy concern is the speed of flash write. I guess that writing word-by-word (usually 3 msec per word on a typical USB FS adapter) is too slow for devices with up to 128 kBytes flash (more than 90 seconds to write the full flash). We can accept the driver with the simple slow write for now (the slow write is better than no support at all). To get reasonable flash write speed I would recommend implementing an async target flash loader as used in numerous drivers.","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1002162,"name":"Steve Sims","email":"steves@broycecontrol.com","username":"steves"},"change_message_id":"debb6fc5529adca2f0f56c562bbae2a10b1855e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"985f5bf0_147f5da1","in_reply_to":"3d003d34_3cbdc1fa","updated":"2023-07-19 08:08:26.000000000","message":"I\u0027ve elected to submit the slow version as this patch and I\u0027ll look to produce an async version in a separate patch.","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1002162,"name":"Steve Sims","email":"steves@broycecontrol.com","username":"steves"},"change_message_id":"debb6fc5529adca2f0f56c562bbae2a10b1855e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"8254d3b6_373d84c9","in_reply_to":"c77d7ab0_d874ce5b","updated":"2023-07-19 08:08:26.000000000","message":"Done","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"4744740c2f9e29eee6f3184734a02dd3d4fec697","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"d02b53f7_dc6a6d4c","updated":"2023-07-21 13:20:39.000000000","message":"The flash driver code looks good, thanks.\nI have last comments to the config file.","commit_id":"26dd8fabfba89300f10c1dc84f6a07ada8e707c2"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"157ce636ed089967b4d6c0abbb3d3a1444616208","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"98fa93da_c599d30c","updated":"2023-08-21 16:17:37.000000000","message":"Thanks!","commit_id":"b5c9b85074bc6f3a72e01d749e3c67e19b8e2753"}],"doc/openocd.texi":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"607a2edd0c0c0bc0d892cac793b35bb5a882d766","unresolved":true,"context_lines":[{"line_number":6681,"context_line":"@example"},{"line_number":6682,"context_line":"flash bank $_FLASHNAME ht32f 0 0 0 0 $_TARGETNAME"},{"line_number":6683,"context_line":"@end example"},{"line_number":6684,"context_line":"@end deffn"},{"line_number":6685,"context_line":""},{"line_number":6686,"context_line":"@deffn {Flash Driver} {kinetis}"},{"line_number":6687,"context_line":"@cindex kinetis"}],"source_content_type":"text/x-texinfo","patch_set":8,"id":"78d53733_7d5b3561","line":6684,"updated":"2023-09-02 10:39:45.000000000","message":"it\u0027s missing the documentation of the new command \"ht32f mass_erase\"\n@deffn {Command} {ht32f mass_erase} bank_id\ndescription\n@end deffn","commit_id":"b5c9b85074bc6f3a72e01d749e3c67e19b8e2753"}],"src/flash/nor/ht32f.c":[{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"98d224035e3646d521be905aca2d71ebf8307e1b","unresolved":true,"context_lines":[{"line_number":4,"context_line":"#include \"config.h\""},{"line_number":5,"context_line":"#endif"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"#include \"../common.h\""},{"line_number":8,"context_line":"#include \"../../target/target.h\""},{"line_number":9,"context_line":"#include \"../../helper/command.h\""},{"line_number":10,"context_line":"#include \"../../helper/log.h\""},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"#include \"imp.h\""},{"line_number":13,"context_line":"#include \u003ctarget/armv7m.h\u003e"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"7b2f1b98_a4addf4c","line":10,"range":{"start_line":7,"start_character":0,"end_line":10,"end_character":29},"updated":"2023-07-08 09:46:45.000000000","message":"All these headers are included directly or indirectly by imp.h","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1002162,"name":"Steve Sims","email":"steves@broycecontrol.com","username":"steves"},"change_message_id":"debb6fc5529adca2f0f56c562bbae2a10b1855e8","unresolved":false,"context_lines":[{"line_number":4,"context_line":"#include \"config.h\""},{"line_number":5,"context_line":"#endif"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"#include \"../common.h\""},{"line_number":8,"context_line":"#include \"../../target/target.h\""},{"line_number":9,"context_line":"#include \"../../helper/command.h\""},{"line_number":10,"context_line":"#include \"../../helper/log.h\""},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"#include \"imp.h\""},{"line_number":13,"context_line":"#include \u003ctarget/armv7m.h\u003e"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"29d33e27_960d8725","line":10,"range":{"start_line":7,"start_character":0,"end_line":10,"end_character":29},"in_reply_to":"7b2f1b98_a4addf4c","updated":"2023-07-19 08:08:26.000000000","message":"Done","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"4744740c2f9e29eee6f3184734a02dd3d4fec697","unresolved":false,"context_lines":[{"line_number":4,"context_line":"#include \"config.h\""},{"line_number":5,"context_line":"#endif"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"#include \"../common.h\""},{"line_number":8,"context_line":"#include \"../../target/target.h\""},{"line_number":9,"context_line":"#include \"../../helper/command.h\""},{"line_number":10,"context_line":"#include \"../../helper/log.h\""},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"#include \"imp.h\""},{"line_number":13,"context_line":"#include \u003ctarget/armv7m.h\u003e"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"5e831640_ff1f8f59","line":10,"range":{"start_line":7,"start_character":0,"end_line":10,"end_character":29},"in_reply_to":"7b2f1b98_a4addf4c","updated":"2023-07-21 13:20:39.000000000","message":"Done","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"98d224035e3646d521be905aca2d71ebf8307e1b","unresolved":true,"context_lines":[{"line_number":114,"context_line":"\t\t\treturn retval;"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"\t\tLOG_DEBUG(\"ht32f erased page %d\", i);"},{"line_number":117,"context_line":"\t\tbank-\u003esectors[i].is_erased \u003d 1;"},{"line_number":118,"context_line":"\t}"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"\treturn ERROR_OK;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"30c8d8ee_1c34d9fb","line":117,"range":{"start_line":117,"start_character":2,"end_line":117,"end_character":33},"updated":"2023-07-08 09:46:45.000000000","message":"Remove. See https://openocd.org/doc/doxygen/html/structflash__sector.html#a0304c23fe399635e65cbbdada6675cc9","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1002162,"name":"Steve Sims","email":"steves@broycecontrol.com","username":"steves"},"change_message_id":"debb6fc5529adca2f0f56c562bbae2a10b1855e8","unresolved":false,"context_lines":[{"line_number":114,"context_line":"\t\t\treturn retval;"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"\t\tLOG_DEBUG(\"ht32f erased page %d\", i);"},{"line_number":117,"context_line":"\t\tbank-\u003esectors[i].is_erased \u003d 1;"},{"line_number":118,"context_line":"\t}"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"\treturn ERROR_OK;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"29a214bc_226e37ee","line":117,"range":{"start_line":117,"start_character":2,"end_line":117,"end_character":33},"in_reply_to":"30c8d8ee_1c34d9fb","updated":"2023-07-19 08:08:26.000000000","message":"Done","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"4744740c2f9e29eee6f3184734a02dd3d4fec697","unresolved":false,"context_lines":[{"line_number":114,"context_line":"\t\t\treturn retval;"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"\t\tLOG_DEBUG(\"ht32f erased page %d\", i);"},{"line_number":117,"context_line":"\t\tbank-\u003esectors[i].is_erased \u003d 1;"},{"line_number":118,"context_line":"\t}"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"\treturn ERROR_OK;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"e52e3f74_f2b5bfed","line":117,"range":{"start_line":117,"start_character":2,"end_line":117,"end_character":33},"in_reply_to":"30c8d8ee_1c34d9fb","updated":"2023-07-21 13:20:39.000000000","message":"Done","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"98d224035e3646d521be905aca2d71ebf8307e1b","unresolved":true,"context_lines":[{"line_number":120,"context_line":"\treturn ERROR_OK;"},{"line_number":121,"context_line":"}"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"static int ht32f_protect(struct flash_bank *bank, int set, unsigned int first, unsigned int last)"},{"line_number":124,"context_line":"{"},{"line_number":125,"context_line":"\treturn ERROR_FLASH_OPER_UNSUPPORTED;"},{"line_number":126,"context_line":"}"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"static int ht32f_write(struct flash_bank *bank, const uint8_t *buffer,"},{"line_number":129,"context_line":"\t\t\t\t\t\t   uint32_t offset, uint32_t count)"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"0d19d628_8b469f32","line":126,"range":{"start_line":123,"start_character":0,"end_line":126,"end_character":1},"updated":"2023-07-08 09:46:45.000000000","message":"Please no defunct stubs. The flash infrastructure handles NULL .protect pointer just fine.","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1002162,"name":"Steve Sims","email":"steves@broycecontrol.com","username":"steves"},"change_message_id":"debb6fc5529adca2f0f56c562bbae2a10b1855e8","unresolved":false,"context_lines":[{"line_number":120,"context_line":"\treturn ERROR_OK;"},{"line_number":121,"context_line":"}"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"static int ht32f_protect(struct flash_bank *bank, int set, unsigned int first, unsigned int last)"},{"line_number":124,"context_line":"{"},{"line_number":125,"context_line":"\treturn ERROR_FLASH_OPER_UNSUPPORTED;"},{"line_number":126,"context_line":"}"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"static int ht32f_write(struct flash_bank *bank, const uint8_t *buffer,"},{"line_number":129,"context_line":"\t\t\t\t\t\t   uint32_t offset, uint32_t count)"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"3fd01f10_198bcb1e","line":126,"range":{"start_line":123,"start_character":0,"end_line":126,"end_character":1},"in_reply_to":"0d19d628_8b469f32","updated":"2023-07-19 08:08:26.000000000","message":"Done","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"4744740c2f9e29eee6f3184734a02dd3d4fec697","unresolved":false,"context_lines":[{"line_number":120,"context_line":"\treturn ERROR_OK;"},{"line_number":121,"context_line":"}"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"static int ht32f_protect(struct flash_bank *bank, int set, unsigned int first, unsigned int last)"},{"line_number":124,"context_line":"{"},{"line_number":125,"context_line":"\treturn ERROR_FLASH_OPER_UNSUPPORTED;"},{"line_number":126,"context_line":"}"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"static int ht32f_write(struct flash_bank *bank, const uint8_t *buffer,"},{"line_number":129,"context_line":"\t\t\t\t\t\t   uint32_t offset, uint32_t count)"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"7abfe6c8_0c09d36d","line":126,"range":{"start_line":123,"start_character":0,"end_line":126,"end_character":1},"in_reply_to":"0d19d628_8b469f32","updated":"2023-07-21 13:20:39.000000000","message":"Done","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"98d224035e3646d521be905aca2d71ebf8307e1b","unresolved":true,"context_lines":[{"line_number":137,"context_line":"\t\treturn ERROR_TARGET_NOT_HALTED;"},{"line_number":138,"context_line":"\t}"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"\tif (offset \u0026 0x3) {"},{"line_number":141,"context_line":"\t\tLOG_ERROR(\"offset 0x%\" PRIx32 \" breaks required 4-byte alignment\", offset);"},{"line_number":142,"context_line":"\t\treturn ERROR_FLASH_DST_BREAKS_ALIGNMENT;"},{"line_number":143,"context_line":"\t}"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"\tif (count \u0026 0x3) {"},{"line_number":146,"context_line":"\t\tLOG_ERROR(\"size 0x%\" PRIx32 \" breaks required 4-byte alignment\", count);"},{"line_number":147,"context_line":"\t\treturn ERROR_FLASH_DST_BREAKS_ALIGNMENT;"},{"line_number":148,"context_line":"\t}"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"\tuint32_t addr \u003d offset;"},{"line_number":151,"context_line":"\tfor (uint32_t i \u003d 0; i \u003c count; i +\u003d 4) {"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"2d89d3be_aa3abbb0","line":148,"range":{"start_line":140,"start_character":1,"end_line":148,"end_character":2},"updated":"2023-07-08 09:46:45.000000000","message":"See https://openocd.org/doc/doxygen/html/structflash__bank.html#a147a949414c39a4800543375aaed6449\nwrite_start_alignment and write_end_alignment","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"4744740c2f9e29eee6f3184734a02dd3d4fec697","unresolved":false,"context_lines":[{"line_number":137,"context_line":"\t\treturn ERROR_TARGET_NOT_HALTED;"},{"line_number":138,"context_line":"\t}"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"\tif (offset \u0026 0x3) {"},{"line_number":141,"context_line":"\t\tLOG_ERROR(\"offset 0x%\" PRIx32 \" breaks required 4-byte alignment\", offset);"},{"line_number":142,"context_line":"\t\treturn ERROR_FLASH_DST_BREAKS_ALIGNMENT;"},{"line_number":143,"context_line":"\t}"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"\tif (count \u0026 0x3) {"},{"line_number":146,"context_line":"\t\tLOG_ERROR(\"size 0x%\" PRIx32 \" breaks required 4-byte alignment\", count);"},{"line_number":147,"context_line":"\t\treturn ERROR_FLASH_DST_BREAKS_ALIGNMENT;"},{"line_number":148,"context_line":"\t}"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"\tuint32_t addr \u003d offset;"},{"line_number":151,"context_line":"\tfor (uint32_t i \u003d 0; i \u003c count; i +\u003d 4) {"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"0b745b28_dcde07fd","line":148,"range":{"start_line":140,"start_character":1,"end_line":148,"end_character":2},"in_reply_to":"2d89d3be_aa3abbb0","updated":"2023-07-21 13:20:39.000000000","message":"Done","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1002162,"name":"Steve Sims","email":"steves@broycecontrol.com","username":"steves"},"change_message_id":"debb6fc5529adca2f0f56c562bbae2a10b1855e8","unresolved":false,"context_lines":[{"line_number":137,"context_line":"\t\treturn ERROR_TARGET_NOT_HALTED;"},{"line_number":138,"context_line":"\t}"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"\tif (offset \u0026 0x3) {"},{"line_number":141,"context_line":"\t\tLOG_ERROR(\"offset 0x%\" PRIx32 \" breaks required 4-byte alignment\", offset);"},{"line_number":142,"context_line":"\t\treturn ERROR_FLASH_DST_BREAKS_ALIGNMENT;"},{"line_number":143,"context_line":"\t}"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"\tif (count \u0026 0x3) {"},{"line_number":146,"context_line":"\t\tLOG_ERROR(\"size 0x%\" PRIx32 \" breaks required 4-byte alignment\", count);"},{"line_number":147,"context_line":"\t\treturn ERROR_FLASH_DST_BREAKS_ALIGNMENT;"},{"line_number":148,"context_line":"\t}"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"\tuint32_t addr \u003d offset;"},{"line_number":151,"context_line":"\tfor (uint32_t i \u003d 0; i \u003c count; i +\u003d 4) {"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"4e29935d_d685d4c4","line":148,"range":{"start_line":140,"start_character":1,"end_line":148,"end_character":2},"in_reply_to":"2d89d3be_aa3abbb0","updated":"2023-07-19 08:08:26.000000000","message":"I\u0027ve put some checking in using write_start_alignment and write_end_alignment but is it necessary to have checking at the driver level at all? Should I in fact remove these checks altogether?","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"98d224035e3646d521be905aca2d71ebf8307e1b","unresolved":true,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"\tuint32_t addr \u003d offset;"},{"line_number":151,"context_line":"\tfor (uint32_t i \u003d 0; i \u003c count; i +\u003d 4) {"},{"line_number":152,"context_line":"\t\tuint32_t word \u003d (buffer[i]   \u003c\u003c 0) | (buffer[i + 1] \u003c\u003c 8) | (buffer[i + 2] \u003c\u003c 16) | (buffer[i + 3] \u003c\u003c 24);"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"\t\tLOG_DEBUG(\"ht32f flash write word 0x%x 0x%x 0x%08x\", i, addr, word);"},{"line_number":155,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":3,"id":"66cfdeb6_3a829572","line":152,"range":{"start_line":152,"start_character":2,"end_line":152,"end_character":108},"updated":"2023-07-08 09:46:45.000000000","message":"We don\u0027t need to convert data to the host endianess and back. See line 161","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1002162,"name":"Steve Sims","email":"steves@broycecontrol.com","username":"steves"},"change_message_id":"debb6fc5529adca2f0f56c562bbae2a10b1855e8","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"\tuint32_t addr \u003d offset;"},{"line_number":151,"context_line":"\tfor (uint32_t i \u003d 0; i \u003c count; i +\u003d 4) {"},{"line_number":152,"context_line":"\t\tuint32_t word \u003d (buffer[i]   \u003c\u003c 0) | (buffer[i + 1] \u003c\u003c 8) | (buffer[i + 2] \u003c\u003c 16) | (buffer[i + 3] \u003c\u003c 24);"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"\t\tLOG_DEBUG(\"ht32f flash write word 0x%x 0x%x 0x%08x\", i, addr, word);"},{"line_number":155,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":3,"id":"7b541540_24c8d7db","line":152,"range":{"start_line":152,"start_character":2,"end_line":152,"end_character":108},"in_reply_to":"66cfdeb6_3a829572","updated":"2023-07-19 08:08:26.000000000","message":"Done","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"4744740c2f9e29eee6f3184734a02dd3d4fec697","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"\tuint32_t addr \u003d offset;"},{"line_number":151,"context_line":"\tfor (uint32_t i \u003d 0; i \u003c count; i +\u003d 4) {"},{"line_number":152,"context_line":"\t\tuint32_t word \u003d (buffer[i]   \u003c\u003c 0) | (buffer[i + 1] \u003c\u003c 8) | (buffer[i + 2] \u003c\u003c 16) | (buffer[i + 3] \u003c\u003c 24);"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"\t\tLOG_DEBUG(\"ht32f flash write word 0x%x 0x%x 0x%08x\", i, addr, word);"},{"line_number":155,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":3,"id":"ffa52fbd_ee87e333","line":152,"range":{"start_line":152,"start_character":2,"end_line":152,"end_character":108},"in_reply_to":"66cfdeb6_3a829572","updated":"2023-07-21 13:20:39.000000000","message":"Done","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"98d224035e3646d521be905aca2d71ebf8307e1b","unresolved":true,"context_lines":[{"line_number":151,"context_line":"\tfor (uint32_t i \u003d 0; i \u003c count; i +\u003d 4) {"},{"line_number":152,"context_line":"\t\tuint32_t word \u003d (buffer[i]   \u003c\u003c 0) | (buffer[i + 1] \u003c\u003c 8) | (buffer[i + 2] \u003c\u003c 16) | (buffer[i + 3] \u003c\u003c 24);"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"\t\tLOG_DEBUG(\"ht32f flash write word 0x%x 0x%x 0x%08x\", i, addr, word);"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"\t\t// flash memory word program"},{"line_number":157,"context_line":"\t\tint retval;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"e2456909_e61a0436","line":154,"range":{"start_line":154,"start_character":2,"end_line":154,"end_character":70},"updated":"2023-07-08 09:46:45.000000000","message":"Seems me too verbose","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1002162,"name":"Steve Sims","email":"steves@broycecontrol.com","username":"steves"},"change_message_id":"debb6fc5529adca2f0f56c562bbae2a10b1855e8","unresolved":false,"context_lines":[{"line_number":151,"context_line":"\tfor (uint32_t i \u003d 0; i \u003c count; i +\u003d 4) {"},{"line_number":152,"context_line":"\t\tuint32_t word \u003d (buffer[i]   \u003c\u003c 0) | (buffer[i + 1] \u003c\u003c 8) | (buffer[i + 2] \u003c\u003c 16) | (buffer[i + 3] \u003c\u003c 24);"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"\t\tLOG_DEBUG(\"ht32f flash write word 0x%x 0x%x 0x%08x\", i, addr, word);"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"\t\t// flash memory word program"},{"line_number":157,"context_line":"\t\tint retval;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"8442cbf1_45af4b50","line":154,"range":{"start_line":154,"start_character":2,"end_line":154,"end_character":70},"in_reply_to":"e2456909_e61a0436","updated":"2023-07-19 08:08:26.000000000","message":"Done","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"4744740c2f9e29eee6f3184734a02dd3d4fec697","unresolved":false,"context_lines":[{"line_number":151,"context_line":"\tfor (uint32_t i \u003d 0; i \u003c count; i +\u003d 4) {"},{"line_number":152,"context_line":"\t\tuint32_t word \u003d (buffer[i]   \u003c\u003c 0) | (buffer[i + 1] \u003c\u003c 8) | (buffer[i + 2] \u003c\u003c 16) | (buffer[i + 3] \u003c\u003c 24);"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"\t\tLOG_DEBUG(\"ht32f flash write word 0x%x 0x%x 0x%08x\", i, addr, word);"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"\t\t// flash memory word program"},{"line_number":157,"context_line":"\t\tint retval;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"9ac7b094_05e09b63","line":154,"range":{"start_line":154,"start_character":2,"end_line":154,"end_character":70},"in_reply_to":"e2456909_e61a0436","updated":"2023-07-21 13:20:39.000000000","message":"Done","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"98d224035e3646d521be905aca2d71ebf8307e1b","unresolved":true,"context_lines":[{"line_number":158,"context_line":"\t\tretval \u003d target_write_u32(target, FMC_REG_BASE + FMC_REG_TADR, addr);"},{"line_number":159,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":160,"context_line":"\t\t\treturn retval;"},{"line_number":161,"context_line":"\t\tretval \u003d target_write_u32(target, FMC_REG_BASE + FMC_REG_WRDR, word);"},{"line_number":162,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":163,"context_line":"\t\t\treturn retval;"},{"line_number":164,"context_line":"\t\tretval \u003d target_write_u32(target, FMC_REG_BASE + FMC_REG_OCMR, FMC_CMD_WORD_PROG);"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"6a404176_5116ef5a","line":161,"range":{"start_line":161,"start_character":24,"end_line":161,"end_character":69},"updated":"2023-07-08 09:46:45.000000000","message":"Use\n target_write_memory(target, FMC_REG_BASE + FMC_REG_WRDR, 4, 1, buffer + i);\n\ninstead.","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1002162,"name":"Steve Sims","email":"steves@broycecontrol.com","username":"steves"},"change_message_id":"debb6fc5529adca2f0f56c562bbae2a10b1855e8","unresolved":false,"context_lines":[{"line_number":158,"context_line":"\t\tretval \u003d target_write_u32(target, FMC_REG_BASE + FMC_REG_TADR, addr);"},{"line_number":159,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":160,"context_line":"\t\t\treturn retval;"},{"line_number":161,"context_line":"\t\tretval \u003d target_write_u32(target, FMC_REG_BASE + FMC_REG_WRDR, word);"},{"line_number":162,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":163,"context_line":"\t\t\treturn retval;"},{"line_number":164,"context_line":"\t\tretval \u003d target_write_u32(target, FMC_REG_BASE + FMC_REG_OCMR, FMC_CMD_WORD_PROG);"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"14415fb7_af097f61","line":161,"range":{"start_line":161,"start_character":24,"end_line":161,"end_character":69},"in_reply_to":"6a404176_5116ef5a","updated":"2023-07-19 08:08:26.000000000","message":"Done","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"4744740c2f9e29eee6f3184734a02dd3d4fec697","unresolved":false,"context_lines":[{"line_number":158,"context_line":"\t\tretval \u003d target_write_u32(target, FMC_REG_BASE + FMC_REG_TADR, addr);"},{"line_number":159,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":160,"context_line":"\t\t\treturn retval;"},{"line_number":161,"context_line":"\t\tretval \u003d target_write_u32(target, FMC_REG_BASE + FMC_REG_WRDR, word);"},{"line_number":162,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":163,"context_line":"\t\t\treturn retval;"},{"line_number":164,"context_line":"\t\tretval \u003d target_write_u32(target, FMC_REG_BASE + FMC_REG_OCMR, FMC_CMD_WORD_PROG);"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"c05c0875_d0bac638","line":161,"range":{"start_line":161,"start_character":24,"end_line":161,"end_character":69},"in_reply_to":"6a404176_5116ef5a","updated":"2023-07-21 13:20:39.000000000","message":"Done","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"98d224035e3646d521be905aca2d71ebf8307e1b","unresolved":true,"context_lines":[{"line_number":169,"context_line":"\t\t\treturn retval;"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"\t\t// wait"},{"line_number":172,"context_line":"\t\tretval \u003d ht32f_wait_status_busy(bank, FLASH_ERASE_TIMEOUT);"},{"line_number":173,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":174,"context_line":"\t\t\treturn retval;"},{"line_number":175,"context_line":"\t\taddr +\u003d 4;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"f5e0f968_2568720e","line":172,"range":{"start_line":172,"start_character":40,"end_line":172,"end_character":59},"updated":"2023-07-08 09:46:45.000000000","message":"Misleading name or copy\u0026paste error","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"4744740c2f9e29eee6f3184734a02dd3d4fec697","unresolved":false,"context_lines":[{"line_number":169,"context_line":"\t\t\treturn retval;"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"\t\t// wait"},{"line_number":172,"context_line":"\t\tretval \u003d ht32f_wait_status_busy(bank, FLASH_ERASE_TIMEOUT);"},{"line_number":173,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":174,"context_line":"\t\t\treturn retval;"},{"line_number":175,"context_line":"\t\taddr +\u003d 4;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"b05acd68_87b396c4","line":172,"range":{"start_line":172,"start_character":40,"end_line":172,"end_character":59},"in_reply_to":"f5e0f968_2568720e","updated":"2023-07-21 13:20:39.000000000","message":"Done","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1002162,"name":"Steve Sims","email":"steves@broycecontrol.com","username":"steves"},"change_message_id":"debb6fc5529adca2f0f56c562bbae2a10b1855e8","unresolved":false,"context_lines":[{"line_number":169,"context_line":"\t\t\treturn retval;"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"\t\t// wait"},{"line_number":172,"context_line":"\t\tretval \u003d ht32f_wait_status_busy(bank, FLASH_ERASE_TIMEOUT);"},{"line_number":173,"context_line":"\t\tif (retval !\u003d ERROR_OK)"},{"line_number":174,"context_line":"\t\t\treturn retval;"},{"line_number":175,"context_line":"\t\taddr +\u003d 4;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"b69bd5c0_cdefea29","line":172,"range":{"start_line":172,"start_character":40,"end_line":172,"end_character":59},"in_reply_to":"f5e0f968_2568720e","updated":"2023-07-19 08:08:26.000000000","message":"Done","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"98d224035e3646d521be905aca2d71ebf8307e1b","unresolved":true,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"\tbank-\u003ebase \u003d 0x0;"},{"line_number":193,"context_line":"\tbank-\u003enum_sectors \u003d num_pages;"},{"line_number":194,"context_line":"\tbank-\u003esectors \u003d malloc(sizeof(struct flash_sector) * num_pages);"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"\tfor (int i \u003d 0; i \u003c num_pages; ++i) {"},{"line_number":197,"context_line":"\t\tbank-\u003esectors[i].offset \u003d i * page_size;"},{"line_number":198,"context_line":"\t\tbank-\u003esectors[i].size \u003d page_size;"},{"line_number":199,"context_line":"\t\tbank-\u003esectors[i].is_erased \u003d -1;"},{"line_number":200,"context_line":"\t\tbank-\u003esectors[i].is_protected \u003d 1;"},{"line_number":201,"context_line":"\t}"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"\treturn ERROR_OK;"},{"line_number":204,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"2f15f528_dcf30c1d","line":201,"range":{"start_line":194,"start_character":1,"end_line":201,"end_character":2},"updated":"2023-07-08 09:46:45.000000000","message":"Use simpler\n bank-\u003esectors \u003d alloc_block_array(0, page_size, num_pages);\n \nand check return value for allocation fail!","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1002162,"name":"Steve Sims","email":"steves@broycecontrol.com","username":"steves"},"change_message_id":"debb6fc5529adca2f0f56c562bbae2a10b1855e8","unresolved":false,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"\tbank-\u003ebase \u003d 0x0;"},{"line_number":193,"context_line":"\tbank-\u003enum_sectors \u003d num_pages;"},{"line_number":194,"context_line":"\tbank-\u003esectors \u003d malloc(sizeof(struct flash_sector) * num_pages);"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"\tfor (int i \u003d 0; i \u003c num_pages; ++i) {"},{"line_number":197,"context_line":"\t\tbank-\u003esectors[i].offset \u003d i * page_size;"},{"line_number":198,"context_line":"\t\tbank-\u003esectors[i].size \u003d page_size;"},{"line_number":199,"context_line":"\t\tbank-\u003esectors[i].is_erased \u003d -1;"},{"line_number":200,"context_line":"\t\tbank-\u003esectors[i].is_protected \u003d 1;"},{"line_number":201,"context_line":"\t}"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"\treturn ERROR_OK;"},{"line_number":204,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"0ba5acb0_586c795a","line":201,"range":{"start_line":194,"start_character":1,"end_line":201,"end_character":2},"in_reply_to":"2f15f528_dcf30c1d","updated":"2023-07-19 08:08:26.000000000","message":"Done","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"4744740c2f9e29eee6f3184734a02dd3d4fec697","unresolved":false,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"\tbank-\u003ebase \u003d 0x0;"},{"line_number":193,"context_line":"\tbank-\u003enum_sectors \u003d num_pages;"},{"line_number":194,"context_line":"\tbank-\u003esectors \u003d malloc(sizeof(struct flash_sector) * num_pages);"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"\tfor (int i \u003d 0; i \u003c num_pages; ++i) {"},{"line_number":197,"context_line":"\t\tbank-\u003esectors[i].offset \u003d i * page_size;"},{"line_number":198,"context_line":"\t\tbank-\u003esectors[i].size \u003d page_size;"},{"line_number":199,"context_line":"\t\tbank-\u003esectors[i].is_erased \u003d -1;"},{"line_number":200,"context_line":"\t\tbank-\u003esectors[i].is_protected \u003d 1;"},{"line_number":201,"context_line":"\t}"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"\treturn ERROR_OK;"},{"line_number":204,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"b8fad412_83925b79","line":201,"range":{"start_line":194,"start_character":1,"end_line":201,"end_character":2},"in_reply_to":"2f15f528_dcf30c1d","updated":"2023-07-21 13:20:39.000000000","message":"Done","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"98d224035e3646d521be905aca2d71ebf8307e1b","unresolved":true,"context_lines":[{"line_number":279,"context_line":""},{"line_number":280,"context_line":"\tretval \u003d ht32f_mass_erase(bank);"},{"line_number":281,"context_line":"\tif (retval \u003d\u003d ERROR_OK) {"},{"line_number":282,"context_line":"\t\t// set all sectors as erased"},{"line_number":283,"context_line":"\t\tunsigned int i;"},{"line_number":284,"context_line":"\t\tfor (i \u003d 0; i \u003c bank-\u003enum_sectors; i++)"},{"line_number":285,"context_line":"\t\t\tbank-\u003esectors[i].is_erased \u003d 1;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"3eb99f9a_3a625c73","line":282,"updated":"2023-07-08 09:46:45.000000000","message":"Same as above, see https://openocd.org/doc/doxygen/html/structflash__sector.html#a0304c23fe399635e65cbbdada6675cc9","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1002162,"name":"Steve Sims","email":"steves@broycecontrol.com","username":"steves"},"change_message_id":"debb6fc5529adca2f0f56c562bbae2a10b1855e8","unresolved":false,"context_lines":[{"line_number":279,"context_line":""},{"line_number":280,"context_line":"\tretval \u003d ht32f_mass_erase(bank);"},{"line_number":281,"context_line":"\tif (retval \u003d\u003d ERROR_OK) {"},{"line_number":282,"context_line":"\t\t// set all sectors as erased"},{"line_number":283,"context_line":"\t\tunsigned int i;"},{"line_number":284,"context_line":"\t\tfor (i \u003d 0; i \u003c bank-\u003enum_sectors; i++)"},{"line_number":285,"context_line":"\t\t\tbank-\u003esectors[i].is_erased \u003d 1;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"03627f66_0db53f04","line":282,"in_reply_to":"3eb99f9a_3a625c73","updated":"2023-07-19 08:08:26.000000000","message":"Done","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"4744740c2f9e29eee6f3184734a02dd3d4fec697","unresolved":false,"context_lines":[{"line_number":279,"context_line":""},{"line_number":280,"context_line":"\tretval \u003d ht32f_mass_erase(bank);"},{"line_number":281,"context_line":"\tif (retval \u003d\u003d ERROR_OK) {"},{"line_number":282,"context_line":"\t\t// set all sectors as erased"},{"line_number":283,"context_line":"\t\tunsigned int i;"},{"line_number":284,"context_line":"\t\tfor (i \u003d 0; i \u003c bank-\u003enum_sectors; i++)"},{"line_number":285,"context_line":"\t\t\tbank-\u003esectors[i].is_erased \u003d 1;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"d5fff102_ded30b99","line":282,"in_reply_to":"3eb99f9a_3a625c73","updated":"2023-07-21 13:20:39.000000000","message":"Done","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"98d224035e3646d521be905aca2d71ebf8307e1b","unresolved":true,"context_lines":[{"line_number":292,"context_line":"\treturn retval;"},{"line_number":293,"context_line":"}"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"COMMAND_HANDLER(ht32f_handle_test_write)"},{"line_number":296,"context_line":"{"},{"line_number":297,"context_line":"\tif (CMD_ARGC \u003c 1)"},{"line_number":298,"context_line":"\t\treturn ERROR_COMMAND_SYNTAX_ERROR;"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"\tstruct flash_bank *bank;"},{"line_number":301,"context_line":"\tint retval \u003d CALL_COMMAND_HANDLER(flash_command_get_bank, 0, \u0026bank);"},{"line_number":302,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":303,"context_line":"\t\treturn retval;"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"\tuint8_t buffer[32];"},{"line_number":306,"context_line":"\tfor (int i \u003d 0; i \u003c 32; ++i)"},{"line_number":307,"context_line":"\t\tbuffer[i] \u003d i;"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"\tretval \u003d ht32f_erase(bank, 0, 0);"},{"line_number":310,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":311,"context_line":"\t\treturn retval;"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"\tretval \u003d ht32f_write(bank, buffer, 0, 32);"},{"line_number":314,"context_line":"\tif (retval \u003d\u003d ERROR_OK)"},{"line_number":315,"context_line":"\t\tcommand_print(cmd, \"ht32f test write complete\");"},{"line_number":316,"context_line":"\telse"},{"line_number":317,"context_line":"\t\tcommand_print(cmd, \"ht32f test write failed\");"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"\treturn retval;"},{"line_number":320,"context_line":"}"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"static void ht32f_free_driver_priv(struct flash_bank *bank)"},{"line_number":323,"context_line":"{"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"8b51f7ed_ff40a1e1","line":320,"range":{"start_line":295,"start_character":0,"end_line":320,"end_character":1},"updated":"2023-07-08 09:46:45.000000000","message":"A developer\u0027s tool? I see no point in keeping it in the flash driver source.","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1002162,"name":"Steve Sims","email":"steves@broycecontrol.com","username":"steves"},"change_message_id":"debb6fc5529adca2f0f56c562bbae2a10b1855e8","unresolved":false,"context_lines":[{"line_number":292,"context_line":"\treturn retval;"},{"line_number":293,"context_line":"}"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"COMMAND_HANDLER(ht32f_handle_test_write)"},{"line_number":296,"context_line":"{"},{"line_number":297,"context_line":"\tif (CMD_ARGC \u003c 1)"},{"line_number":298,"context_line":"\t\treturn ERROR_COMMAND_SYNTAX_ERROR;"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"\tstruct flash_bank *bank;"},{"line_number":301,"context_line":"\tint retval \u003d CALL_COMMAND_HANDLER(flash_command_get_bank, 0, \u0026bank);"},{"line_number":302,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":303,"context_line":"\t\treturn retval;"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"\tuint8_t buffer[32];"},{"line_number":306,"context_line":"\tfor (int i \u003d 0; i \u003c 32; ++i)"},{"line_number":307,"context_line":"\t\tbuffer[i] \u003d i;"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"\tretval \u003d ht32f_erase(bank, 0, 0);"},{"line_number":310,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":311,"context_line":"\t\treturn retval;"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"\tretval \u003d ht32f_write(bank, buffer, 0, 32);"},{"line_number":314,"context_line":"\tif (retval \u003d\u003d ERROR_OK)"},{"line_number":315,"context_line":"\t\tcommand_print(cmd, \"ht32f test write complete\");"},{"line_number":316,"context_line":"\telse"},{"line_number":317,"context_line":"\t\tcommand_print(cmd, \"ht32f test write failed\");"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"\treturn retval;"},{"line_number":320,"context_line":"}"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"static void ht32f_free_driver_priv(struct flash_bank *bank)"},{"line_number":323,"context_line":"{"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"19767bde_2f5da6b7","line":320,"range":{"start_line":295,"start_character":0,"end_line":320,"end_character":1},"in_reply_to":"8b51f7ed_ff40a1e1","updated":"2023-07-19 08:08:26.000000000","message":"Done","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"4744740c2f9e29eee6f3184734a02dd3d4fec697","unresolved":false,"context_lines":[{"line_number":292,"context_line":"\treturn retval;"},{"line_number":293,"context_line":"}"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"COMMAND_HANDLER(ht32f_handle_test_write)"},{"line_number":296,"context_line":"{"},{"line_number":297,"context_line":"\tif (CMD_ARGC \u003c 1)"},{"line_number":298,"context_line":"\t\treturn ERROR_COMMAND_SYNTAX_ERROR;"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"\tstruct flash_bank *bank;"},{"line_number":301,"context_line":"\tint retval \u003d CALL_COMMAND_HANDLER(flash_command_get_bank, 0, \u0026bank);"},{"line_number":302,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":303,"context_line":"\t\treturn retval;"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"\tuint8_t buffer[32];"},{"line_number":306,"context_line":"\tfor (int i \u003d 0; i \u003c 32; ++i)"},{"line_number":307,"context_line":"\t\tbuffer[i] \u003d i;"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"\tretval \u003d ht32f_erase(bank, 0, 0);"},{"line_number":310,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":311,"context_line":"\t\treturn retval;"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"\tretval \u003d ht32f_write(bank, buffer, 0, 32);"},{"line_number":314,"context_line":"\tif (retval \u003d\u003d ERROR_OK)"},{"line_number":315,"context_line":"\t\tcommand_print(cmd, \"ht32f test write complete\");"},{"line_number":316,"context_line":"\telse"},{"line_number":317,"context_line":"\t\tcommand_print(cmd, \"ht32f test write failed\");"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"\treturn retval;"},{"line_number":320,"context_line":"}"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"static void ht32f_free_driver_priv(struct flash_bank *bank)"},{"line_number":323,"context_line":"{"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"a728c426_a6200e01","line":320,"range":{"start_line":295,"start_character":0,"end_line":320,"end_character":1},"in_reply_to":"8b51f7ed_ff40a1e1","updated":"2023-07-21 13:20:39.000000000","message":"Done","commit_id":"2643742256c757628c24d253224660d24418dbdd"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"4a5b8ccc265ecb6eba24bb7682536be7fbd58603","unresolved":true,"context_lines":[{"line_number":88,"context_line":"{"},{"line_number":89,"context_line":"\tstruct target *target \u003d bank-\u003etarget;"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"\tLOG_DEBUG(\"ht32f erase: %d - %d\", first, last);"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"\tif (target-\u003estate !\u003d TARGET_HALTED) {"},{"line_number":94,"context_line":"\t\tLOG_ERROR(\"Target not halted\");"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"c8227bf4_8a3b2e8c","line":91,"range":{"start_line":91,"start_character":12,"end_line":91,"end_character":25},"updated":"2023-07-14 08:04:54.000000000","message":"These prefixes are superfluous. The message in the debug log gets always prepended by source file name, line # and function name. The debug log has too long lines with repeated function name:\n\n Info : 32585 16496 arm_adi_v5.c:300 mem_ap_write_u32(): mem_ap_write_u32 0xE000EDF8 0x00000000\n \nKeep the prefix in LOG_INFO/WARNING/ERROR if user (not developer) needs the info where the message originates, as the message is shown at terminal.","commit_id":"6e06149bffddf53d3cb31c5417b479554b7d3949"},{"author":{"_account_id":1002162,"name":"Steve Sims","email":"steves@broycecontrol.com","username":"steves"},"change_message_id":"debb6fc5529adca2f0f56c562bbae2a10b1855e8","unresolved":false,"context_lines":[{"line_number":88,"context_line":"{"},{"line_number":89,"context_line":"\tstruct target *target \u003d bank-\u003etarget;"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"\tLOG_DEBUG(\"ht32f erase: %d - %d\", first, last);"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"\tif (target-\u003estate !\u003d TARGET_HALTED) {"},{"line_number":94,"context_line":"\t\tLOG_ERROR(\"Target not halted\");"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"07926adf_12269646","line":91,"range":{"start_line":91,"start_character":12,"end_line":91,"end_character":25},"in_reply_to":"c8227bf4_8a3b2e8c","updated":"2023-07-19 08:08:26.000000000","message":"Done","commit_id":"6e06149bffddf53d3cb31c5417b479554b7d3949"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"4a5b8ccc265ecb6eba24bb7682536be7fbd58603","unresolved":true,"context_lines":[{"line_number":130,"context_line":"\t\treturn ERROR_TARGET_NOT_HALTED;"},{"line_number":131,"context_line":"\t}"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"\tif (bank-\u003ewrite_start_alignment \u003e 1 \u0026\u0026 bank-\u003ewrite_start_alignment !\u003d FLASH_WRITE_ALIGN_SECTOR) {"},{"line_number":134,"context_line":"\t\tint start_alignment \u003d pow(2, bank-\u003ewrite_start_alignment);"},{"line_number":135,"context_line":"\t\tif (offset % start_alignment) {"},{"line_number":136,"context_line":"\t\t\tLOG_ERROR(\"offset 0x%\" PRIx32 \" breaks required %d-byte alignment\", offset, start_alignment);"},{"line_number":137,"context_line":"\t\t\treturn ERROR_FLASH_DST_BREAKS_ALIGNMENT;"},{"line_number":138,"context_line":"\t\t}"},{"line_number":139,"context_line":"\t}"},{"line_number":140,"context_line":"\tif (bank-\u003ewrite_end_alignment \u003e 1 \u0026\u0026 bank-\u003ewrite_end_alignment !\u003d FLASH_WRITE_ALIGN_SECTOR) {"},{"line_number":141,"context_line":"\t\tint end_alignment \u003d pow(2, bank-\u003ewrite_end_alignment);"},{"line_number":142,"context_line":"\t\tif (count % end_alignment) {"},{"line_number":143,"context_line":"\t\t\tLOG_ERROR(\"size 0x%\" PRIx32 \" breaks required %d-byte alignment\", count, end_alignment);"},{"line_number":144,"context_line":"\t\t\treturn ERROR_FLASH_DST_BREAKS_ALIGNMENT;"},{"line_number":145,"context_line":"\t\t}"},{"line_number":146,"context_line":"\t}"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"\tuint32_t addr \u003d offset;"},{"line_number":149,"context_line":"\tfor (uint32_t i \u003d 0; i \u003c count; i +\u003d 4) {"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"23dd9090_c39c52cf","line":146,"range":{"start_line":133,"start_character":1,"end_line":146,"end_character":2},"updated":"2023-07-14 08:04:54.000000000","message":"Looks you missed the principle.\n\nSet bank-\u003ewrite_start_alignment and write_end_alignment in FLASH_BANK_COMMAND_HANDLER() to 4 and the flash infrastructure\npads the write data block for you.\n\nYou may recheck here if the infrastructure worked as requested, simply\nassert(offset % 4 \u003d\u003d 0);\nassert(count % 4 \u003d\u003d 0);\nis enough.\n\nSee e.g. \nhttps://review.openocd.org/c/openocd/+/7704/5/src/flash/nor/stm32f1x.c#145\nhttps://review.openocd.org/c/openocd/+/7704/5/src/flash/nor/stm32f1x.c#705","commit_id":"6e06149bffddf53d3cb31c5417b479554b7d3949"},{"author":{"_account_id":1002162,"name":"Steve Sims","email":"steves@broycecontrol.com","username":"steves"},"change_message_id":"debb6fc5529adca2f0f56c562bbae2a10b1855e8","unresolved":false,"context_lines":[{"line_number":130,"context_line":"\t\treturn ERROR_TARGET_NOT_HALTED;"},{"line_number":131,"context_line":"\t}"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"\tif (bank-\u003ewrite_start_alignment \u003e 1 \u0026\u0026 bank-\u003ewrite_start_alignment !\u003d FLASH_WRITE_ALIGN_SECTOR) {"},{"line_number":134,"context_line":"\t\tint start_alignment \u003d pow(2, bank-\u003ewrite_start_alignment);"},{"line_number":135,"context_line":"\t\tif (offset % start_alignment) {"},{"line_number":136,"context_line":"\t\t\tLOG_ERROR(\"offset 0x%\" PRIx32 \" breaks required %d-byte alignment\", offset, start_alignment);"},{"line_number":137,"context_line":"\t\t\treturn ERROR_FLASH_DST_BREAKS_ALIGNMENT;"},{"line_number":138,"context_line":"\t\t}"},{"line_number":139,"context_line":"\t}"},{"line_number":140,"context_line":"\tif (bank-\u003ewrite_end_alignment \u003e 1 \u0026\u0026 bank-\u003ewrite_end_alignment !\u003d FLASH_WRITE_ALIGN_SECTOR) {"},{"line_number":141,"context_line":"\t\tint end_alignment \u003d pow(2, bank-\u003ewrite_end_alignment);"},{"line_number":142,"context_line":"\t\tif (count % end_alignment) {"},{"line_number":143,"context_line":"\t\t\tLOG_ERROR(\"size 0x%\" PRIx32 \" breaks required %d-byte alignment\", count, end_alignment);"},{"line_number":144,"context_line":"\t\t\treturn ERROR_FLASH_DST_BREAKS_ALIGNMENT;"},{"line_number":145,"context_line":"\t\t}"},{"line_number":146,"context_line":"\t}"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"\tuint32_t addr \u003d offset;"},{"line_number":149,"context_line":"\tfor (uint32_t i \u003d 0; i \u003c count; i +\u003d 4) {"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"bd0db8f8_60ff86e0","line":146,"range":{"start_line":133,"start_character":1,"end_line":146,"end_character":2},"in_reply_to":"23dd9090_c39c52cf","updated":"2023-07-19 08:08:26.000000000","message":"Done","commit_id":"6e06149bffddf53d3cb31c5417b479554b7d3949"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"607a2edd0c0c0bc0d892cac793b35bb5a882d766","unresolved":true,"context_lines":[{"line_number":5,"context_line":"#endif"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"#include \"imp.h\""},{"line_number":8,"context_line":"#include \u003ctarget/armv7m.h\u003e"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"#define FMC_REG_BASE        0x40080000"},{"line_number":11,"context_line":"#define FMC_REG_TADR        0x00"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"0bf0d606_7922d47f","line":8,"updated":"2023-09-02 10:39:45.000000000","message":"Why? I don\u0027t see anything from this armv7m include file being used below.\nYou only need target/target.h, that is already included by \"imp.h\" above","commit_id":"b5c9b85074bc6f3a72e01d749e3c67e19b8e2753"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"fd67469e07364f82f9880c9eed6c43220a15bbef","unresolved":true,"context_lines":[{"line_number":5,"context_line":"#endif"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"#include \"imp.h\""},{"line_number":8,"context_line":"#include \u003ctarget/armv7m.h\u003e"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"#define FMC_REG_BASE        0x40080000"},{"line_number":11,"context_line":"#define FMC_REG_TADR        0x00"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"2eaed25b_2b5cf1a4","line":8,"in_reply_to":"0bf0d606_7922d47f","updated":"2023-09-05 14:11:37.000000000","message":"Will be handy for a target flash loader algo we already discussed with Steve","commit_id":"b5c9b85074bc6f3a72e01d749e3c67e19b8e2753"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"4438c548195edb73e1fcb14e869d8cfc3732539a","unresolved":true,"context_lines":[{"line_number":218,"context_line":"\tuint32_t size_k \u003d bank-\u003esize / 1024;"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"\tcommand_print_sameline(cmd,"},{"line_number":221,"context_line":"\t\t\"%s: %\" PRIu32 \"k %s at \" TARGET_ADDR_FMT,"},{"line_number":222,"context_line":"\t\tbank-\u003edriver-\u003ename, size_k, bank-\u003ename, bank-\u003ebase);"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"\treturn ERROR_OK;"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"4d046986_d719edf5","line":221,"range":{"start_line":221,"start_character":18,"end_line":221,"end_character":19},"updated":"2023-09-05 14:21:53.000000000","message":"Please take a look at\n6416: flash: nor: use binary prefixes consistently | https://review.openocd.org/c/openocd/+/6416","commit_id":"b5c9b85074bc6f3a72e01d749e3c67e19b8e2753"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"607a2edd0c0c0bc0d892cac793b35bb5a882d766","unresolved":true,"context_lines":[{"line_number":250,"context_line":""},{"line_number":251,"context_line":"COMMAND_HANDLER(ht32f_handle_mass_erase_command)"},{"line_number":252,"context_line":"{"},{"line_number":253,"context_line":"\tif (CMD_ARGC \u003c 1)"},{"line_number":254,"context_line":"\t\treturn ERROR_COMMAND_SYNTAX_ERROR;"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"\tstruct flash_bank *bank;"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"6f7c7d9f_3077dc7b","line":253,"updated":"2023-09-02 10:39:45.000000000","message":"if (CMD_ARGC !\u003d 1)","commit_id":"b5c9b85074bc6f3a72e01d749e3c67e19b8e2753"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"607a2edd0c0c0bc0d892cac793b35bb5a882d766","unresolved":true,"context_lines":[{"line_number":269,"context_line":""},{"line_number":270,"context_line":"static void ht32f_free_driver_priv(struct flash_bank *bank)"},{"line_number":271,"context_line":"{"},{"line_number":272,"context_line":"    // Nothing to free as of yet"},{"line_number":273,"context_line":"}"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":8,"id":"d0193b42_c3ca332d","line":272,"updated":"2023-09-02 10:39:45.000000000","message":"even if this driver doesn\u0027t put anything in bank-\u003edriver_priv, you can still use default_flash_free_driver_priv() in place of this empty ht32f_free_driver_priv()","commit_id":"b5c9b85074bc6f3a72e01d749e3c67e19b8e2753"}],"tcl/target/ht32f.cfg":[{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"4744740c2f9e29eee6f3184734a02dd3d4fec697","unresolved":true,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"adapter speed 300"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"adapter srst delay 100"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"#jtag scan chain"},{"line_number":31,"context_line":"if { [info exists CPUTAPID] } {"}],"source_content_type":"text/x-ttcn-cfg","patch_set":7,"id":"10822c7a_f76e8ea5","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":22},"updated":"2023-07-21 13:20:39.000000000","message":"Is the delay necessary or just copied from other config?\nSWD should not need it, JTAG may require some delay. Please test without.","commit_id":"26dd8fabfba89300f10c1dc84f6a07ada8e707c2"},{"author":{"_account_id":1002162,"name":"Steve Sims","email":"steves@broycecontrol.com","username":"steves"},"change_message_id":"82c472f20f44e19757d0013ac0a3cd7d9be18017","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"adapter speed 300"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"adapter srst delay 100"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"#jtag scan chain"},{"line_number":31,"context_line":"if { [info exists CPUTAPID] } {"}],"source_content_type":"text/x-ttcn-cfg","patch_set":7,"id":"0a152577_8f6ed822","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":22},"in_reply_to":"10822c7a_f76e8ea5","updated":"2023-08-21 15:46:49.000000000","message":"Copied from another config. Removed and tested and it works fine without.","commit_id":"26dd8fabfba89300f10c1dc84f6a07ada8e707c2"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"4744740c2f9e29eee6f3184734a02dd3d4fec697","unresolved":true,"context_lines":[{"line_number":54,"context_line":"\t# perform a soft reset"},{"line_number":55,"context_line":"\tcortex_m reset_config sysresetreq"},{"line_number":56,"context_line":"}"},{"line_number":57,"context_line":"$_TARGETNAME configure -event reset-start {"},{"line_number":58,"context_line":"\t# default speed"},{"line_number":59,"context_line":"\tadapter speed 300"},{"line_number":60,"context_line":"}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"$_TARGETNAME configure -event examine-end {"},{"line_number":63,"context_line":"\t# close DBG_WDT"}],"source_content_type":"text/x-ttcn-cfg","patch_set":7,"id":"897c5693_7fe63d0d","line":60,"range":{"start_line":57,"start_character":0,"end_line":60,"end_character":1},"updated":"2023-07-21 13:20:39.000000000","message":"Please remove as no dynamic clock boost is implemented in reset-init.","commit_id":"26dd8fabfba89300f10c1dc84f6a07ada8e707c2"},{"author":{"_account_id":1002162,"name":"Steve Sims","email":"steves@broycecontrol.com","username":"steves"},"change_message_id":"82c472f20f44e19757d0013ac0a3cd7d9be18017","unresolved":false,"context_lines":[{"line_number":54,"context_line":"\t# perform a soft reset"},{"line_number":55,"context_line":"\tcortex_m reset_config sysresetreq"},{"line_number":56,"context_line":"}"},{"line_number":57,"context_line":"$_TARGETNAME configure -event reset-start {"},{"line_number":58,"context_line":"\t# default speed"},{"line_number":59,"context_line":"\tadapter speed 300"},{"line_number":60,"context_line":"}"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"$_TARGETNAME configure -event examine-end {"},{"line_number":63,"context_line":"\t# close DBG_WDT"}],"source_content_type":"text/x-ttcn-cfg","patch_set":7,"id":"73826ee1_dcf51573","line":60,"range":{"start_line":57,"start_character":0,"end_line":60,"end_character":1},"in_reply_to":"897c5693_7fe63d0d","updated":"2023-08-21 15:46:49.000000000","message":"Done","commit_id":"26dd8fabfba89300f10c1dc84f6a07ada8e707c2"}]}
