)]}'
{"tcl/target/nordic/common.cfg":[{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"c9feb4f13132b1ef05f5921270d1e3a02bd4d4c6","unresolved":true,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"\t\tset dap [$target cget -dap]"},{"line_number":24,"context_line":"\t\tset err [catch {set APPROTECTSTATUS [$dap apreg $ctrl_ap_num $app_protect_register]}]"},{"line_number":25,"context_line":"\t\tif {$err \u003d\u003d 0 \u0026\u0026 $APPROTECTSTATUS \u003e $unlocked_value} {"},{"line_number":26,"context_line":"\t\t\techo \"Warn : \\[$cmdname\\] \""},{"line_number":27,"context_line":"\t\t\techo \"Warn : \\[$cmdname\\] ****** WARNING ******\""},{"line_number":28,"context_line":"\t\t\techo \"Warn : \\[$cmdname\\] $target has AP lock engaged (see UICR APPROTECT register).\""}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"3f28b9ec_c6f75a3b","line":25,"range":{"start_line":25,"start_character":19,"end_line":25,"end_character":53},"updated":"2026-01-15 13:47:50.000000000","message":"The reversed operator breaks all but nRF54 series.\nNote e.g. nRF52\n`APPROTECTSTATUS Enabled 0 Access port protection enabled`\nversus nRF54L\n`APPROTECT Enabled 1 APPROTECT is enabled`","commit_id":"ff206b9df598f214c0ff561e49ba2a887e03fc73"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"c9feb4f13132b1ef05f5921270d1e3a02bd4d4c6","unresolved":true,"context_lines":[{"line_number":28,"context_line":"\t\t\techo \"Warn : \\[$cmdname\\] $target has AP lock engaged (see UICR APPROTECT register).\""},{"line_number":29,"context_line":"\t\t\techo \"Warn : \\[$cmdname\\] Debug access is denied.\""},{"line_number":30,"context_line":"\t\t\techo \"Warn : \\[$cmdname\\] Use \u0027${recover_script_name}\u0027 to erase and unlock the device.\""},{"line_number":31,"context_line":"\t\t\techo \"Warn : \\[$cmdname\\] \""},{"line_number":32,"context_line":"\t\t\tpoll off"},{"line_number":33,"context_line":"\t\t\treturn 1"},{"line_number":34,"context_line":"\t\t} else {"}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"cabe8875_ea935c0e","line":31,"range":{"start_line":31,"start_character":17,"end_line":31,"end_character":28},"updated":"2026-01-15 13:47:50.000000000","message":"OpenOCD usually LOGS the target name in [] not the command name.\nI\u0027m not sure if echoing of the command name is a good idea here.\nIt\u0027s not debug log...","commit_id":"ff206b9df598f214c0ff561e49ba2a887e03fc73"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"c9feb4f13132b1ef05f5921270d1e3a02bd4d4c6","unresolved":true,"context_lines":[{"line_number":32,"context_line":"\t\t\tpoll off"},{"line_number":33,"context_line":"\t\t\treturn 1"},{"line_number":34,"context_line":"\t\t} else {"},{"line_number":35,"context_line":"\t\t\techo \"Info : \\[$cmdname\\] Debug access on $target is allowed.\""},{"line_number":36,"context_line":"\t\t}"},{"line_number":37,"context_line":"\t\treturn 0"},{"line_number":38,"context_line":"\t}"}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"506ebe01_6f2088ce","line":35,"updated":"2026-01-15 13:47:50.000000000","message":"Isn\u0027t it useless noise? It gets printed only if examine fails.","commit_id":"ff206b9df598f214c0ff561e49ba2a887e03fc73"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"c9feb4f13132b1ef05f5921270d1e3a02bd4d4c6","unresolved":true,"context_lines":[{"line_number":56,"context_line":"\t\t}"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"\t\tpoll off"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"\t\tset APPROTECTSTATUS [$dap apreg $ctrl_ap_num $app_protect_register]"},{"line_number":61,"context_line":"\t\tif {$APPROTECTSTATUS \u003d\u003d 0x0} {"},{"line_number":62,"context_line":"\t\t\techo \"Info : \\[$cmdname\\] $target not locked. Skipping recovery.\""}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"673d6868_9527dc23","line":59,"updated":"2026-01-15 13:47:50.000000000","message":"Why you removed\n```\n# Reset and trigger ERASEALL task\n$dap apreg $ctrl_ap_num 4 0\n```\n\nIf that bit is left at 1 for whatever reason the recover will not work.\nFor such operation as unlock/recovery I would insist on minimising prerequisites.","commit_id":"ff206b9df598f214c0ff561e49ba2a887e03fc73"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"c9feb4f13132b1ef05f5921270d1e3a02bd4d4c6","unresolved":true,"context_lines":[{"line_number":58,"context_line":"\t\tpoll off"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"\t\tset APPROTECTSTATUS [$dap apreg $ctrl_ap_num $app_protect_register]"},{"line_number":61,"context_line":"\t\tif {$APPROTECTSTATUS \u003d\u003d 0x0} {"},{"line_number":62,"context_line":"\t\t\techo \"Info : \\[$cmdname\\] $target not locked. Skipping recovery.\""},{"line_number":63,"context_line":"\t\t\treturn"},{"line_number":64,"context_line":"\t\t}"}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"11605c9d_7872c844","line":61,"range":{"start_line":61,"start_character":6,"end_line":61,"end_character":29},"updated":"2026-01-15 13:47:50.000000000","message":"Again breaks all but nRF54\nWhy you assume the user is an idiot an issues the command on the unlocked device?","commit_id":"ff206b9df598f214c0ff561e49ba2a887e03fc73"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"c9feb4f13132b1ef05f5921270d1e3a02bd4d4c6","unresolved":true,"context_lines":[{"line_number":69,"context_line":"\t\tfor {set i 0} {1} {incr i} {"},{"line_number":70,"context_line":"\t\t\tset ERASEALLSTATUS [$dap apreg $ctrl_ap_num 0x8]"},{"line_number":71,"context_line":"\t\t\tif {$ERASEALLSTATUS \u003d\u003d $ready_to_reset_status} {"},{"line_number":72,"context_line":"\t\t\t\techo \"Info : \\[$cmdname\\] $target is erased ready for reset.\""},{"line_number":73,"context_line":"\t\t\t\tbreak"},{"line_number":74,"context_line":"\t\t\t}"},{"line_number":75,"context_line":"\t\t\tif {$i \u003d\u003d 0} {"}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"4f4aa090_c2e0920b","line":72,"range":{"start_line":72,"start_character":48,"end_line":72,"end_character":63},"updated":"2026-01-15 13:47:50.000000000","message":"Why ready for reset? AFAIK the device gets reset as part of the recovery process.","commit_id":"ff206b9df598f214c0ff561e49ba2a887e03fc73"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"c9feb4f13132b1ef05f5921270d1e3a02bd4d4c6","unresolved":true,"context_lines":[{"line_number":85,"context_line":"\t\t# Trigger the reset"},{"line_number":86,"context_line":"\t\t$dap apreg $ctrl_ap_num 0 $reset_triger_value"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"\t\t_nrf_check_ap_lock 2 $app_protect_register 0"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"\t\t# Deassert reset"},{"line_number":91,"context_line":"\t\t$dap apreg $ctrl_ap_num 0 0"}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"0ee720a5_7c2f7703","line":88,"range":{"start_line":88,"start_character":0,"end_line":88,"end_character":46},"updated":"2026-01-15 13:47:50.000000000","message":"Why? The following `$target arp_examine` and `poll on` starts auto re-examination and runs the check if examine fails again.","commit_id":"ff206b9df598f214c0ff561e49ba2a887e03fc73"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"c9feb4f13132b1ef05f5921270d1e3a02bd4d4c6","unresolved":true,"context_lines":[{"line_number":94,"context_line":"\t\t$dap apreg $ctrl_ap_num 4 0"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"\t\tif { $is_cpunet } {"},{"line_number":97,"context_line":"\t\t} else {"},{"line_number":98,"context_line":"\t\t\treset init"},{"line_number":99,"context_line":"\t\t\tsleep 100"},{"line_number":100,"context_line":"\t\t\t$target arp_examine"},{"line_number":101,"context_line":"\t\t\tpoll on"}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"4c05dd67_77e2d22b","line":98,"range":{"start_line":97,"start_character":1,"end_line":98,"end_character":13},"updated":"2026-01-15 13:47:50.000000000","message":"Why do you broke the existing code?\nThe network cpu needs special treatment to enable it.\nThere is no reason to issue it in other cases.","commit_id":"ff206b9df598f214c0ff561e49ba2a887e03fc73"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"c9feb4f13132b1ef05f5921270d1e3a02bd4d4c6","unresolved":true,"context_lines":[{"line_number":105,"context_line":"\tlappend _telnet_autocomplete_skip _nrf_check_ap_lock _nrf_ctrl_ap_recover"},{"line_number":106,"context_line":"}"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"028a6515_1c1f358b","line":108,"updated":"2026-01-15 13:47:50.000000000","message":"Please no useless empty lines.","commit_id":"ff206b9df598f214c0ff561e49ba2a887e03fc73"}],"tcl/target/nordic/nrf52.cfg":[{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"c9feb4f13132b1ef05f5921270d1e3a02bd4d4c6","unresolved":true,"context_lines":[{"line_number":61,"context_line":"\t_nrf_check_ap_lock 1 0xc 0"},{"line_number":62,"context_line":"}"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"add_help_text nrf52_check_ap_lock \"Check lock status of nrf52\""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"# Mass erase and unlock the device using proprietary nRF CTRL-AP (AP #1)"},{"line_number":67,"context_line":"# http://www.ebyte.com produces modules with nRF52 locked by default,"}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"8ea801fc_e5908f7d","line":64,"updated":"2026-01-15 13:47:50.000000000","message":"IMO the check is not intended for calling by user.\nUse `_nrf_check_ap_lock` directly in `examine-fail` event similarly as used in nrf53.cfg","commit_id":"ff206b9df598f214c0ff561e49ba2a887e03fc73"}],"tcl/target/nordic/nrf54l.cfg":[{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"16360680185f0f950768990e378ea4a55cca4586","unresolved":true,"context_lines":[{"line_number":57,"context_line":"$_CHIPNAME.dap apsel 1"},{"line_number":58,"context_line":"$_CHIPNAME.dap apcsw 0x01000000 0x01000000"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"# Keep adapter speed less or equal 2000 kHz or flash programming fails!"},{"line_number":61,"context_line":"adapter speed 1000"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"# Use main processor as default target."}],"source_content_type":"text/x-ttcn-cfg","patch_set":5,"id":"b258360b_9322f6b0","line":60,"updated":"2025-12-11 10:27:51.000000000","message":"Also remove this comment, it\u0027s out of context.","commit_id":"97ca37b2caaf1bbe14c8ba128ed7726650b3a142"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"16360680185f0f950768990e378ea4a55cca4586","unresolved":true,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"source [find target/nordic/common.cfg]"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"#flash bank $_CHIPNAME.flash nrf54 0x00000000 0 0 0 $_TARGETNAME"},{"line_number":69,"context_line":"#flash bank $_CHIPNAME.ficr nrf54 0x00FFC000 0 0 0 $_TARGETNAME"},{"line_number":70,"context_line":"#flash bank $_CHIPNAME.uicr nrf54 0x00FFD000 0 0 0 $_TARGETNAME"},{"line_number":71,"context_line":"#flash bank $_CHIPNAME.sicr nrf54 0x00FFE000 0 0 0 $_TARGETNAME"}],"source_content_type":"text/x-ttcn-cfg","patch_set":5,"id":"b73a9b7d_602d4cae","line":68,"updated":"2025-12-11 10:27:51.000000000","message":"Please remove the \u0027flash bank\u0027 commands from your commit. I assume they were included in this patch unintentionally?","commit_id":"97ca37b2caaf1bbe14c8ba128ed7726650b3a142"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"c9feb4f13132b1ef05f5921270d1e3a02bd4d4c6","unresolved":true,"context_lines":[{"line_number":72,"context_line":"\tproc nrf54l_check_ap_lock {} {"},{"line_number":73,"context_line":"\t\t_nrf_check_ap_lock 2 0x14 0"},{"line_number":74,"context_line":"\t}"},{"line_number":75,"context_line":"\tadd_help_text nrf54l_check_ap_lock \"Check lock status of nrf54l\""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"\tproc nrf54l_recover {} {"},{"line_number":78,"context_line":"\t\t_nrf_ctrl_ap_recover 2 0x32880000 0x14 1 2 1"}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"c85dc229_13fde8e0","line":75,"updated":"2026-01-15 13:47:50.000000000","message":"IMO the check is not intended for calling by user.\nUse `_nrf_check_ap_lock` directly in `examine-fail` event similarly as used in nrf53.cfg","commit_id":"ff206b9df598f214c0ff561e49ba2a887e03fc73"}]}
