)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1001415,"name":"Jonathan McDowell","email":"noodles-openocd@earth.li","username":"u1f35c"},"change_message_id":"ea9b977de6640f3422fac33bb4d1a1e6f9e6f5dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"473d4da3_3e457b2b","updated":"2022-12-13 19:22:11.000000000","message":"I don\u0027t have the hardware to test, but based on my rough understanding of the Lattice parts this seems reasonable and my previous structure suggestions have been taken into consideration, to LGTM.","commit_id":"7b320de2008e984ef3ef89fef626d9a3c4752c5e"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"8d16bc9edbc3890c187e98f704942bf082ccc51b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"cecc8b03_1679281f","updated":"2023-04-02 13:11:30.000000000","message":"I\u0027m surprised you have abandoned the former change https://review.openocd.org/7293\nto move to this. Anyway, let\u0027s go ahead here.\nFew comments below, but from a general review the patch looks ok","commit_id":"83a7a2cd23b82db06d84279c4556843105bf1658"},{"author":{"_account_id":1001810,"name":"Daniel Anselmi","email":"danselmi@gmx.ch","username":"danselmi"},"change_message_id":"24ed853f6065b2d72e0e4de18d4974407bf7a218","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"912c8037_b6501fc6","updated":"2023-04-08 19:06:51.000000000","message":"Thanks a lot Antonio and others for taking the time to look into all my patches!","commit_id":"32325af46668d125d52695efdce97ebcb9159f07"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"fd848c542f72731f5fe4d10c54e011c20ddec378","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"d04fd224_d56beb66","updated":"2023-04-10 15:55:23.000000000","message":"Thanks\nOnly one comment, I didn\u0027t spotted it before","commit_id":"9803011ea0ba33d854d0c9d85e130fcded893931"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"55401339275abc392394c4077a86b2be38106633","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"f5cce103_6e5a85cd","updated":"2023-04-15 19:43:17.000000000","message":"Thank you for this long effort","commit_id":"5e485205f4447ac086edea6e4a1b7f2fd027590f"}],"src/pld/lattice.c":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"8d16bc9edbc3890c187e98f704942bf082ccc51b","unresolved":true,"context_lines":[{"line_number":249,"context_line":"\t\t} else if (strcasecmp(CMD_ARGV[2], \"ecp3\") \u003d\u003d 0) {"},{"line_number":250,"context_line":"\t\t\tfamily \u003d ecp3;"},{"line_number":251,"context_line":"\t\t} else {"},{"line_number":252,"context_line":"\t\t\tLOG_ERROR(\"unknown family\");"},{"line_number":253,"context_line":"\t\t\tfree(lattice_device);"},{"line_number":254,"context_line":"\t\t\treturn ERROR_FAIL;"},{"line_number":255,"context_line":"\t\t}"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"86d9853c_48d6c044","line":252,"updated":"2023-04-02 13:11:30.000000000","message":"this error should be in\n command_print(CMD, \"unknown family\");","commit_id":"83a7a2cd23b82db06d84279c4556843105bf1658"},{"author":{"_account_id":1001810,"name":"Daniel Anselmi","email":"danselmi@gmx.ch","username":"danselmi"},"change_message_id":"24ed853f6065b2d72e0e4de18d4974407bf7a218","unresolved":false,"context_lines":[{"line_number":249,"context_line":"\t\t} else if (strcasecmp(CMD_ARGV[2], \"ecp3\") \u003d\u003d 0) {"},{"line_number":250,"context_line":"\t\t\tfamily \u003d ecp3;"},{"line_number":251,"context_line":"\t\t} else {"},{"line_number":252,"context_line":"\t\t\tLOG_ERROR(\"unknown family\");"},{"line_number":253,"context_line":"\t\t\tfree(lattice_device);"},{"line_number":254,"context_line":"\t\t\treturn ERROR_FAIL;"},{"line_number":255,"context_line":"\t\t}"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"2bed954e_5f8cc711","line":252,"in_reply_to":"86d9853c_48d6c044","updated":"2023-04-08 19:06:51.000000000","message":"Done","commit_id":"83a7a2cd23b82db06d84279c4556843105bf1658"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"8d16bc9edbc3890c187e98f704942bf082ccc51b","unresolved":true,"context_lines":[{"line_number":258,"context_line":"\tlattice_device-\u003efamily \u003d family;"},{"line_number":259,"context_line":"\tlattice_device-\u003epreload_length \u003d 0;"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"\tpld-\u003edriver_priv \u003d lattice_device;"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"\treturn ERROR_OK;"},{"line_number":264,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"217d1d3e_a9b19472","line":261,"updated":"2023-04-02 13:11:30.000000000","message":"if you run this command twice, you overwrite the old value and the memory cannot be free() anymore\nBefore this assignment, add\n free(pld-\u003edriver_priv);\n\nAnyway, this highlights that we miss a function \"quit\" in \u0027struct pld_driver\u0027 to run the memory cleanup.\nTo be investigated separately.","commit_id":"83a7a2cd23b82db06d84279c4556843105bf1658"},{"author":{"_account_id":1001810,"name":"Daniel Anselmi","email":"danselmi@gmx.ch","username":"danselmi"},"change_message_id":"24ed853f6065b2d72e0e4de18d4974407bf7a218","unresolved":false,"context_lines":[{"line_number":258,"context_line":"\tlattice_device-\u003efamily \u003d family;"},{"line_number":259,"context_line":"\tlattice_device-\u003epreload_length \u003d 0;"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"\tpld-\u003edriver_priv \u003d lattice_device;"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"\treturn ERROR_OK;"},{"line_number":264,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"d4d3d5eb_f1049c24","line":261,"in_reply_to":"217d1d3e_a9b19472","updated":"2023-04-08 19:06:51.000000000","message":"the struct pld_device was just allocated in handle_pld_device_command, so driver_priv points \"somewhere\" and we shouldn\u0027t free it here.\n\nKudos to Tommy Murphy. Thanks!","commit_id":"83a7a2cd23b82db06d84279c4556843105bf1658"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"8d16bc9edbc3890c187e98f704942bf082ccc51b","unresolved":true,"context_lines":[{"line_number":288,"context_line":""},{"line_number":289,"context_line":"\tretval \u003d lattice_read_usercode(lattice_device, \u0026usercode, 0x0);"},{"line_number":290,"context_line":"\tif (retval \u003d\u003d ERROR_OK)"},{"line_number":291,"context_line":"\t\tcommand_print(CMD, \"0x%8.8\" PRIx32 \"\", usercode);"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"\treturn retval;"},{"line_number":294,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"d47164bb_1781df45","line":291,"updated":"2023-04-02 13:11:30.000000000","message":"No need for empty string \"\" after PRIx32","commit_id":"83a7a2cd23b82db06d84279c4556843105bf1658"},{"author":{"_account_id":1001810,"name":"Daniel Anselmi","email":"danselmi@gmx.ch","username":"danselmi"},"change_message_id":"24ed853f6065b2d72e0e4de18d4974407bf7a218","unresolved":false,"context_lines":[{"line_number":288,"context_line":""},{"line_number":289,"context_line":"\tretval \u003d lattice_read_usercode(lattice_device, \u0026usercode, 0x0);"},{"line_number":290,"context_line":"\tif (retval \u003d\u003d ERROR_OK)"},{"line_number":291,"context_line":"\t\tcommand_print(CMD, \"0x%8.8\" PRIx32 \"\", usercode);"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"\treturn retval;"},{"line_number":294,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"96272ca2_3737b33f","line":291,"in_reply_to":"d47164bb_1781df45","updated":"2023-04-08 19:06:51.000000000","message":"Done","commit_id":"83a7a2cd23b82db06d84279c4556843105bf1658"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"8d16bc9edbc3890c187e98f704942bf082ccc51b","unresolved":true,"context_lines":[{"line_number":373,"context_line":"\tuint32_t status;"},{"line_number":374,"context_line":"\tretval \u003d lattice_read_status_u32(lattice_device, \u0026status, 0x0, false);"},{"line_number":375,"context_line":"\tif (retval \u003d\u003d ERROR_OK)"},{"line_number":376,"context_line":"\t\tcommand_print(CMD, \"0x%8.8\" PRIx32 \"\", status);"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"\treturn retval;"},{"line_number":379,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"e66f9f9f_a405ea80","line":376,"range":{"start_line":376,"start_character":32,"end_line":376,"end_character":33},"updated":"2023-04-02 13:11:30.000000000","message":"no empty string","commit_id":"83a7a2cd23b82db06d84279c4556843105bf1658"},{"author":{"_account_id":1001810,"name":"Daniel Anselmi","email":"danselmi@gmx.ch","username":"danselmi"},"change_message_id":"24ed853f6065b2d72e0e4de18d4974407bf7a218","unresolved":false,"context_lines":[{"line_number":373,"context_line":"\tuint32_t status;"},{"line_number":374,"context_line":"\tretval \u003d lattice_read_status_u32(lattice_device, \u0026status, 0x0, false);"},{"line_number":375,"context_line":"\tif (retval \u003d\u003d ERROR_OK)"},{"line_number":376,"context_line":"\t\tcommand_print(CMD, \"0x%8.8\" PRIx32 \"\", status);"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"\treturn retval;"},{"line_number":379,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"825b845f_2044410d","line":376,"range":{"start_line":376,"start_character":32,"end_line":376,"end_character":33},"in_reply_to":"e66f9f9f_a405ea80","updated":"2023-04-08 19:06:51.000000000","message":"Done","commit_id":"83a7a2cd23b82db06d84279c4556843105bf1658"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"fd848c542f72731f5fe4d10c54e011c20ddec378","unresolved":true,"context_lines":[{"line_number":45,"context_line":"{"},{"line_number":46,"context_line":"\tstruct scan_field field;"},{"line_number":47,"context_line":"\tfield.num_bits \u003d tap-\u003eir_length;"},{"line_number":48,"context_line":"\tvoid *t \u003d calloc(DIV_ROUND_UP(field.num_bits, 8), 1);"},{"line_number":49,"context_line":"\tfield.out_value \u003d t;"},{"line_number":50,"context_line":"\tbuf_set_u32(t, 0, field.num_bits, new_instr);"},{"line_number":51,"context_line":"\tfield.in_value \u003d NULL;"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"7c8c3be3_16eaddc1","line":48,"updated":"2023-04-10 15:55:23.000000000","message":"Is there any upper limit for tap-\u003eir_length, in order to drop the calloc()?\nOtherwise we would need to handle a return error and\n if (!t)\n   LOG_ERROR(\"Out of memory\")","commit_id":"9803011ea0ba33d854d0c9d85e130fcded893931"},{"author":{"_account_id":1001810,"name":"Daniel Anselmi","email":"danselmi@gmx.ch","username":"danselmi"},"change_message_id":"fd572a4db954cd3394ea554f5c373d4cb5b60e26","unresolved":false,"context_lines":[{"line_number":45,"context_line":"{"},{"line_number":46,"context_line":"\tstruct scan_field field;"},{"line_number":47,"context_line":"\tfield.num_bits \u003d tap-\u003eir_length;"},{"line_number":48,"context_line":"\tvoid *t \u003d calloc(DIV_ROUND_UP(field.num_bits, 8), 1);"},{"line_number":49,"context_line":"\tfield.out_value \u003d t;"},{"line_number":50,"context_line":"\tbuf_set_u32(t, 0, field.num_bits, new_instr);"},{"line_number":51,"context_line":"\tfield.in_value \u003d NULL;"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"ce756772_78b410e1","line":48,"in_reply_to":"7c8c3be3_16eaddc1","updated":"2023-04-10 19:23:14.000000000","message":"For the current lattice devices it\u0027s only 8 bit for all of them.","commit_id":"9803011ea0ba33d854d0c9d85e130fcded893931"}],"src/pld/lattice_bit.c":[{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"8d16bc9edbc3890c187e98f704942bf082ccc51b","unresolved":true,"context_lines":[{"line_number":19,"context_line":"#define SEEK_HEADER_END   2"},{"line_number":20,"context_line":"#define SEEK_PREAMBLE     3"},{"line_number":21,"context_line":"#define SEEK_ID           4"},{"line_number":22,"context_line":"#define DONE              5"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"static int lattice_read_bit_file(struct lattice_bit_file *bit_file, const char *filename, enum lattice_family_e family)"},{"line_number":25,"context_line":"{"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"75e6c026_75d9bf71","line":22,"updated":"2023-04-02 13:11:30.000000000","message":"would you mind changing to:\n enum read_bit_state {\n     SEEK_HEADER_START,\n     SEEK_HEADER_END,\n     SEEK_PREAMBLE,\n     SEEK_ID,\n     DONE,\n };","commit_id":"83a7a2cd23b82db06d84279c4556843105bf1658"},{"author":{"_account_id":1001810,"name":"Daniel Anselmi","email":"danselmi@gmx.ch","username":"danselmi"},"change_message_id":"24ed853f6065b2d72e0e4de18d4974407bf7a218","unresolved":false,"context_lines":[{"line_number":19,"context_line":"#define SEEK_HEADER_END   2"},{"line_number":20,"context_line":"#define SEEK_PREAMBLE     3"},{"line_number":21,"context_line":"#define SEEK_ID           4"},{"line_number":22,"context_line":"#define DONE              5"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"static int lattice_read_bit_file(struct lattice_bit_file *bit_file, const char *filename, enum lattice_family_e family)"},{"line_number":25,"context_line":"{"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"cd1fb9fe_64db6cbb","line":22,"in_reply_to":"75e6c026_75d9bf71","updated":"2023-04-08 19:06:51.000000000","message":"Done","commit_id":"83a7a2cd23b82db06d84279c4556843105bf1658"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"8d16bc9edbc3890c187e98f704942bf082ccc51b","unresolved":true,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"\tbit_file-\u003epart \u003d 0;"},{"line_number":31,"context_line":"\tbit_file-\u003ehas_id \u003d false;"},{"line_number":32,"context_line":"\tint state \u003d SEEK_HEADER_START;"},{"line_number":33,"context_line":"\tfor (size_t pos \u003d 1; pos \u003c bit_file-\u003eraw_bit.length \u0026\u0026 state !\u003d DONE; ++pos) {"},{"line_number":34,"context_line":"\t\tswitch (state) {"},{"line_number":35,"context_line":"\t\tcase SEEK_HEADER_START:"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"340c98e9_54f77555","line":32,"updated":"2023-04-02 13:11:30.000000000","message":"and here\nenum read_bit_state state;","commit_id":"83a7a2cd23b82db06d84279c4556843105bf1658"},{"author":{"_account_id":1001810,"name":"Daniel Anselmi","email":"danselmi@gmx.ch","username":"danselmi"},"change_message_id":"24ed853f6065b2d72e0e4de18d4974407bf7a218","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"\tbit_file-\u003epart \u003d 0;"},{"line_number":31,"context_line":"\tbit_file-\u003ehas_id \u003d false;"},{"line_number":32,"context_line":"\tint state \u003d SEEK_HEADER_START;"},{"line_number":33,"context_line":"\tfor (size_t pos \u003d 1; pos \u003c bit_file-\u003eraw_bit.length \u0026\u0026 state !\u003d DONE; ++pos) {"},{"line_number":34,"context_line":"\t\tswitch (state) {"},{"line_number":35,"context_line":"\t\tcase SEEK_HEADER_START:"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"d425ffc2_cab6e140","line":32,"in_reply_to":"340c98e9_54f77555","updated":"2023-04-08 19:06:51.000000000","message":"Done","commit_id":"83a7a2cd23b82db06d84279c4556843105bf1658"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"8d16bc9edbc3890c187e98f704942bf082ccc51b","unresolved":true,"context_lines":[{"line_number":47,"context_line":"\t\t\t}"},{"line_number":48,"context_line":"\t\t\tbreak;"},{"line_number":49,"context_line":"\t\tcase SEEK_PREAMBLE:"},{"line_number":50,"context_line":"\t\t\tif (pos \u003e\u003d 4 \u0026\u0026 bit_file-\u003eraw_bit.data[pos] \u003d\u003d 0xb3) {"},{"line_number":51,"context_line":"\t\t\t\tif (bit_file-\u003eraw_bit.data[pos - 1] \u003d\u003d 0xbd \u0026\u0026"},{"line_number":52,"context_line":"\t\t\t\t\tbit_file-\u003eraw_bit.data[pos - 2] \u003d\u003d 0xff \u0026\u0026"},{"line_number":53,"context_line":"\t\t\t\t\tbit_file-\u003eraw_bit.data[pos - 3] \u003d\u003d 0xff) {"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"27d6688f_84b33e2d","line":50,"updated":"2023-04-02 13:11:30.000000000","message":"I don\u0027t know if it makes sense to improve readability. Feel free to drop my suggestion if it hides details that you think could be important.\nI used variable name \u0027x\u0027, I don\u0027t know what name could be appropriate.\nI used le_to_h_u32(). It exists be_to_h_u32(), if better for this case.\n if (pos \u003e\u003d 4) {\n   uint32_t x \u003d le_to_h_u32(pos - 3);\n   switch (x) {\n   case 0xffffbdb3:\n     state \u003d SEEK_ID;\n     break;\n   case 0xffffbfb3:\n   case 0xffffbeb3:\n     state \u003d DONE;\n     break;\n   }\n }","commit_id":"83a7a2cd23b82db06d84279c4556843105bf1658"},{"author":{"_account_id":1001810,"name":"Daniel Anselmi","email":"danselmi@gmx.ch","username":"danselmi"},"change_message_id":"24ed853f6065b2d72e0e4de18d4974407bf7a218","unresolved":false,"context_lines":[{"line_number":47,"context_line":"\t\t\t}"},{"line_number":48,"context_line":"\t\t\tbreak;"},{"line_number":49,"context_line":"\t\tcase SEEK_PREAMBLE:"},{"line_number":50,"context_line":"\t\t\tif (pos \u003e\u003d 4 \u0026\u0026 bit_file-\u003eraw_bit.data[pos] \u003d\u003d 0xb3) {"},{"line_number":51,"context_line":"\t\t\t\tif (bit_file-\u003eraw_bit.data[pos - 1] \u003d\u003d 0xbd \u0026\u0026"},{"line_number":52,"context_line":"\t\t\t\t\tbit_file-\u003eraw_bit.data[pos - 2] \u003d\u003d 0xff \u0026\u0026"},{"line_number":53,"context_line":"\t\t\t\t\tbit_file-\u003eraw_bit.data[pos - 3] \u003d\u003d 0xff) {"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"ea66c5be_2f51d2e2","line":50,"in_reply_to":"27d6688f_84b33e2d","updated":"2023-04-08 19:06:51.000000000","message":"Done","commit_id":"83a7a2cd23b82db06d84279c4556843105bf1658"}],"src/pld/lattice_bit.h":[{"author":{"_account_id":1001415,"name":"Jonathan McDowell","email":"noodles-openocd@earth.li","username":"u1f35c"},"change_message_id":"ea9b977de6640f3422fac33bb4d1a1e6f9e6f5dc","unresolved":true,"context_lines":[{"line_number":20,"context_line":"\tbool has_id;"},{"line_number":21,"context_line":"};"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"enum family_e {ecp2,"},{"line_number":24,"context_line":"\t\t\t\tecp3,"},{"line_number":25,"context_line":"\t\t\t\tecp5,"},{"line_number":26,"context_line":"\t\t\t\tcertus,"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"30e29008_2271d9c5","line":23,"updated":"2022-12-13 19:22:11.000000000","message":"lattice_family_e as this is only for Lattice devices?","commit_id":"7b320de2008e984ef3ef89fef626d9a3c4752c5e"},{"author":{"_account_id":1001810,"name":"Daniel Anselmi","email":"danselmi@gmx.ch","username":"danselmi"},"change_message_id":"6ca690b9bbe250211f5a597228d33ee81d9ce9a1","unresolved":false,"context_lines":[{"line_number":20,"context_line":"\tbool has_id;"},{"line_number":21,"context_line":"};"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"enum family_e {ecp2,"},{"line_number":24,"context_line":"\t\t\t\tecp3,"},{"line_number":25,"context_line":"\t\t\t\tecp5,"},{"line_number":26,"context_line":"\t\t\t\tcertus,"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"6c404103_5917e30b","line":23,"in_reply_to":"30e29008_2271d9c5","updated":"2022-12-13 21:38:24.000000000","message":"Done","commit_id":"7b320de2008e984ef3ef89fef626d9a3c4752c5e"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"8d16bc9edbc3890c187e98f704942bf082ccc51b","unresolved":true,"context_lines":[{"line_number":20,"context_line":"\tbool has_id;"},{"line_number":21,"context_line":"};"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"enum lattice_family_e {ecp2,"},{"line_number":24,"context_line":"\t\t\t\tecp3,"},{"line_number":25,"context_line":"\t\t\t\tecp5,"},{"line_number":26,"context_line":"\t\t\t\tcertus,"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"5a3581da_c524b073","line":23,"updated":"2023-04-02 13:11:30.000000000","message":"enum values must be uppercase. Also good to keep a prefix, e.g. LATTICE_*\n enum lattice_family_e {\n   LATTICE_ECP2,\n   LATTICE_ECP3,\n   LATTICE_ECP5,\n   LATTICE_CERTUS,\n   LATTICE_UNKNOWN,\n };","commit_id":"83a7a2cd23b82db06d84279c4556843105bf1658"},{"author":{"_account_id":1001810,"name":"Daniel Anselmi","email":"danselmi@gmx.ch","username":"danselmi"},"change_message_id":"24ed853f6065b2d72e0e4de18d4974407bf7a218","unresolved":false,"context_lines":[{"line_number":20,"context_line":"\tbool has_id;"},{"line_number":21,"context_line":"};"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"enum lattice_family_e {ecp2,"},{"line_number":24,"context_line":"\t\t\t\tecp3,"},{"line_number":25,"context_line":"\t\t\t\tecp5,"},{"line_number":26,"context_line":"\t\t\t\tcertus,"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"35a693ec_056a98c1","line":23,"in_reply_to":"5a3581da_c524b073","updated":"2023-04-08 19:06:51.000000000","message":"Done","commit_id":"83a7a2cd23b82db06d84279c4556843105bf1658"}]}
