)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1001667,"name":"Jan Matyas","email":"jan.matyas@codasip.com","username":"JanMatCodasip"},"change_message_id":"2c08214fd2a8b91dfb8b4c9b5e44ce53ee4f21d4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"f52d77fb_579a2514","updated":"2021-11-01 10:04:06.000000000","message":"Hi, I\u0027m sorry for the delay on my end. \n\nI have rebased this change and re-tested it against the flash memories I have: S25FL128S and S25FL256S. The latter chip utilizes the new feature from this change - 4-byte addresses.\n\nDo you have any last review findings or can we proceed with merge?\n\nThanks.","commit_id":"3b7cea94ccfa155dbf8852cd152b7846dce81eed"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"9279f52c7b112d112582d6ceca160379da79be79","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"c886b856_9543f154","updated":"2021-11-03 20:30:36.000000000","message":"The change reverts code style changes 391782318723915bd259eadf9469251c13c8fa9c\nand 08ee7bb982b16742f52cfdc6c649d82ffa2eb177 \"remove NULL comparisons\".\nI hope it can go as is and Antonio will rerun checkpatch fix someday...\n","commit_id":"3b7cea94ccfa155dbf8852cd152b7846dce81eed"},{"author":{"_account_id":1001667,"name":"Jan Matyas","email":"jan.matyas@codasip.com","username":"JanMatCodasip"},"change_message_id":"3b7cc9494a74b2a5fd4736f01f86b9b672d27f5b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"40ce0dcf_27beffc0","updated":"2021-11-01 11:41:28.000000000","message":"This flash driver has undergone several rounds of review \u0026 testing.\n\nPlease, consider it for a final review \u0026 merge.","commit_id":"3b7cea94ccfa155dbf8852cd152b7846dce81eed"},{"author":{"_account_id":1001667,"name":"Jan Matyas","email":"jan.matyas@codasip.com","username":"JanMatCodasip"},"change_message_id":"2e8dd22e6363ae5dc2fc75e46eb3863294357660","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"c08afc4a_ce2a5f0a","in_reply_to":"c886b856_9543f154","updated":"2021-11-04 07:20:36.000000000","message":"Thanks for pointing this out. I\u0027ve amended the change one last time to get rid of the NULL comparisons.","commit_id":"3b7cea94ccfa155dbf8852cd152b7846dce81eed"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"5c504903580487e647224016fb1cfb08d0c28d95","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"3fb323a3_4353c5e5","updated":"2021-11-06 10:17:15.000000000","message":"Thanks Jan!","commit_id":"7265d528b0f41cdfa34b4730ef24df26e4bb803d"}],"src/flash/nor/jtagspi.c":[{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"a3e642876b2a61fb286595f09d62ccb6edae4de8","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"\tif (addr) {"},{"line_number":123,"context_line":"\t\th_u32_to_be(addr_buf, *addr);"},{"line_number":124,"context_line":"\t\tflip_u8(addr_buf, addr_buf, addr_len);"},{"line_number":125,"context_line":"\t\tfields[n].num_bits \u003d addr_len * 8;"},{"line_number":126,"context_line":"\t\tfields[n].out_value \u003d addr_buf + (4 - addr_len);"},{"line_number":127,"context_line":"\t\tfields[n].in_value \u003d NULL;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"ee703fc5_9ffedbaa","line":124,"range":{"start_line":124,"start_character":20,"end_line":124,"end_character":28},"updated":"2019-04-06 13:11:26.000000000","message":"Should be addr_buf + (4 - addr_len)\nor always flip all 4 bytes of addr_buf.","commit_id":"a9c408f184f001d81b07a1ba100f6c3f3a1e810c"},{"author":{"_account_id":1001036,"name":"Andreas Bolsch","email":"hyphen0break@gmail.com","username":"abmero"},"change_message_id":"49636145dc24ce25021419ad5b48122d5099bb40","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"\tif (addr) {"},{"line_number":123,"context_line":"\t\th_u32_to_be(addr_buf, *addr);"},{"line_number":124,"context_line":"\t\tflip_u8(addr_buf, addr_buf, addr_len);"},{"line_number":125,"context_line":"\t\tfields[n].num_bits \u003d addr_len * 8;"},{"line_number":126,"context_line":"\t\tfields[n].out_value \u003d addr_buf + (4 - addr_len);"},{"line_number":127,"context_line":"\t\tfields[n].in_value \u003d NULL;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"8e7fc396_ea462f26","line":124,"range":{"start_line":124,"start_character":20,"end_line":124,"end_character":28},"in_reply_to":"ee703fc5_9ffedbaa","updated":"2019-08-17 09:24:11.000000000","message":"Partially rewritten.","commit_id":"a9c408f184f001d81b07a1ba100f6c3f3a1e810c"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"a3e642876b2a61fb286595f09d62ccb6edae4de8","unresolved":false,"context_lines":[{"line_number":370,"context_line":""},{"line_number":371,"context_line":"\t/* now read the response bytes */"},{"line_number":372,"context_line":"\tptr \u003d \u0026buffer[0];"},{"line_number":373,"context_line":"\tjtagspi_cmd(bank, cmd_byte, \u0026addr, addr_len, ptr, -num_bytes * 8);"},{"line_number":374,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":375,"context_line":"\t\tgoto err;"},{"line_number":376,"context_line":"\tfor ( ; num_bytes \u003e 0; num_bytes--) {"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"ee703fc5_bffb9fb9","line":373,"range":{"start_line":373,"start_character":29,"end_line":373,"end_character":44},"updated":"2019-04-06 13:11:26.000000000","message":"The code is obfuscated by conversion of byte parameters to addr here and back conversion in jtagspi_cmd(). Also the number of output bytes is limited.\n\nI\u0027d recommend to introduce\n\n  jtagspi_cmd_bf(bank, cmd_bf, cmd_len, data_bf, +-data_len)\n\nwhich is ideal for jtagspi_handle_cmd() and jtagspi_cmd() can call it too. The data_len in bytes would be sufficient and easier to handle.\nAlso if jtagspi_cmd() will not be used for jtagspi_handle_cmd(), it could use info-\u003eaddr_len instead of addr_len parameter.","commit_id":"a9c408f184f001d81b07a1ba100f6c3f3a1e810c"},{"author":{"_account_id":1001036,"name":"Andreas Bolsch","email":"hyphen0break@gmail.com","username":"abmero"},"change_message_id":"49636145dc24ce25021419ad5b48122d5099bb40","unresolved":false,"context_lines":[{"line_number":370,"context_line":""},{"line_number":371,"context_line":"\t/* now read the response bytes */"},{"line_number":372,"context_line":"\tptr \u003d \u0026buffer[0];"},{"line_number":373,"context_line":"\tjtagspi_cmd(bank, cmd_byte, \u0026addr, addr_len, ptr, -num_bytes * 8);"},{"line_number":374,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":375,"context_line":"\t\tgoto err;"},{"line_number":376,"context_line":"\tfor ( ; num_bytes \u003e 0; num_bytes--) {"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"8e7fc396_2a3d078b","line":373,"range":{"start_line":373,"start_character":29,"end_line":373,"end_character":44},"in_reply_to":"ee703fc5_bffb9fb9","updated":"2019-08-17 09:24:11.000000000","message":"Yes, the intention was to change as little as possible.\n\nSo, reworked jtagspi_cmd ...","commit_id":"a9c408f184f001d81b07a1ba100f6c3f3a1e810c"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"44948bd2f351ee63334cb7b2263ca840bd380595","unresolved":false,"context_lines":[{"line_number":614,"context_line":"\t\treturn ERROR_FLASH_BANK_NOT_PROBED;"},{"line_number":615,"context_line":"\t}"},{"line_number":616,"context_line":""},{"line_number":617,"context_line":"\tjtagspi_cmd(bank, SPIFLASH_READ, \u0026offset, info-\u003eaddr_len, buffer, -count*8);"},{"line_number":618,"context_line":"\treturn ERROR_OK;"},{"line_number":619,"context_line":"}"},{"line_number":620,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"ee703fc5_ffdd9774","line":617,"range":{"start_line":617,"start_character":19,"end_line":617,"end_character":32},"updated":"2019-04-04 22:04:32.000000000","message":"info-\u003edev.read_cmd ?","commit_id":"a9c408f184f001d81b07a1ba100f6c3f3a1e810c"},{"author":{"_account_id":1001036,"name":"Andreas Bolsch","email":"hyphen0break@gmail.com","username":"abmero"},"change_message_id":"49636145dc24ce25021419ad5b48122d5099bb40","unresolved":false,"context_lines":[{"line_number":614,"context_line":"\t\treturn ERROR_FLASH_BANK_NOT_PROBED;"},{"line_number":615,"context_line":"\t}"},{"line_number":616,"context_line":""},{"line_number":617,"context_line":"\tjtagspi_cmd(bank, SPIFLASH_READ, \u0026offset, info-\u003eaddr_len, buffer, -count*8);"},{"line_number":618,"context_line":"\treturn ERROR_OK;"},{"line_number":619,"context_line":"}"},{"line_number":620,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"8e7fc396_6a33ffc0","line":617,"range":{"start_line":617,"start_character":19,"end_line":617,"end_character":32},"in_reply_to":"ee703fc5_ffdd9774","updated":"2019-08-17 09:24:11.000000000","message":"Changed.","commit_id":"a9c408f184f001d81b07a1ba100f6c3f3a1e810c"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"44948bd2f351ee63334cb7b2263ca840bd380595","unresolved":false,"context_lines":[{"line_number":626,"context_line":"\tretval \u003d jtagspi_write_enable(bank);"},{"line_number":627,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":628,"context_line":"\t\treturn retval;"},{"line_number":629,"context_line":"\tjtagspi_cmd(bank, SPIFLASH_PAGE_PROGRAM, \u0026offset, info-\u003eaddr_len, (uint8_t *) buffer, count*8);"},{"line_number":630,"context_line":"\treturn jtagspi_wait(bank, JTAGSPI_MAX_TIMEOUT);"},{"line_number":631,"context_line":"}"},{"line_number":632,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"ee703fc5_9fea5b04","line":629,"range":{"start_line":629,"start_character":19,"end_line":629,"end_character":40},"updated":"2019-04-04 22:04:32.000000000","message":"info-\u003edev.pprog_cmd ?","commit_id":"a9c408f184f001d81b07a1ba100f6c3f3a1e810c"},{"author":{"_account_id":1001036,"name":"Andreas Bolsch","email":"hyphen0break@gmail.com","username":"abmero"},"change_message_id":"49636145dc24ce25021419ad5b48122d5099bb40","unresolved":false,"context_lines":[{"line_number":626,"context_line":"\tretval \u003d jtagspi_write_enable(bank);"},{"line_number":627,"context_line":"\tif (retval !\u003d ERROR_OK)"},{"line_number":628,"context_line":"\t\treturn retval;"},{"line_number":629,"context_line":"\tjtagspi_cmd(bank, SPIFLASH_PAGE_PROGRAM, \u0026offset, info-\u003eaddr_len, (uint8_t *) buffer, count*8);"},{"line_number":630,"context_line":"\treturn jtagspi_wait(bank, JTAGSPI_MAX_TIMEOUT);"},{"line_number":631,"context_line":"}"},{"line_number":632,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"8e7fc396_8a38db9c","line":629,"range":{"start_line":629,"start_character":19,"end_line":629,"end_character":40},"in_reply_to":"ee703fc5_9fea5b04","updated":"2019-08-17 09:24:11.000000000","message":"Changed.","commit_id":"a9c408f184f001d81b07a1ba100f6c3f3a1e810c"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"140e07a334f715a50545466315603c0727b4830e","unresolved":false,"context_lines":[{"line_number":644,"context_line":"\t/* if no write pagesize, use reasonable default */"},{"line_number":645,"context_line":"\tpagesize \u003d info-\u003edev.pagesize ? info-\u003edev.pagesize : SPIFLASH_DEF_PAGESIZE;"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"\tfor (n \u003d 0; n \u003c count; n +\u003d pagesize) {"},{"line_number":648,"context_line":"\t\tretval \u003d jtagspi_page_write(bank, buffer + n, offset + n,"},{"line_number":649,"context_line":"\t\t\t\tMIN(count - n, pagesize));"},{"line_number":650,"context_line":"\t\tif (retval !\u003d ERROR_OK) {"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"ee703fc5_3f278f61","line":647,"range":{"start_line":647,"start_character":1,"end_line":647,"end_character":40},"updated":"2019-04-06 13:39:34.000000000","message":"It is an old bug out of scope of your patch:\nwrite paging works only if offset is divisible by pagesize.","commit_id":"a9c408f184f001d81b07a1ba100f6c3f3a1e810c"},{"author":{"_account_id":1001036,"name":"Andreas Bolsch","email":"hyphen0break@gmail.com","username":"abmero"},"change_message_id":"49636145dc24ce25021419ad5b48122d5099bb40","unresolved":false,"context_lines":[{"line_number":644,"context_line":"\t/* if no write pagesize, use reasonable default */"},{"line_number":645,"context_line":"\tpagesize \u003d info-\u003edev.pagesize ? info-\u003edev.pagesize : SPIFLASH_DEF_PAGESIZE;"},{"line_number":646,"context_line":""},{"line_number":647,"context_line":"\tfor (n \u003d 0; n \u003c count; n +\u003d pagesize) {"},{"line_number":648,"context_line":"\t\tretval \u003d jtagspi_page_write(bank, buffer + n, offset + n,"},{"line_number":649,"context_line":"\t\t\t\tMIN(count - n, pagesize));"},{"line_number":650,"context_line":"\t\tif (retval !\u003d ERROR_OK) {"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"8e7fc396_4a42c314","line":647,"range":{"start_line":647,"start_character":1,"end_line":647,"end_character":40},"in_reply_to":"ee703fc5_3f278f61","updated":"2019-08-17 09:24:11.000000000","message":"Corrected. And modified jtagspi_read to read in chunks of sector size rather than whole bank at once.","commit_id":"a9c408f184f001d81b07a1ba100f6c3f3a1e810c"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"8e0f814626cdd3127f7f70af2959012c9361e42d","unresolved":false,"context_lines":[{"line_number":33,"context_line":"\tchar devname[32];"},{"line_number":34,"context_line":"\tbool probed;"},{"line_number":35,"context_line":"\tuint32_t ir;"},{"line_number":36,"context_line":"\tint addr_len;\t\t/* address length in bytes */"},{"line_number":37,"context_line":"};"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"FLASH_BANK_COMMAND_HANDLER(jtagspi_flash_bank_command)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"ceda9b01_3c1c766a","line":36,"updated":"2021-03-15 21:36:10.000000000","message":"No? Why do you use *signed* integer here?","commit_id":"51e506c9e8280d13995d4c4d773c7f5555116c57"},{"author":{"_account_id":1001667,"name":"Jan Matyas","email":"jan.matyas@codasip.com","username":"JanMatCodasip"},"change_message_id":"98f31896b014ddf92b0173ffeb7becd1117d38ad","unresolved":false,"context_lines":[{"line_number":33,"context_line":"\tchar devname[32];"},{"line_number":34,"context_line":"\tbool probed;"},{"line_number":35,"context_line":"\tuint32_t ir;"},{"line_number":36,"context_line":"\tint addr_len;\t\t/* address length in bytes */"},{"line_number":37,"context_line":"};"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"FLASH_BANK_COMMAND_HANDLER(jtagspi_flash_bank_command)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"aedf27f1_be58655a","line":36,"in_reply_to":"ceda9b01_3c1c766a","updated":"2021-05-14 15:08:06.000000000","message":"Thanks, fixed.","commit_id":"51e506c9e8280d13995d4c4d773c7f5555116c57"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"8e0f814626cdd3127f7f70af2959012c9361e42d","unresolved":false,"context_lines":[{"line_number":512,"context_line":"\treturn retval;"},{"line_number":513,"context_line":"}"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"static uint8_t *fill_addr(uint32_t addr, int addr_len, uint8_t *buffer)"},{"line_number":516,"context_line":"{"},{"line_number":517,"context_line":"\tfor (buffer +\u003d addr_len; addr_len \u003e 0; --addr_len) {"},{"line_number":518,"context_line":"\t\t*--buffer \u003d addr;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"ceda9b01_1c33b2f4","line":515,"updated":"2021-03-15 21:36:10.000000000","message":"Wrong data type","commit_id":"51e506c9e8280d13995d4c4d773c7f5555116c57"},{"author":{"_account_id":1001667,"name":"Jan Matyas","email":"jan.matyas@codasip.com","username":"JanMatCodasip"},"change_message_id":"98f31896b014ddf92b0173ffeb7becd1117d38ad","unresolved":false,"context_lines":[{"line_number":512,"context_line":"\treturn retval;"},{"line_number":513,"context_line":"}"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"static uint8_t *fill_addr(uint32_t addr, int addr_len, uint8_t *buffer)"},{"line_number":516,"context_line":"{"},{"line_number":517,"context_line":"\tfor (buffer +\u003d addr_len; addr_len \u003e 0; --addr_len) {"},{"line_number":518,"context_line":"\t\t*--buffer \u003d addr;"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"aedf27f1_5e35b9f2","line":515,"in_reply_to":"ceda9b01_1c33b2f4","updated":"2021-05-14 15:08:06.000000000","message":"Done","commit_id":"51e506c9e8280d13995d4c4d773c7f5555116c57"},{"author":{"_account_id":1000853,"name":"zapb","display_name":"Marc Schink","email":"dev@zapb.de","username":"zapb"},"change_message_id":"0a2cd43a502f0e3a73746d432a2d20210fbbb6c2","unresolved":false,"context_lines":[{"line_number":89,"context_line":"\tLOG_DEBUG(\"cmd\u003d0x%02x write_len\u003d%d data_len\u003d%d\", cmd, write_len, data_len);"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"\t/* negative data_len \u003d\u003d read operation */"},{"line_number":92,"context_line":"\tbool is_read \u003d (data_len \u003c 0);"},{"line_number":93,"context_line":"\tif (is_read)"},{"line_number":94,"context_line":"\t\tdata_len \u003d -data_len;"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"aedf27f1_296a01b2","line":92,"updated":"2021-05-15 12:29:56.000000000","message":"Should be \u0027const bool\u0027","commit_id":"dd66c85f932988af75a06d7a84ccffec2f52baba"},{"author":{"_account_id":1001667,"name":"Jan Matyas","email":"jan.matyas@codasip.com","username":"JanMatCodasip"},"change_message_id":"c41a29b7c3ae830c87fc9dacdeaba46aebeadf41","unresolved":false,"context_lines":[{"line_number":89,"context_line":"\tLOG_DEBUG(\"cmd\u003d0x%02x write_len\u003d%d data_len\u003d%d\", cmd, write_len, data_len);"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"\t/* negative data_len \u003d\u003d read operation */"},{"line_number":92,"context_line":"\tbool is_read \u003d (data_len \u003c 0);"},{"line_number":93,"context_line":"\tif (is_read)"},{"line_number":94,"context_line":"\t\tdata_len \u003d -data_len;"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"aedf27f1_c9125501","line":92,"in_reply_to":"aedf27f1_296a01b2","updated":"2021-05-17 14:26:17.000000000","message":"Done","commit_id":"dd66c85f932988af75a06d7a84ccffec2f52baba"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"ca5f949ce46dfb1f247602828f391465e4c3ae49","unresolved":false,"context_lines":[{"line_number":89,"context_line":"\tLOG_DEBUG(\"cmd\u003d0x%02x write_len\u003d%d data_len\u003d%d\", cmd, write_len, data_len);"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"\t/* negative data_len \u003d\u003d read operation */"},{"line_number":92,"context_line":"\tbool is_read \u003d (data_len \u003c 0);"},{"line_number":93,"context_line":"\tif (is_read)"},{"line_number":94,"context_line":"\t\tdata_len \u003d -data_len;"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"aedf27f1_e96399d8","line":92,"in_reply_to":"aedf27f1_296a01b2","updated":"2021-05-15 13:18:22.000000000","message":"Marc, please don\u0027t ask for strict marking of all constant local variables as \u0027const\u0027. There is no gain for the compiled code as the compiler knows it for good from its variable lifetime analysis. And IMO the code readability is not better because there is big difference between really constant static const and once assigned temporary variable. Unlike in java I would better avoid this kind of const in C.","commit_id":"dd66c85f932988af75a06d7a84ccffec2f52baba"},{"author":{"_account_id":1001667,"name":"Jan Matyas","email":"jan.matyas@codasip.com","username":"JanMatCodasip"},"change_message_id":"71837afad15f6d2e331a3761452616a1bcd9bdce","unresolved":false,"context_lines":[{"line_number":89,"context_line":"\tLOG_DEBUG(\"cmd\u003d0x%02x write_len\u003d%d data_len\u003d%d\", cmd, write_len, data_len);"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"\t/* negative data_len \u003d\u003d read operation */"},{"line_number":92,"context_line":"\tbool is_read \u003d (data_len \u003c 0);"},{"line_number":93,"context_line":"\tif (is_read)"},{"line_number":94,"context_line":"\t\tdata_len \u003d -data_len;"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":5,"id":"aedf27f1_89dc4d4d","line":92,"in_reply_to":"aedf27f1_e96399d8","updated":"2021-05-17 14:30:52.000000000","message":"I\u0027ve added that \"const\". I see some value in it: It clearly states the author\u0027s intent (once-assigned helper variable) and may prevent coding mistakes.","commit_id":"dd66c85f932988af75a06d7a84ccffec2f52baba"}]}
