/home/runner/work/_temp/app/code/knit_counter.c: In function 'state_free': /home/runner/work/_temp/app/code/knit_counter.c:33:22: error: passing argument 1 of 'furi_mutex_free' from incompatible pointer type [-Werror=incompatible-pointer-types] 33 | furi_mutex_free(c->mutex); | ~^~~~~~~ | | | FuriMutex ** {aka struct FuriMutex **} In file included from /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/furi.h:15, from /home/runner/work/_temp/app/code/knit_counter.c:1: /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/mutex.h:33:33: note: expected 'FuriMutex *' {aka 'struct FuriMutex *'} but argument is of type 'FuriMutex **' {aka 'struct FuriMutex **'} 33 | void furi_mutex_free(FuriMutex* instance); | ~~~~~~~~~~~^~~~~~~~ In file included from /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/furi.h:6: /home/runner/work/_temp/app/code/knit_counter.c: In function 'render_callback': /home/runner/work/_temp/app/code/knit_counter.c:46:36: error: passing argument 1 of 'furi_mutex_acquire' from incompatible pointer type [-Werror=incompatible-pointer-types] 46 | furi_check(furi_mutex_acquire(c->mutex, FuriWaitForever) == FuriStatusOk); | ~^~~~~~~ | | | FuriMutex ** {aka struct FuriMutex **} /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/check.h:64:14: note: in definition of macro '__furi_check' 64 | if(!(__e)) { \ | ^~~ /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/check.h:74:5: note: in expansion of macro 'M_APPLY' 74 | M_APPLY(__furi_check, M_DEFAULT_ARGS(2, (__FURI_CHECK_MESSAGE_FLAG), __VA_ARGS__)) | ^~~~~~~ /home/runner/.ufbt/current/sdk_headers/f7_sdk/lib/mlib/m-core.h:1806:30: note: in expansion of macro 'M_DEFAULT_ARGS_EVAL' 1806 | #define M_DEFAULT_ARGS( ...) M_DEFAULT_ARGS_EVAL(M_DEFAULT_ARGS2(__VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~ /home/runner/.ufbt/current/sdk_headers/f7_sdk/lib/mlib/m-core.h:1806:50: note: in expansion of macro 'M_DEFAULT_ARGS2' 1806 | #define M_DEFAULT_ARGS( ...) M_DEFAULT_ARGS_EVAL(M_DEFAULT_ARGS2(__VA_ARGS__)) | ^~~~~~~~~~~~~~~ /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/check.h:74:27: note: in expansion of macro 'M_DEFAULT_ARGS' 74 | M_APPLY(__furi_check, M_DEFAULT_ARGS(2, (__FURI_CHECK_MESSAGE_FLAG), __VA_ARGS__)) | ^~~~~~~~~~~~~~ /home/runner/work/_temp/app/code/knit_counter.c:46:5: note: in expansion of macro 'furi_check' 46 | furi_check(furi_mutex_acquire(c->mutex, FuriWaitForever) == FuriStatusOk); | ^~~~~~~~~~ /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/mutex.h:42:42: note: expected 'FuriMutex *' {aka 'struct FuriMutex *'} but argument is of type 'FuriMutex **' {aka 'struct FuriMutex **'} 42 | FuriStatus furi_mutex_acquire(FuriMutex* instance, uint32_t timeout); | ~~~~~~~~~~~^~~~~~~~ /home/runner/work/_temp/app/code/knit_counter.c:67:25: error: passing argument 1 of 'furi_mutex_release' from incompatible pointer type [-Werror=incompatible-pointer-types] 67 | furi_mutex_release(c->mutex); | ~^~~~~~~ | | | FuriMutex ** {aka struct FuriMutex **} /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/mutex.h:50:42: note: expected 'FuriMutex *' {aka 'struct FuriMutex *'} but argument is of type 'FuriMutex **' {aka 'struct FuriMutex **'} 50 | FuriStatus furi_mutex_release(FuriMutex* instance); | ~~~~~~~~~~~^~~~~~~~ /home/runner/work/_temp/app/code/knit_counter.c: In function 'state_init': /home/runner/work/_temp/app/code/knit_counter.c:75:14: error: assignment to 'FuriMutex **' {aka 'struct FuriMutex **'} from incompatible pointer type 'FuriMutex *' {aka 'struct FuriMutex *'} [-Werror=incompatible-pointer-types] 75 | c->mutex = furi_mutex_alloc(FuriMutexTypeNormal); | ^ /home/runner/work/_temp/app/code/knit_counter.c: In function 'knit_counter_app': /home/runner/work/_temp/app/code/knit_counter.c:124:44: error: passing argument 1 of 'furi_mutex_acquire' from incompatible pointer type [-Werror=incompatible-pointer-types] 124 | furi_check(furi_mutex_acquire(c->mutex, FuriWaitForever) == FuriStatusOk); | ~^~~~~~~ | | | FuriMutex ** {aka struct FuriMutex **} /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/check.h:64:14: note: in definition of macro '__furi_check' 64 | if(!(__e)) { \ | ^~~ /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/check.h:74:5: note: in expansion of macro 'M_APPLY' 74 | M_APPLY(__furi_check, M_DEFAULT_ARGS(2, (__FURI_CHECK_MESSAGE_FLAG), __VA_ARGS__)) | ^~~~~~~ /home/runner/.ufbt/current/sdk_headers/f7_sdk/lib/mlib/m-core.h:1806:30: note: in expansion of macro 'M_DEFAULT_ARGS_EVAL' 1806 | #define M_DEFAULT_ARGS( ...) M_DEFAULT_ARGS_EVAL(M_DEFAULT_ARGS2(__VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~ /home/runner/.ufbt/current/sdk_headers/f7_sdk/lib/mlib/m-core.h:1806:50: note: in expansion of macro 'M_DEFAULT_ARGS2' 1806 | #define M_DEFAULT_ARGS( ...) M_DEFAULT_ARGS_EVAL(M_DEFAULT_ARGS2(__VA_ARGS__)) | ^~~~~~~~~~~~~~~ /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/check.h:74:27: note: in expansion of macro 'M_DEFAULT_ARGS' 74 | M_APPLY(__furi_check, M_DEFAULT_ARGS(2, (__FURI_CHECK_MESSAGE_FLAG), __VA_ARGS__)) | ^~~~~~~~~~~~~~ /home/runner/work/_temp/app/code/knit_counter.c:124:13: note: in expansion of macro 'furi_check' 124 | furi_check(furi_mutex_acquire(c->mutex, FuriWaitForever) == FuriStatusOk); | ^~~~~~~~~~ /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/mutex.h:42:42: note: expected 'FuriMutex *' {aka 'struct FuriMutex *'} but argument is of type 'FuriMutex **' {aka 'struct FuriMutex **'} 42 | FuriStatus furi_mutex_acquire(FuriMutex* instance, uint32_t timeout); | ~~~~~~~~~~~^~~~~~~~ /home/runner/work/_temp/app/code/knit_counter.c:128:37: error: passing argument 1 of 'furi_mutex_release' from incompatible pointer type [-Werror=incompatible-pointer-types] 128 | furi_mutex_release(c->mutex); | ~^~~~~~~ | | | FuriMutex ** {aka struct FuriMutex **} /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/mutex.h:50:42: note: expected 'FuriMutex *' {aka 'struct FuriMutex *'} but argument is of type 'FuriMutex **' {aka 'struct FuriMutex **'} 50 | FuriStatus furi_mutex_release(FuriMutex* instance); | ~~~~~~~~~~~^~~~~~~~ /home/runner/work/_temp/app/code/knit_counter.c:140:33: error: passing argument 1 of 'furi_mutex_release' from incompatible pointer type [-Werror=incompatible-pointer-types] 140 | furi_mutex_release(c->mutex); | ~^~~~~~~ | | | FuriMutex ** {aka struct FuriMutex **} /home/runner/.ufbt/current/sdk_headers/f7_sdk/furi/core/mutex.h:50:42: note: expected 'FuriMutex *' {aka 'struct FuriMutex *'} but argument is of type 'FuriMutex **' {aka 'struct FuriMutex **'} 50 | FuriStatus furi_mutex_release(FuriMutex* instance); | ~~~~~~~~~~~^~~~~~~~ cc1: all warnings being treated as errors scons: *** [/home/runner/.ufbt/build/knit_counter/knit_counter.o] Error 1