)]}'
{"include/flash.h":[{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"56dad6a68bd42c97ae0364e7d967236cfa9162e7","unresolved":true,"context_lines":[{"line_number":185,"context_line":"#define BAD\t\tFLASHPROG_TEST_BAD"},{"line_number":186,"context_line":"#define DEP\t\tFLASHPROG_TEST_DEP"},{"line_number":187,"context_line":"#define NA\t\tFLASHPROG_TEST_NA"},{"line_number":188,"context_line":"#define test_state\tflashprog_test_status"},{"line_number":189,"context_line":"#define tested\t\tflashprog_test_states"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"#define TEST_UNTESTED\t(struct tested){ .probe \u003d NT, .read \u003d NT, .erase \u003d NT, .write \u003d NT, .block_protection \u003d NT }"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"260a7d09_6c537776","line":189,"range":{"start_line":188,"start_character":0,"end_line":189,"end_character":37},"updated":"2026-06-19 23:03:57.000000000","message":"Better replace occurences?","commit_id":"56831cd6830d9b6e20f801e0c5b72837ebfe103b"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"3cbf76b334e5b3860612c7997f351d5fc9eb4a59","unresolved":false,"context_lines":[{"line_number":185,"context_line":"#define BAD\t\tFLASHPROG_TEST_BAD"},{"line_number":186,"context_line":"#define DEP\t\tFLASHPROG_TEST_DEP"},{"line_number":187,"context_line":"#define NA\t\tFLASHPROG_TEST_NA"},{"line_number":188,"context_line":"#define test_state\tflashprog_test_status"},{"line_number":189,"context_line":"#define tested\t\tflashprog_test_states"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"#define TEST_UNTESTED\t(struct tested){ .probe \u003d NT, .read \u003d NT, .erase \u003d NT, .write \u003d NT, .block_protection \u003d NT }"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"913a6c82_efb8a539","line":189,"range":{"start_line":188,"start_character":0,"end_line":189,"end_character":37},"in_reply_to":"260a7d09_6c537776","updated":"2026-07-04 16:12:23.000000000","message":"Done","commit_id":"56831cd6830d9b6e20f801e0c5b72837ebfe103b"}],"include/libflashprog.h":[{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"56dad6a68bd42c97ae0364e7d967236cfa9162e7","unresolved":true,"context_lines":[{"line_number":69,"context_line":"\tFLASHPROG_BUS_OPAQUE\t\u003d 1 \u003c\u003c 4, /**\u003c Chip behind an opaque bus interface */"},{"line_number":70,"context_line":"};"},{"line_number":71,"context_line":"enum flashprog_bus_type flashprog_chip_buses(const struct flashprog_chip *);"},{"line_number":72,"context_line":"char *flashprog_chip_bus_names(const struct flashprog_chip *);"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"/**"},{"line_number":75,"context_line":" * @brief Documents the minimal and maximal operating voltage for a chip."}],"source_content_type":"text/x-csrc","patch_set":2,"id":"1aa1f0f1_fce9be56","line":72,"updated":"2026-06-19 23:03:57.000000000","message":"`__attribute__((malloc, malloc(free)))`?","commit_id":"56831cd6830d9b6e20f801e0c5b72837ebfe103b"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"3cbf76b334e5b3860612c7997f351d5fc9eb4a59","unresolved":false,"context_lines":[{"line_number":69,"context_line":"\tFLASHPROG_BUS_OPAQUE\t\u003d 1 \u003c\u003c 4, /**\u003c Chip behind an opaque bus interface */"},{"line_number":70,"context_line":"};"},{"line_number":71,"context_line":"enum flashprog_bus_type flashprog_chip_buses(const struct flashprog_chip *);"},{"line_number":72,"context_line":"char *flashprog_chip_bus_names(const struct flashprog_chip *);"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"/**"},{"line_number":75,"context_line":" * @brief Documents the minimal and maximal operating voltage for a chip."}],"source_content_type":"text/x-csrc","patch_set":2,"id":"bd7fd072_cd764ef9","line":72,"in_reply_to":"1aa1f0f1_fce9be56","updated":"2026-07-04 16:12:23.000000000","message":"Doesn\u0027t work well w/ clang...","commit_id":"56831cd6830d9b6e20f801e0c5b72837ebfe103b"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"56dad6a68bd42c97ae0364e7d967236cfa9162e7","unresolved":true,"context_lines":[{"line_number":96,"context_line":" * @brief Documents the test state of various chip operations."},{"line_number":97,"context_line":" * @ingroup flashprog-chip"},{"line_number":98,"context_line":" */"},{"line_number":99,"context_line":"struct flashprog_test_states {"},{"line_number":100,"context_line":"\tenum flashprog_test_status probe:3;\t\t/**\u003c Test state for probing. */"},{"line_number":101,"context_line":"\tenum flashprog_test_status read:3;\t\t/**\u003c Test state for reading. */"},{"line_number":102,"context_line":"\tenum flashprog_test_status erase:3;\t\t/**\u003c Test state for erasing. */"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"5c985250_88ff3814","line":99,"range":{"start_line":99,"start_character":22,"end_line":99,"end_character":28},"updated":"2026-06-19 23:03:57.000000000","message":"`flashprog_test_statuses`?","commit_id":"56831cd6830d9b6e20f801e0c5b72837ebfe103b"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"3cbf76b334e5b3860612c7997f351d5fc9eb4a59","unresolved":false,"context_lines":[{"line_number":96,"context_line":" * @brief Documents the test state of various chip operations."},{"line_number":97,"context_line":" * @ingroup flashprog-chip"},{"line_number":98,"context_line":" */"},{"line_number":99,"context_line":"struct flashprog_test_states {"},{"line_number":100,"context_line":"\tenum flashprog_test_status probe:3;\t\t/**\u003c Test state for probing. */"},{"line_number":101,"context_line":"\tenum flashprog_test_status read:3;\t\t/**\u003c Test state for reading. */"},{"line_number":102,"context_line":"\tenum flashprog_test_status erase:3;\t\t/**\u003c Test state for erasing. */"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"f91287e9_b15ba589","line":99,"range":{"start_line":99,"start_character":22,"end_line":99,"end_character":28},"in_reply_to":"5c985250_88ff3814","updated":"2026-07-04 16:12:23.000000000","message":"Made the enum a `state` again and the struct that captures the state the `status`.","commit_id":"56831cd6830d9b6e20f801e0c5b72837ebfe103b"}],"libflashprog/chips.c":[{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"56dad6a68bd42c97ae0364e7d967236cfa9162e7","unresolved":true,"context_lines":[{"line_number":170,"context_line":"}"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"/**"},{"line_number":173,"context_line":" * @brief Get a string that specifies the supported bus types."},{"line_number":174,"context_line":" *"},{"line_number":175,"context_line":" * The resulting string needs to be freed with free()."},{"line_number":176,"context_line":" *"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"1b8b0547_55b64a3e","line":173,"range":{"start_line":173,"start_character":28,"end_line":173,"end_character":37},"updated":"2026-06-19 23:03:57.000000000","message":"`lists`?","commit_id":"56831cd6830d9b6e20f801e0c5b72837ebfe103b"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"3cbf76b334e5b3860612c7997f351d5fc9eb4a59","unresolved":false,"context_lines":[{"line_number":170,"context_line":"}"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"/**"},{"line_number":173,"context_line":" * @brief Get a string that specifies the supported bus types."},{"line_number":174,"context_line":" *"},{"line_number":175,"context_line":" * The resulting string needs to be freed with free()."},{"line_number":176,"context_line":" *"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"db678f30_50af1aea","line":173,"range":{"start_line":173,"start_character":28,"end_line":173,"end_character":37},"in_reply_to":"1b8b0547_55b64a3e","updated":"2026-07-04 16:12:23.000000000","message":"Done","commit_id":"56831cd6830d9b6e20f801e0c5b72837ebfe103b"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"56dad6a68bd42c97ae0364e7d967236cfa9162e7","unresolved":true,"context_lines":[{"line_number":196,"context_line":"}"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"/**"},{"line_number":199,"context_line":" * @brief Get the test status of a chips standard features."},{"line_number":200,"context_line":" *"},{"line_number":201,"context_line":" * @param chip reference to query."},{"line_number":202,"context_line":" * @return struct with the test status of the chips standard features."}],"source_content_type":"text/x-csrc","patch_set":2,"id":"6d202db8_062301f5","line":199,"range":{"start_line":199,"start_character":35,"end_line":199,"end_character":40},"updated":"2026-06-19 23:03:57.000000000","message":"`chip\u0027s`","commit_id":"56831cd6830d9b6e20f801e0c5b72837ebfe103b"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"3cbf76b334e5b3860612c7997f351d5fc9eb4a59","unresolved":false,"context_lines":[{"line_number":196,"context_line":"}"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"/**"},{"line_number":199,"context_line":" * @brief Get the test status of a chips standard features."},{"line_number":200,"context_line":" *"},{"line_number":201,"context_line":" * @param chip reference to query."},{"line_number":202,"context_line":" * @return struct with the test status of the chips standard features."}],"source_content_type":"text/x-csrc","patch_set":2,"id":"be66d96c_d44d2403","line":199,"range":{"start_line":199,"start_character":35,"end_line":199,"end_character":40},"in_reply_to":"6d202db8_062301f5","updated":"2026-07-04 16:12:23.000000000","message":"Done","commit_id":"56831cd6830d9b6e20f801e0c5b72837ebfe103b"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"56dad6a68bd42c97ae0364e7d967236cfa9162e7","unresolved":true,"context_lines":[{"line_number":199,"context_line":" * @brief Get the test status of a chips standard features."},{"line_number":200,"context_line":" *"},{"line_number":201,"context_line":" * @param chip reference to query."},{"line_number":202,"context_line":" * @return struct with the test status of the chips standard features."},{"line_number":203,"context_line":" */"},{"line_number":204,"context_line":"struct flashprog_test_states flashprog_chip_test_status(const struct flashprog_chip *chip) {"},{"line_number":205,"context_line":"\treturn chip-\u003etested;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"82c86b60_1b3d1432","line":202,"range":{"start_line":202,"start_character":46,"end_line":202,"end_character":51},"updated":"2026-06-19 23:03:57.000000000","message":"`chip\u0027s`","commit_id":"56831cd6830d9b6e20f801e0c5b72837ebfe103b"},{"author":{"_account_id":1000000,"name":"Nico Huber","email":"nico.h@gmx.de","username":"icon","avatars":[{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/60d420b5d650d48b86d6921a9f683b64.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"3cbf76b334e5b3860612c7997f351d5fc9eb4a59","unresolved":false,"context_lines":[{"line_number":199,"context_line":" * @brief Get the test status of a chips standard features."},{"line_number":200,"context_line":" *"},{"line_number":201,"context_line":" * @param chip reference to query."},{"line_number":202,"context_line":" * @return struct with the test status of the chips standard features."},{"line_number":203,"context_line":" */"},{"line_number":204,"context_line":"struct flashprog_test_states flashprog_chip_test_status(const struct flashprog_chip *chip) {"},{"line_number":205,"context_line":"\treturn chip-\u003etested;"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"758cb53a_21629356","line":202,"range":{"start_line":202,"start_character":46,"end_line":202,"end_character":51},"in_reply_to":"82c86b60_1b3d1432","updated":"2026-07-04 16:12:23.000000000","message":"Done","commit_id":"56831cd6830d9b6e20f801e0c5b72837ebfe103b"}]}
