From e959756f5aba689d7246a5ad306b4692f3aa394b Mon Sep 17 00:00:00 2001 From: "Berk D. Demir" Date: Sat, 22 Apr 2023 17:35:45 -0700 Subject: [PATCH] Refactor to address compiler warnings - Unused function warnings Move function definitions in include/blisp_util.h to lib/blisp_util.c. Defining them as static leads to internal linkage, accessible in that translation unit, hence the warning. Their references are to be handled in other translation units, so they shouldn't be static. - Unused function parameters Use C attribute `[[maybe_unused]]` (introduced in C23) to suppress unused parameter warnings. - `blisp_chip_xxxxx_get_eflash_loader` implementations accept clock type but don't use it. - `drain` function only has a body under macOS and FreeBSD with preprocessor predicates. - Enable compiler warnings Now that warnings are address enable them `-Wall -Wextra -Wpedantic` for the library and the tool targets. N.B. An equivalent of MSVC should be added to CMakeLists.txt, as these would only work when using GCC or Clang. --- CMakeLists.txt | 5 +++- include/blisp.h | 3 +-- include/blisp_util.h | 47 ++++++------------------------------ lib/blisp.c | 4 ++-- lib/blisp_util.c | 48 +++++++++++++++++++++++++++++++++++++ lib/chip/blisp_chip_bl60x.c | 2 +- lib/chip/blisp_chip_bl70x.c | 2 +- tools/blisp/CMakeLists.txt | 2 ++ 8 files changed, 66 insertions(+), 47 deletions(-) create mode 100644 lib/blisp_util.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 1c369de..dccff37 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,10 +7,13 @@ option(BLISP_BUILD_CLI "Build CLI Tool" OFF) add_library(libblisp_obj OBJECT lib/blisp.c + lib/blisp_easy.c + lib/blisp_util.c lib/chip/blisp_chip_bl60x.c - lib/chip/blisp_chip_bl70x.c lib/blisp_easy.c) + lib/chip/blisp_chip_bl70x.c) target_include_directories(libblisp_obj PRIVATE ${CMAKE_SOURCE_DIR}/include/) +target_compile_options(libblisp_obj PRIVATE -Wall -Wextra -Wpedantic) set_property(TARGET libblisp_obj PROPERTY POSITION_INDEPENDENT_CODE 1) diff --git a/include/blisp.h b/include/blisp.h index ce85fb1..84031f2 100644 --- a/include/blisp.h +++ b/include/blisp.h @@ -72,5 +72,4 @@ int32_t blisp_device_flash_write(struct blisp_device* device, int32_t blisp_device_program_check(struct blisp_device* device); int32_t blisp_device_reset(struct blisp_device* device); void blisp_device_close(struct blisp_device* device); - -#endif \ No newline at end of file +#endif diff --git a/include/blisp_util.h b/include/blisp_util.h index f1f4d8f..7fe38c8 100644 --- a/include/blisp_util.h +++ b/include/blisp_util.h @@ -2,35 +2,18 @@ #ifndef _BLISP_UTIL_H #define _BLISP_UTIL_H -#include -#include +#include #ifdef WIN32 -#include +# include #else -#include +# include #endif -static void blisp_dlog(const char* format, ...) -{ - fflush(stdout); - va_list args; - va_start(args, format); - vfprintf(stderr, format, args); - va_end(args); - fputc('\n', stderr); -} +void blisp_dlog(const char* format, ...); +void sleep_ms(int milliseconds); -static void sleep_ms(int milliseconds) { -#ifdef WIN32 - Sleep(milliseconds); -#else - struct timespec ts; - ts.tv_sec = milliseconds / 1000; - ts.tv_nsec = (milliseconds % 1000) * 1000000; - nanosleep(&ts, NULL); -#endif -} +uint32_t crc32_calculate(const void *data, size_t data_len); /** * * Generated on Mon Jan 9 19:56:36 2023 @@ -44,7 +27,6 @@ static void sleep_ms(int milliseconds) { * - ReflectOut = True * - Algorithm = table-driven */ - static const uint32_t crc_table[256] = { 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, @@ -80,19 +62,4 @@ static const uint32_t crc_table[256] = { 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d }; -static uint32_t crc32_calculate(const void *data, size_t data_len) -{ - uint32_t crc = 0xffffffff; - const unsigned char *d = (const unsigned char *)data; - unsigned int tbl_idx; - - while (data_len--) { - tbl_idx = (crc ^ *d) & 0xff; - crc = (crc_table[tbl_idx] ^ (crc >> 8)) & 0xffffffff; - d++; - } - return (crc & 0xffffffff) ^ 0xffffffff; -} - - -#endif \ No newline at end of file +#endif diff --git a/lib/blisp.c b/lib/blisp.c index 0d5882c..8b30d51 100644 --- a/lib/blisp.c +++ b/lib/blisp.c @@ -13,7 +13,7 @@ #define DEBUG -static void drain(struct sp_port* port) { +static void drain([[maybe_unused]] struct sp_port* port) { #if defined(__APPLE__) || defined(__FreeBSD__) sp_drain(port); #endif @@ -412,4 +412,4 @@ int32_t blisp_device_reset(struct blisp_device* device) { void blisp_device_close(struct blisp_device* device) { struct sp_port* serial_port = device->serial_port; sp_close(serial_port); -} \ No newline at end of file +} diff --git a/lib/blisp_util.c b/lib/blisp_util.c new file mode 100644 index 0000000..27bca4f --- /dev/null +++ b/lib/blisp_util.c @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: MIT +#include +#include +#include + +#ifdef WIN32 +# include +#else +# include +#endif + +#include "blisp_util.h" + +void blisp_dlog(const char* format, ...) +{ + fflush(stdout); + va_list args; + va_start(args, format); + vfprintf(stderr, format, args); + va_end(args); + fputc('\n', stderr); +} + + +void sleep_ms(int milliseconds) { +#ifdef WIN32 + Sleep(milliseconds); +#else + struct timespec ts; + ts.tv_sec = milliseconds / 1000; + ts.tv_nsec = (milliseconds % 1000) * 1000000; + nanosleep(&ts, NULL); +#endif +} + +uint32_t crc32_calculate(const void *data, size_t data_len) +{ + uint32_t crc = 0xffffffff; + const unsigned char *d = (const unsigned char *)data; + unsigned int tbl_idx; + + while (data_len--) { + tbl_idx = (crc ^ *d) & 0xff; + crc = (crc_table[tbl_idx] ^ (crc >> 8)) & 0xffffffff; + d++; + } + return (crc & 0xffffffff) ^ 0xffffffff; +} diff --git a/lib/chip/blisp_chip_bl60x.c b/lib/chip/blisp_chip_bl60x.c index e8ae033..0a56f46 100644 --- a/lib/chip/blisp_chip_bl60x.c +++ b/lib/chip/blisp_chip_bl60x.c @@ -4,7 +4,7 @@ #include "../../data/bl60x_eflash_loader.h" #include "blisp.h" -int64_t blisp_chip_bl60x_get_eflash_loader(uint8_t clk_type, uint8_t** firmware_buf_ptr) +int64_t blisp_chip_bl60x_get_eflash_loader([[maybe_unused]] uint8_t clk_type, uint8_t** firmware_buf_ptr) { uint8_t* firmware_buf = malloc(sizeof(bl60x_eflash_loader_bin)); memcpy(firmware_buf, bl60x_eflash_loader_bin, sizeof(bl60x_eflash_loader_bin)); diff --git a/lib/chip/blisp_chip_bl70x.c b/lib/chip/blisp_chip_bl70x.c index a380720..6368211 100644 --- a/lib/chip/blisp_chip_bl70x.c +++ b/lib/chip/blisp_chip_bl70x.c @@ -4,7 +4,7 @@ #include "../../data/bl70x_eflash_loader.h" #include "blisp.h" -int64_t blisp_chip_bl70x_get_eflash_loader(uint8_t clk_type, uint8_t** firmware_buf_ptr) +int64_t blisp_chip_bl70x_get_eflash_loader([[maybe_unused]] uint8_t clk_type, uint8_t** firmware_buf_ptr) { uint8_t* firmware_buf = malloc(sizeof(bl70x_eflash_loader_bin)); memcpy(firmware_buf, bl70x_eflash_loader_bin, sizeof(bl70x_eflash_loader_bin)); diff --git a/tools/blisp/CMakeLists.txt b/tools/blisp/CMakeLists.txt index ce38714..3cfffda 100644 --- a/tools/blisp/CMakeLists.txt +++ b/tools/blisp/CMakeLists.txt @@ -13,6 +13,8 @@ target_link_libraries(blisp PRIVATE argtable3 libblisp_static) +target_compile_options(blisp PRIVATE -Wall -Wextra -Wpedantic) + if (WIN32) target_link_libraries(blisp PRIVATE Setupapi.lib) elseif (APPLE)