Message ID | 20220530081209.560465-2-gopalkrishna.tiwari@gmail.com |
---|---|
State | Superseded |
Headers | show |
Series | Fixing memory leak, leaked_handle and use_after | expand |
This is automated email and please do not reply to this email! Dear submitter, Thank you for submitting the patches to the linux bluetooth mailing list. This is a CI test results with your patch series: PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=645911 ---Test result--- Test Summary: CheckPatch FAIL 13.57 seconds GitLint FAIL 9.50 seconds Prep - Setup ELL PASS 52.38 seconds Build - Prep PASS 0.63 seconds Build - Configure PASS 10.32 seconds Build - Make FAIL 3.50 seconds Make Check FAIL 0.66 seconds Make Check w/Valgrind FAIL 13.32 seconds Make Distcheck FAIL 39.97 seconds Build w/ext ELL - Configure PASS 10.35 seconds Build w/ext ELL - Make FAIL 3.92 seconds Incremental Build with patchesFAIL 14.83 seconds Details ############################## Test: CheckPatch - FAIL Desc: Run checkpatch.pl script with rule in .checkpatch.conf Output: [Bluez,01/13] Fixing memory leak issue in gatt.c WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description (prefer a maximum 75 chars per line) #58: While performing the static tool analysis using coverity tool found following reports /github/workspace/src/12864387.patch total: 0 errors, 1 warnings, 31 lines checked NOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace. /github/workspace/src/12864387.patch has style problems, please review. NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS. [Bluez,02/13] Fixing memory leakage in appkey.c WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description (prefer a maximum 75 chars per line) #58: While performing the static analysis using the coverity tool found following memroy leak reports WARNING:TYPO_SPELLING: 'memroy' may be misspelled - perhaps 'memory'? #58: While performing the static analysis using the coverity tool found following memroy leak reports ^^^^^^ /github/workspace/src/12864389.patch total: 0 errors, 2 warnings, 17 lines checked NOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace. /github/workspace/src/12864389.patch has style problems, please review. NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS. [Bluez,03/13] Fixing memroy leak in jlink.c WARNING:TYPO_SPELLING: 'memroy' may be misspelled - perhaps 'memory'? #45: Subject: [Bluez 03/13] Fixing memroy leak in jlink.c ^^^^^^ WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description (prefer a maximum 75 chars per line) #58: While performing static tool analysis using coverity found following reports for resouse leak /github/workspace/src/12864388.patch total: 0 errors, 2 warnings, 13 lines checked NOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace. /github/workspace/src/12864388.patch has style problems, please review. NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS. [Bluez,04/13] Fixing memory leak in sixaxis.c WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description (prefer a maximum 75 chars per line) #58: While performing static tool analysis using coverity found following reports for resouse leak /github/workspace/src/12864390.patch total: 0 errors, 1 warnings, 17 lines checked NOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace. /github/workspace/src/12864390.patch has style problems, please review. NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS. [Bluez,05/13] Fixing leaked_handle in cltest.c WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description (prefer a maximum 75 chars per line) #58: While performing static tool analysis using coverity found following reports for resouse leak /github/workspace/src/12864391.patch total: 0 errors, 1 warnings, 7 lines checked NOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace. /github/workspace/src/12864391.patch has style problems, please review. NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS. [Bluez,06/13] Fixing leaked_handle in create-image.c WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description (prefer a maximum 75 chars per line) #58: While performing static tool analysis using coverity found following reports for resouse leak /github/workspace/src/12864394.patch total: 0 errors, 1 warnings, 24 lines checked NOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace. /github/workspace/src/12864394.patch has style problems, please review. NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS. [Bluez,07/13] Fixing leaked_handle in l2cap-tester.c WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description (prefer a maximum 75 chars per line) #58: While performing static tool analysis using coverity found following reports for resouse leak /github/workspace/src/12864392.patch total: 0 errors, 1 warnings, 7 lines checked NOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace. /github/workspace/src/12864392.patch has style problems, please review. NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS. [Bluez,08/13] Fixing resource leak in mesh/mesh-db.c WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description (prefer a maximum 75 chars per line) #58: While performing static tool analysis using coverity found following reports for resouse leak /github/workspace/src/12864393.patch total: 0 errors, 1 warnings, 8 lines checked NOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace. /github/workspace/src/12864393.patch has style problems, please review. NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS. [Bluez,09/13] Fixing leaked_handle in obex-client-tool.c WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description (prefer a maximum 75 chars per line) #58: While performing static tool analysis using coverity found following reports for resouse leak /github/workspace/src/12864395.patch total: 0 errors, 1 warnings, 7 lines checked NOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace. /github/workspace/src/12864395.patch has style problems, please review. NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS. [Bluez,11/13] Fixing memory leak in pbap.c ERROR:TRAILING_WHITESPACE: trailing whitespace #77: FILE: obexd/client/pbap.c:929: +^I^Ig_obex_apparam_free(apparam);^I$ /github/workspace/src/12864398.patch total: 1 errors, 0 warnings, 13 lines checked NOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace. NOTE: Whitespace errors detected. You may wish to use scripts/cleanpatch or scripts/cleanfile /github/workspace/src/12864398.patch has style problems, please review. NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS. ############################## Test: GitLint - FAIL Desc: Run gitlint with rule in .gitlint Output: [Bluez,01/13] Fixing memory leak issue in gatt.c 5: B1 Line exceeds max length (85>80): "While performing the static tool analysis using coverity tool found following reports" 8: B1 Line exceeds max length (116>80): "bluez-5.64/client/gatt.c:1531: leaked_storage: Variable "service" going out of scope leaks the storage it points to." 11: B1 Line exceeds max length (113>80): "bluez-5.64/client/gatt.c:2626: leaked_storage: Variable "chrc" going out of scope leaks the storage it points to." 14: B1 Line exceeds max length (113>80): "bluez-5.64/client/gatt.c:2906: leaked_storage: Variable "desc" going out of scope leaks the storage it points to." [Bluez,02/13] Fixing memory leakage in appkey.c 5: B1 Line exceeds max length (96>80): "While performing the static analysis using the coverity tool found following memroy leak reports" 7: B1 Line exceeds max length (111>80): "bluez-5.64/mesh/appkey.c:143: leaked_storage: Variable "key" going out of scope leaks the storage it points to." 10: B1 Line exceeds max length (111>80): "bluez-5.64/mesh/appkey.c:146: leaked_storage: Variable "key" going out of scope leaks the storage it points to." [Bluez,03/13] Fixing memroy leak in jlink.c 5: B1 Line exceeds max length (93>80): "While performing static tool analysis using coverity found following reports for resouse leak" 7: B1 Line exceeds max length (112>80): "bluez-5.64/monitor/jlink.c:111: leaked_storage: Variable "so" going out of scope leaks the storage it points to." 9: B1 Line exceeds max length (112>80): "bluez-5.64/monitor/jlink.c:113: leaked_storage: Variable "so" going out of scope leaks the storage it points to." [Bluez,04/13] Fixing memory leak in sixaxis.c 5: B1 Line exceeds max length (93>80): "While performing static tool analysis using coverity found following reports for resouse leak" 7: B1 Line exceeds max length (125>80): "bluez-5.64/plugins/sixaxis.c:425: alloc_arg: "get_pairing_type_for_device" allocates memory that is stored into "sysfs_path"." 8: B1 Line exceeds max length (122>80): "bluez-5.64/plugins/sixaxis.c:428: leaked_storage: Variable "sysfs_path" going out of scope leaks the storage it points to." [Bluez,05/13] Fixing leaked_handle in cltest.c 5: B1 Line exceeds max length (93>80): "While performing static tool analysis using coverity found following reports for resouse leak" 7: B1 Line exceeds max length (102>80): "bluez-5.64/tools/cltest.c:75: leaked_handle: Handle variable "fd" going out of scope leaks the handle." [Bluez,06/13] Fixing leaked_handle in create-image.c 5: B1 Line exceeds max length (93>80): "While performing static tool analysis using coverity found following reports for resouse leak" 7: B1 Line exceeds max length (118>80): "bluez-5.64/tools/create-image.c:124: leaked_storage: Variable "map" going out of scope leaks the storage it points to." [Bluez,07/13] Fixing leaked_handle in l2cap-tester.c 5: B1 Line exceeds max length (93>80): "While performing static tool analysis using coverity found following reports for resouse leak" 7: B1 Line exceeds max length (114>80): "bluez-5.64/tools/l2cap-tester.c:1712: leaked_handle: Handle variable "new_sk" going out of scope leaks the handle." [Bluez,08/13] Fixing resource leak in mesh/mesh-db.c 5: B1 Line exceeds max length (93>80): "While performing static tool analysis using coverity found following reports for resouse leak" 7: B1 Line exceeds max length (110>80): "bluez-5.64/tools/mesh/mesh-db.c:2388: leaked_handle: Handle variable "fd" going out of scope leaks the handle." 9: B1 Line exceeds max length (119>80): "bluez-5.64/tools/mesh/mesh-db.c:2388: leaked_storage: Variable "str" going out of scope leaks the storage it points to." [Bluez,09/13] Fixing leaked_handle in obex-client-tool.c 5: B1 Line exceeds max length (93>80): "While performing static tool analysis using coverity found following reports for resouse leak" 7: B1 Line exceeds max length (113>80): "bluez-5.64/tools/obex-client-tool.c:315: leaked_handle: Handle variable "sk" going out of scope leaks the handle." [Bluez,10/13] Fixing use after free in src/device.c 8: B1 Line exceeds max length (119>80): "bluez-5.64/src/device.c:2962: path: Condition "!dbus_message_get_args(msg, NULL, 0 /* (int)0 */)", taking false branch." 9: B1 Line exceeds max length (85>80): "bluez-5.64/src/device.c:2965: path: Condition "device->bonding", taking false branch." 10: B1 Line exceeds max length (95>80): "bluez-5.64/src/device.c:2968: path: Condition "device->bredr_state.bonded", taking true branch." 12: B1 Line exceeds max length (83>80): "bluez-5.64/src/device.c:2977: path: Condition "state->bonded", taking false branch." 16: B1 Line exceeds max length (85>80): "bluez-5.64/src/device.c:3005: path: Condition "bdaddr_type != 0", taking true branch." 17: B1 Line exceeds max length (86>80): "bluez-5.64/src/device.c:3006: path: Condition "!state->connected", taking true branch." 18: B1 Line exceeds max length (100>80): "bluez-5.64/src/device.c:3006: path: Condition "btd_le_connect_before_pairing()", taking true branch." 19: B1 Line exceeds max length (85>80): "bluez-5.64/src/device.c:3007: freed_arg: "device_connect_le" frees "device->bonding"." 23: B1 Line exceeds max length (135>80): "bluez-5.64/src/device.c:3018: double_free: Calling "bonding_request_free" frees pointer "device->bonding" which has already been freed." [Bluez,11/13] Fixing memory leak in pbap.c 7: B1 Line exceeds max length (121>80): "bluez-5.64/obexd/client/pbap.c:929: leaked_storage: Variable "apparam" going out of scope leaks the storage it points to." [Bluez,12/13] Fixing possible use_after_free in meshctl.c 8: B1 Line exceeds max length (117>80): "bluez-5.64/tools/meshctl.c:2018: double_free: Calling "g_free" frees pointer "mesh_dir" which has already been freed." [Bluez,13/13] Fixing use_after_free in prov-db.c 9: B1 Line exceeds max length (124>80): "bluez-5.64/tools/mesh-gatt/prov-db.c:867: double_free: Calling "g_free" frees pointer "in_str" which has already been freed." ############################## Test: Build - Make - FAIL Desc: Build the BlueZ source tree Output: client/gatt.c: In function ‘gatt_register_service’: client/gatt.c:1554:24: error: invalid storage class for function ‘service_find’ 1554 | static struct service *service_find(const char *pattern) | ^~~~~~~~~~~~ client/gatt.c:1554:1: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement] 1554 | static struct service *service_find(const char *pattern) | ^~~~~~ client/gatt.c:1594:14: error: invalid storage class for function ‘inc_find’ 1594 | static char *inc_find(struct service *serv, char *path) | ^~~~~~~~ client/gatt.c:1666:17: error: invalid storage class for function ‘chrc_get_handle’ 1666 | static gboolean chrc_get_handle(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~ client/gatt.c:1676:13: error: invalid storage class for function ‘chrc_set_handle’ 1676 | static void chrc_set_handle(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~ client/gatt.c:1695:17: error: invalid storage class for function ‘chrc_get_uuid’ 1695 | static gboolean chrc_get_uuid(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~ client/gatt.c:1705:17: error: invalid storage class for function ‘chrc_get_service’ 1705 | static gboolean chrc_get_service(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~ client/gatt.c:1716:17: error: invalid storage class for function ‘chrc_get_value’ 1716 | static gboolean chrc_get_value(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~ client/gatt.c:1732:17: error: invalid storage class for function ‘chrc_get_notifying’ 1732 | static gboolean chrc_get_notifying(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:1745:17: error: invalid storage class for function ‘chrc_get_flags’ 1745 | static gboolean chrc_get_flags(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~ client/gatt.c:1763:17: error: invalid storage class for function ‘chrc_get_write_acquired’ 1763 | static gboolean chrc_get_write_acquired(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1776:17: error: invalid storage class for function ‘chrc_write_acquired_exists’ 1776 | static gboolean chrc_write_acquired_exists(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1793:17: error: invalid storage class for function ‘chrc_get_notify_acquired’ 1793 | static gboolean chrc_get_notify_acquired(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1806:17: error: invalid storage class for function ‘chrc_notify_acquired_exists’ 1806 | static gboolean chrc_notify_acquired_exists(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1824:19: error: initializer element is not constant 1824 | { "Handle", "q", chrc_get_handle, chrc_set_handle, NULL }, | ^~~~~~~~~~~~~~~ client/gatt.c:1824:19: note: (near initialization for ‘chrc_properties[0].get’) client/gatt.c:1824:36: error: initializer element is not constant 1824 | { "Handle", "q", chrc_get_handle, chrc_set_handle, NULL }, | ^~~~~~~~~~~~~~~ client/gatt.c:1824:36: note: (near initialization for ‘chrc_properties[0].set’) client/gatt.c:1825:17: error: initializer element is not constant 1825 | { "UUID", "s", chrc_get_uuid, NULL, NULL }, | ^~~~~~~~~~~~~ client/gatt.c:1825:17: note: (near initialization for ‘chrc_properties[1].get’) client/gatt.c:1826:20: error: initializer element is not constant 1826 | { "Service", "o", chrc_get_service, NULL, NULL }, | ^~~~~~~~~~~~~~~~ client/gatt.c:1826:20: note: (near initialization for ‘chrc_properties[2].get’) client/gatt.c:1827:19: error: initializer element is not constant 1827 | { "Value", "ay", chrc_get_value, NULL, NULL }, | ^~~~~~~~~~~~~~ client/gatt.c:1827:19: note: (near initialization for ‘chrc_properties[3].get’) client/gatt.c:1828:22: error: initializer element is not constant 1828 | { "Notifying", "b", chrc_get_notifying, NULL, NULL }, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:1828:22: note: (near initialization for ‘chrc_properties[4].get’) client/gatt.c:1829:19: error: initializer element is not constant 1829 | { "Flags", "as", chrc_get_flags, NULL, NULL }, | ^~~~~~~~~~~~~~ client/gatt.c:1829:19: note: (near initialization for ‘chrc_properties[5].get’) client/gatt.c:1830:26: error: initializer element is not constant 1830 | { "WriteAcquired", "b", chrc_get_write_acquired, NULL, | ^~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1830:26: note: (near initialization for ‘chrc_properties[6].get’) client/gatt.c:1831:6: error: initializer element is not constant 1831 | chrc_write_acquired_exists }, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1831:6: note: (near initialization for ‘chrc_properties[6].exists’) client/gatt.c:1832:27: error: initializer element is not constant 1832 | { "NotifyAcquired", "b", chrc_get_notify_acquired, NULL, | ^~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1832:27: note: (near initialization for ‘chrc_properties[7].get’) client/gatt.c:1833:6: error: initializer element is not constant 1833 | chrc_notify_acquired_exists }, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1833:6: note: (near initialization for ‘chrc_properties[7].exists’) client/gatt.c:1837:20: error: invalid storage class for function ‘path_to_address’ 1837 | static const char *path_to_address(const char *path) | ^~~~~~~~~~~~~~~ client/gatt.c:1851:12: error: invalid storage class for function ‘parse_options’ 1851 | static int parse_options(DBusMessageIter *iter, uint16_t *offset, uint16_t *mtu, | ^~~~~~~~~~~~~ client/gatt.c:1911:21: error: invalid storage class for function ‘read_value’ 1911 | static DBusMessage *read_value(DBusMessage *msg, uint8_t *value, | ^~~~~~~~~~ client/gatt.c:1934:13: error: invalid storage class for function ‘authorize_read_response’ 1934 | static void authorize_read_response(const char *input, void *user_data) | ^~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1967:13: error: invalid storage class for function ‘is_device_trusted’ 1967 | static bool is_device_trusted(const char *path) | ^~~~~~~~~~~~~~~~~ client/gatt.c:1986:13: error: invalid storage class for function ‘proxy_read_reply’ 1986 | static void proxy_read_reply(DBusMessage *message, void *user_data) | ^~~~~~~~~~~~~~~~ client/gatt.c:2033:13: error: invalid storage class for function ‘proxy_read_setup’ 2033 | static void proxy_read_setup(DBusMessageIter *iter, void *user_data) | ^~~~~~~~~~~~~~~~ client/gatt.c:2051:21: error: invalid storage class for function ‘proxy_read_value’ 2051 | static DBusMessage *proxy_read_value(struct GDBusProxy *proxy, DBusMessage *msg, | ^~~~~~~~~~~~~~~~ client/gatt.c:2070:21: error: invalid storage class for function ‘chrc_read_value’ 2070 | static DBusMessage *chrc_read_value(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~ client/gatt.c:2121:12: error: invalid storage class for function ‘parse_value_arg’ 2121 | static int parse_value_arg(DBusMessageIter *iter, uint8_t **value, int *len) | ^~~~~~~~~~~~~~~ client/gatt.c:2134:12: error: invalid storage class for function ‘write_value’ 2134 | static int write_value(size_t *dst_len, uint8_t **dst_value, uint8_t *src_val, | ^~~~~~~~~~~ client/gatt.c:2150:13: error: invalid storage class for function ‘authorize_write_response’ 2150 | static void authorize_write_response(const char *input, void *user_data) | ^~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:2221:13: error: invalid storage class for function ‘proxy_write_reply’ 2221 | static void proxy_write_reply(DBusMessage *message, void *user_data) | ^~~~~~~~~~~~~~~~~ client/gatt.c:2240:21: error: invalid storage class for function ‘proxy_write_value’ 2240 | static DBusMessage *proxy_write_value(struct GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~ client/gatt.c:2264:21: error: invalid storage class for function ‘chrc_write_value’ 2264 | static DBusMessage *chrc_write_value(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~ client/gatt.c:2340:21: error: invalid storage class for function ‘create_sock’ 2340 | static DBusMessage *create_sock(struct chrc *chrc, DBusMessage *msg) | ^~~~~~~~~~~ client/gatt.c:2379:21: error: invalid storage class for function ‘chrc_acquire_write’ 2379 | static DBusMessage *chrc_acquire_write(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:2411:21: error: invalid storage class for function ‘chrc_acquire_notify’ 2411 | static DBusMessage *chrc_acquire_notify(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~~~~ client/gatt.c:2449:13: error: invalid storage class for function ‘proxy_notify_reply’ 2449 | static void proxy_notify_reply(DBusMessage *message, void *user_data) | ^~~~~~~~~~~~~~~~~~ client/gatt.c:2483:21: error: invalid storage class for function ‘proxy_notify’ 2483 | static DBusMessage *proxy_notify(struct chrc *chrc, DBusMessage *msg, | ^~~~~~~~~~~~ client/gatt.c:2507:21: error: invalid storage class for function ‘chrc_start_notify’ 2507 | static DBusMessage *chrc_start_notify(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~~ client/gatt.c:2527:21: error: invalid storage class for function ‘chrc_stop_notify’ 2527 | static DBusMessage *chrc_stop_notify(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~ client/gatt.c:2547:21: error: invalid storage class for function ‘chrc_confirm’ 2547 | static DBusMessage *chrc_confirm(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~ In file included from client/gatt.c:33: ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2559:36: note: in expansion of macro ‘GDBUS_ARGS’ 2559 | { GDBUS_ASYNC_METHOD("ReadValue", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[0].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2559:36: note: in expansion of macro ‘GDBUS_ARGS’ 2559 | { GDBUS_ASYNC_METHOD("ReadValue", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusPropertyTable *’ {aka ‘const struct GDBusPropertyTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2560:6: note: in expansion of macro ‘GDBUS_ARGS’ 2560 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[0].out_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2560:6: note: in expansion of macro ‘GDBUS_ARGS’ 2560 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2560:6: note: in expansion of macro ‘GDBUS_ARGS’ 2560 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[0].out_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2560:6: note: in expansion of macro ‘GDBUS_ARGS’ 2560 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ client/gatt.c:2561:6: error: initializer element is not constant 2561 | chrc_read_value) }, | ^~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2561:6: note: (near initialization for ‘chrc_methods[0].function’) 2561 | chrc_read_value) }, | ^~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusPropertyTable *’ {aka ‘const struct GDBusPropertyTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2562:37: note: in expansion of macro ‘GDBUS_ARGS’ 2562 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[1].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2562:37: note: in expansion of macro ‘GDBUS_ARGS’ 2562 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2562:37: note: in expansion of macro ‘GDBUS_ARGS’ 2562 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[1].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2562:37: note: in expansion of macro ‘GDBUS_ARGS’ 2562 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ client/gatt.c:2564:12: error: initializer element is not constant 2564 | NULL, chrc_write_value) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2564:12: note: (near initialization for ‘chrc_methods[1].function’) 2564 | NULL, chrc_write_value) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusPropertyTable *’ {aka ‘const struct GDBusPropertyTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2565:33: note: in expansion of macro ‘GDBUS_ARGS’ 2565 | { GDBUS_METHOD("AcquireWrite", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[2].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2565:33: note: in expansion of macro ‘GDBUS_ARGS’ 2565 | { GDBUS_METHOD("AcquireWrite", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2565:33: note: in expansion of macro ‘GDBUS_ARGS’ 2565 | { GDBUS_METHOD("AcquireWrite", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[2].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2565:33: note: in expansion of macro ‘GDBUS_ARGS’ 2565 | { GDBUS_METHOD("AcquireWrite", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ client/gatt.c:2566:12: error: initializer element is not constant 2566 | NULL, chrc_acquire_write) }, | ^~~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2566:12: note: (near initialization for ‘chrc_methods[2].function’) 2566 | NULL, chrc_acquire_write) }, | ^~~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusPropertyTable *’ {aka ‘const struct GDBusPropertyTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2567:34: note: in expansion of macro ‘GDBUS_ARGS’ 2567 | { GDBUS_METHOD("AcquireNotify", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[3].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2567:34: note: in expansion of macro ‘GDBUS_ARGS’ 2567 | { GDBUS_METHOD("AcquireNotify", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2567:34: note: in expansion of macro ‘GDBUS_ARGS’ 2567 | { GDBUS_METHOD("AcquireNotify", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[3].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2567:34: note: in expansion of macro ‘GDBUS_ARGS’ 2567 | { GDBUS_METHOD("AcquireNotify", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ client/gatt.c:2568:12: error: initializer element is not constant 2568 | NULL, chrc_acquire_notify) }, | ^~~~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2568:12: note: (near initialization for ‘chrc_methods[3].function’) 2568 | NULL, chrc_acquire_notify) }, | ^~~~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2569:50: error: initializer element is not constant 2569 | { GDBUS_ASYNC_METHOD("StartNotify", NULL, NULL, chrc_start_notify) }, | ^~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2569:50: note: (near initialization for ‘chrc_methods[4].function’) 2569 | { GDBUS_ASYNC_METHOD("StartNotify", NULL, NULL, chrc_start_notify) }, | ^~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2570:43: error: initializer element is not constant 2570 | { GDBUS_METHOD("StopNotify", NULL, NULL, chrc_stop_notify) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2570:43: note: (near initialization for ‘chrc_methods[5].function’) 2570 | { GDBUS_METHOD("StopNotify", NULL, NULL, chrc_stop_notify) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2571:40: error: initializer element is not constant 2571 | { GDBUS_METHOD("Confirm", NULL, NULL, chrc_confirm) }, | ^~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2571:40: note: (near initialization for ‘chrc_methods[6].function’) 2571 | { GDBUS_METHOD("Confirm", NULL, NULL, chrc_confirm) }, | ^~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2575:13: error: invalid storage class for function ‘chrc_set_value’ 2575 | static void chrc_set_value(const char *input, void *user_data) | ^~~~~~~~~~~~~~ client/gatt.c:2591:17: error: invalid storage class for function ‘attr_authorization_flag_exists’ 2591 | static gboolean attr_authorization_flag_exists(char **flags) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:2649:21: error: invalid storage class for function ‘chrc_find’ 2649 | static struct chrc *chrc_find(const char *pattern) | ^~~~~~~~~ client/gatt.c:2692:21: error: invalid storage class for function ‘desc_read_value’ 2692 | static DBusMessage *desc_read_value(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~ client/gatt.c:2718:21: error: invalid storage class for function ‘desc_write_value’ 2718 | static DBusMessage *desc_write_value(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~ In file included from client/gatt.c:33: ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2761:36: note: in expansion of macro ‘GDBUS_ARGS’ 2761 | { GDBUS_ASYNC_METHOD("ReadValue", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[0].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2761:36: note: in expansion of macro ‘GDBUS_ARGS’ 2761 | { GDBUS_ASYNC_METHOD("ReadValue", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusMethodTable *’ {aka ‘const struct GDBusMethodTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2762:6: note: in expansion of macro ‘GDBUS_ARGS’ 2762 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[0].out_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2762:6: note: in expansion of macro ‘GDBUS_ARGS’ 2762 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2762:6: note: in expansion of macro ‘GDBUS_ARGS’ 2762 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[0].out_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2762:6: note: in expansion of macro ‘GDBUS_ARGS’ 2762 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ client/gatt.c:2763:6: error: initializer element is not constant 2763 | desc_read_value) }, | ^~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2763:6: note: (near initialization for ‘desc_methods[0].function’) 2763 | desc_read_value) }, | ^~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusMethodTable *’ {aka ‘const struct GDBusMethodTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2764:37: note: in expansion of macro ‘GDBUS_ARGS’ 2764 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[1].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2764:37: note: in expansion of macro ‘GDBUS_ARGS’ 2764 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2764:37: note: in expansion of macro ‘GDBUS_ARGS’ 2764 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[1].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2764:37: note: in expansion of macro ‘GDBUS_ARGS’ 2764 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ client/gatt.c:2766:12: error: initializer element is not constant 2766 | NULL, desc_write_value) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2766:12: note: (near initialization for ‘desc_methods[1].function’) 2766 | NULL, desc_write_value) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2770:17: error: invalid storage class for function ‘desc_get_handle’ 2770 | static gboolean desc_get_handle(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~ client/gatt.c:2780:13: error: invalid storage class for function ‘desc_set_handle’ 2780 | static void desc_set_handle(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~ client/gatt.c:2799:17: error: invalid storage class for function ‘desc_get_uuid’ 2799 | static gboolean desc_get_uuid(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~ client/gatt.c:2809:17: error: invalid storage class for function ‘desc_get_chrc’ 2809 | static gboolean desc_get_chrc(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~ client/gatt.c:2820:17: error: invalid storage class for function ‘desc_get_value’ 2820 | static gboolean desc_get_value(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~ client/gatt.c:2838:17: error: invalid storage class for function ‘desc_get_flags’ 2838 | static gboolean desc_get_flags(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~ client/gatt.c:2857:19: error: initializer element is not constant 2857 | { "Handle", "q", desc_get_handle, desc_set_handle, NULL }, | ^~~~~~~~~~~~~~~ client/gatt.c:2857:19: note: (near initialization for ‘desc_properties[0].get’) client/gatt.c:2857:36: error: initializer element is not constant 2857 | { "Handle", "q", desc_get_handle, desc_set_handle, NULL }, | ^~~~~~~~~~~~~~~ client/gatt.c:2857:36: note: (near initialization for ‘desc_properties[0].set’) client/gatt.c:2858:17: error: initializer element is not constant 2858 | { "UUID", "s", desc_get_uuid, NULL, NULL }, | ^~~~~~~~~~~~~ client/gatt.c:2858:17: note: (near initialization for ‘desc_properties[1].get’) client/gatt.c:2859:27: error: initializer element is not constant 2859 | { "Characteristic", "o", desc_get_chrc, NULL, NULL }, | ^~~~~~~~~~~~~ client/gatt.c:2859:27: note: (near initialization for ‘desc_properties[2].get’) client/gatt.c:2860:19: error: initializer element is not constant 2860 | { "Value", "ay", desc_get_value, NULL, NULL }, | ^~~~~~~~~~~~~~ client/gatt.c:2860:19: note: (near initialization for ‘desc_properties[3].get’) client/gatt.c:2861:19: error: initializer element is not constant 2861 | { "Flags", "as", desc_get_flags, NULL, NULL }, | ^~~~~~~~~~~~~~ client/gatt.c:2861:19: note: (near initialization for ‘desc_properties[4].get’) client/gatt.c:2865:13: error: invalid storage class for function ‘desc_set_value’ 2865 | static void desc_set_value(const char *input, void *user_data) | ^~~~~~~~~~~~~~ client/gatt.c:2931:21: error: invalid storage class for function ‘desc_find’ 2931 | static struct desc *desc_find(const char *pattern) | ^~~~~~~~~ client/gatt.c:2979:20: error: invalid storage class for function ‘select_service’ 2979 | static GDBusProxy *select_service(GDBusProxy *proxy) | ^~~~~~~~~~~~~~ client/gatt.c:2994:13: error: invalid storage class for function ‘proxy_property_changed’ 2994 | static void proxy_property_changed(GDBusProxy *proxy, const char *name, | ^~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:3020:13: error: invalid storage class for function ‘clone_chrc’ 3020 | static void clone_chrc(struct GDBusProxy *proxy) | ^~~~~~~~~~ client/gatt.c:3073:13: error: invalid storage class for function ‘clone_chrcs’ 3073 | static void clone_chrcs(struct GDBusProxy *proxy) | ^~~~~~~~~~~ client/gatt.c:3086:13: error: invalid storage class for function ‘clone_service’ 3086 | static void clone_service(struct GDBusProxy *proxy) | ^~~~~~~~~~~~~ client/gatt.c:3131:13: error: invalid storage class for function ‘clone_device’ 3131 | static void clone_device(struct GDBusProxy *proxy) | ^~~~~~~~~~~~ client/gatt.c:3144:13: error: invalid storage class for function ‘service_clone’ 3144 | static void service_clone(const char *input, void *user_data) | ^~~~~~~~~~~~~ client/gatt.c:3160:13: error: invalid storage class for function ‘device_clone’ 3160 | static void device_clone(const char *input, void *user_data) | ^~~~~~~~~~~~ client/gatt.c:3174:20: error: invalid storage class for function ‘proxy_get_name’ 3174 | static const char *proxy_get_name(struct GDBusProxy *proxy) | ^~~~~~~~~~~~~~ client/gatt.c:3190:20: error: invalid storage class for function ‘proxy_get_alias’ 3190 | static const char *proxy_get_alias(struct GDBusProxy *proxy) | ^~~~~~~~~~~~~~~ client/gatt.c:3232:1: error: expected declaration or statement at end of input 3232 | } | ^ At top level: client/gatt.c:3203:6: error: ‘gatt_clone_attribute’ defined but not used [-Werror=unused-function] 3203 | void gatt_clone_attribute(GDBusProxy *proxy, int argc, char *argv[]) | ^~~~~~~~~~~~~~~~~~~~ client/gatt.c:2961:6: error: ‘gatt_unregister_desc’ defined but not used [-Werror=unused-function] 2961 | void gatt_unregister_desc(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~ client/gatt.c:2881:6: error: ‘gatt_register_desc’ defined but not used [-Werror=unused-function] 2881 | void gatt_register_desc(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:2674:6: error: ‘gatt_unregister_chrc’ defined but not used [-Werror=unused-function] 2674 | void gatt_unregister_chrc(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~ client/gatt.c:2603:6: error: ‘gatt_register_chrc’ defined but not used [-Werror=unused-function] 2603 | void gatt_register_chrc(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:1638:6: error: ‘gatt_unregister_include’ defined but not used [-Werror=unused-function] 1638 | void gatt_unregister_include(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1608:6: error: ‘gatt_register_include’ defined but not used [-Werror=unused-function] 1608 | void gatt_register_include(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1573:6: error: ‘gatt_unregister_service’ defined but not used [-Werror=unused-function] 1573 | void gatt_unregister_service(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors make[1]: *** [Makefile:7300: client/gatt.o] Error 1 make: *** [Makefile:4324: all] Error 2 ############################## Test: Make Check - FAIL Desc: Run 'make check' Output: client/gatt.c: In function ‘gatt_register_service’: client/gatt.c:1554:24: error: invalid storage class for function ‘service_find’ 1554 | static struct service *service_find(const char *pattern) | ^~~~~~~~~~~~ client/gatt.c:1554:1: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement] 1554 | static struct service *service_find(const char *pattern) | ^~~~~~ client/gatt.c:1594:14: error: invalid storage class for function ‘inc_find’ 1594 | static char *inc_find(struct service *serv, char *path) | ^~~~~~~~ client/gatt.c:1666:17: error: invalid storage class for function ‘chrc_get_handle’ 1666 | static gboolean chrc_get_handle(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~ client/gatt.c:1676:13: error: invalid storage class for function ‘chrc_set_handle’ 1676 | static void chrc_set_handle(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~ client/gatt.c:1695:17: error: invalid storage class for function ‘chrc_get_uuid’ 1695 | static gboolean chrc_get_uuid(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~ client/gatt.c:1705:17: error: invalid storage class for function ‘chrc_get_service’ 1705 | static gboolean chrc_get_service(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~ client/gatt.c:1716:17: error: invalid storage class for function ‘chrc_get_value’ 1716 | static gboolean chrc_get_value(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~ client/gatt.c:1732:17: error: invalid storage class for function ‘chrc_get_notifying’ 1732 | static gboolean chrc_get_notifying(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:1745:17: error: invalid storage class for function ‘chrc_get_flags’ 1745 | static gboolean chrc_get_flags(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~ client/gatt.c:1763:17: error: invalid storage class for function ‘chrc_get_write_acquired’ 1763 | static gboolean chrc_get_write_acquired(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1776:17: error: invalid storage class for function ‘chrc_write_acquired_exists’ 1776 | static gboolean chrc_write_acquired_exists(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1793:17: error: invalid storage class for function ‘chrc_get_notify_acquired’ 1793 | static gboolean chrc_get_notify_acquired(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1806:17: error: invalid storage class for function ‘chrc_notify_acquired_exists’ 1806 | static gboolean chrc_notify_acquired_exists(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1824:19: error: initializer element is not constant 1824 | { "Handle", "q", chrc_get_handle, chrc_set_handle, NULL }, | ^~~~~~~~~~~~~~~ client/gatt.c:1824:19: note: (near initialization for ‘chrc_properties[0].get’) client/gatt.c:1824:36: error: initializer element is not constant 1824 | { "Handle", "q", chrc_get_handle, chrc_set_handle, NULL }, | ^~~~~~~~~~~~~~~ client/gatt.c:1824:36: note: (near initialization for ‘chrc_properties[0].set’) client/gatt.c:1825:17: error: initializer element is not constant 1825 | { "UUID", "s", chrc_get_uuid, NULL, NULL }, | ^~~~~~~~~~~~~ client/gatt.c:1825:17: note: (near initialization for ‘chrc_properties[1].get’) client/gatt.c:1826:20: error: initializer element is not constant 1826 | { "Service", "o", chrc_get_service, NULL, NULL }, | ^~~~~~~~~~~~~~~~ client/gatt.c:1826:20: note: (near initialization for ‘chrc_properties[2].get’) client/gatt.c:1827:19: error: initializer element is not constant 1827 | { "Value", "ay", chrc_get_value, NULL, NULL }, | ^~~~~~~~~~~~~~ client/gatt.c:1827:19: note: (near initialization for ‘chrc_properties[3].get’) client/gatt.c:1828:22: error: initializer element is not constant 1828 | { "Notifying", "b", chrc_get_notifying, NULL, NULL }, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:1828:22: note: (near initialization for ‘chrc_properties[4].get’) client/gatt.c:1829:19: error: initializer element is not constant 1829 | { "Flags", "as", chrc_get_flags, NULL, NULL }, | ^~~~~~~~~~~~~~ client/gatt.c:1829:19: note: (near initialization for ‘chrc_properties[5].get’) client/gatt.c:1830:26: error: initializer element is not constant 1830 | { "WriteAcquired", "b", chrc_get_write_acquired, NULL, | ^~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1830:26: note: (near initialization for ‘chrc_properties[6].get’) client/gatt.c:1831:6: error: initializer element is not constant 1831 | chrc_write_acquired_exists }, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1831:6: note: (near initialization for ‘chrc_properties[6].exists’) client/gatt.c:1832:27: error: initializer element is not constant 1832 | { "NotifyAcquired", "b", chrc_get_notify_acquired, NULL, | ^~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1832:27: note: (near initialization for ‘chrc_properties[7].get’) client/gatt.c:1833:6: error: initializer element is not constant 1833 | chrc_notify_acquired_exists }, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1833:6: note: (near initialization for ‘chrc_properties[7].exists’) client/gatt.c:1837:20: error: invalid storage class for function ‘path_to_address’ 1837 | static const char *path_to_address(const char *path) | ^~~~~~~~~~~~~~~ client/gatt.c:1851:12: error: invalid storage class for function ‘parse_options’ 1851 | static int parse_options(DBusMessageIter *iter, uint16_t *offset, uint16_t *mtu, | ^~~~~~~~~~~~~ client/gatt.c:1911:21: error: invalid storage class for function ‘read_value’ 1911 | static DBusMessage *read_value(DBusMessage *msg, uint8_t *value, | ^~~~~~~~~~ client/gatt.c:1934:13: error: invalid storage class for function ‘authorize_read_response’ 1934 | static void authorize_read_response(const char *input, void *user_data) | ^~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1967:13: error: invalid storage class for function ‘is_device_trusted’ 1967 | static bool is_device_trusted(const char *path) | ^~~~~~~~~~~~~~~~~ client/gatt.c:1986:13: error: invalid storage class for function ‘proxy_read_reply’ 1986 | static void proxy_read_reply(DBusMessage *message, void *user_data) | ^~~~~~~~~~~~~~~~ client/gatt.c:2033:13: error: invalid storage class for function ‘proxy_read_setup’ 2033 | static void proxy_read_setup(DBusMessageIter *iter, void *user_data) | ^~~~~~~~~~~~~~~~ client/gatt.c:2051:21: error: invalid storage class for function ‘proxy_read_value’ 2051 | static DBusMessage *proxy_read_value(struct GDBusProxy *proxy, DBusMessage *msg, | ^~~~~~~~~~~~~~~~ client/gatt.c:2070:21: error: invalid storage class for function ‘chrc_read_value’ 2070 | static DBusMessage *chrc_read_value(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~ client/gatt.c:2121:12: error: invalid storage class for function ‘parse_value_arg’ 2121 | static int parse_value_arg(DBusMessageIter *iter, uint8_t **value, int *len) | ^~~~~~~~~~~~~~~ client/gatt.c:2134:12: error: invalid storage class for function ‘write_value’ 2134 | static int write_value(size_t *dst_len, uint8_t **dst_value, uint8_t *src_val, | ^~~~~~~~~~~ client/gatt.c:2150:13: error: invalid storage class for function ‘authorize_write_response’ 2150 | static void authorize_write_response(const char *input, void *user_data) | ^~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:2221:13: error: invalid storage class for function ‘proxy_write_reply’ 2221 | static void proxy_write_reply(DBusMessage *message, void *user_data) | ^~~~~~~~~~~~~~~~~ client/gatt.c:2240:21: error: invalid storage class for function ‘proxy_write_value’ 2240 | static DBusMessage *proxy_write_value(struct GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~ client/gatt.c:2264:21: error: invalid storage class for function ‘chrc_write_value’ 2264 | static DBusMessage *chrc_write_value(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~ client/gatt.c:2340:21: error: invalid storage class for function ‘create_sock’ 2340 | static DBusMessage *create_sock(struct chrc *chrc, DBusMessage *msg) | ^~~~~~~~~~~ client/gatt.c:2379:21: error: invalid storage class for function ‘chrc_acquire_write’ 2379 | static DBusMessage *chrc_acquire_write(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:2411:21: error: invalid storage class for function ‘chrc_acquire_notify’ 2411 | static DBusMessage *chrc_acquire_notify(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~~~~ client/gatt.c:2449:13: error: invalid storage class for function ‘proxy_notify_reply’ 2449 | static void proxy_notify_reply(DBusMessage *message, void *user_data) | ^~~~~~~~~~~~~~~~~~ client/gatt.c:2483:21: error: invalid storage class for function ‘proxy_notify’ 2483 | static DBusMessage *proxy_notify(struct chrc *chrc, DBusMessage *msg, | ^~~~~~~~~~~~ client/gatt.c:2507:21: error: invalid storage class for function ‘chrc_start_notify’ 2507 | static DBusMessage *chrc_start_notify(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~~ client/gatt.c:2527:21: error: invalid storage class for function ‘chrc_stop_notify’ 2527 | static DBusMessage *chrc_stop_notify(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~ client/gatt.c:2547:21: error: invalid storage class for function ‘chrc_confirm’ 2547 | static DBusMessage *chrc_confirm(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~ In file included from client/gatt.c:33: ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2559:36: note: in expansion of macro ‘GDBUS_ARGS’ 2559 | { GDBUS_ASYNC_METHOD("ReadValue", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[0].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2559:36: note: in expansion of macro ‘GDBUS_ARGS’ 2559 | { GDBUS_ASYNC_METHOD("ReadValue", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusPropertyTable *’ {aka ‘const struct GDBusPropertyTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2560:6: note: in expansion of macro ‘GDBUS_ARGS’ 2560 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[0].out_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2560:6: note: in expansion of macro ‘GDBUS_ARGS’ 2560 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2560:6: note: in expansion of macro ‘GDBUS_ARGS’ 2560 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[0].out_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2560:6: note: in expansion of macro ‘GDBUS_ARGS’ 2560 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ client/gatt.c:2561:6: error: initializer element is not constant 2561 | chrc_read_value) }, | ^~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2561:6: note: (near initialization for ‘chrc_methods[0].function’) 2561 | chrc_read_value) }, | ^~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusPropertyTable *’ {aka ‘const struct GDBusPropertyTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2562:37: note: in expansion of macro ‘GDBUS_ARGS’ 2562 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[1].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2562:37: note: in expansion of macro ‘GDBUS_ARGS’ 2562 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2562:37: note: in expansion of macro ‘GDBUS_ARGS’ 2562 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[1].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2562:37: note: in expansion of macro ‘GDBUS_ARGS’ 2562 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ client/gatt.c:2564:12: error: initializer element is not constant 2564 | NULL, chrc_write_value) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2564:12: note: (near initialization for ‘chrc_methods[1].function’) 2564 | NULL, chrc_write_value) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusPropertyTable *’ {aka ‘const struct GDBusPropertyTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2565:33: note: in expansion of macro ‘GDBUS_ARGS’ 2565 | { GDBUS_METHOD("AcquireWrite", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[2].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2565:33: note: in expansion of macro ‘GDBUS_ARGS’ 2565 | { GDBUS_METHOD("AcquireWrite", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2565:33: note: in expansion of macro ‘GDBUS_ARGS’ 2565 | { GDBUS_METHOD("AcquireWrite", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[2].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2565:33: note: in expansion of macro ‘GDBUS_ARGS’ 2565 | { GDBUS_METHOD("AcquireWrite", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ client/gatt.c:2566:12: error: initializer element is not constant 2566 | NULL, chrc_acquire_write) }, | ^~~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2566:12: note: (near initialization for ‘chrc_methods[2].function’) 2566 | NULL, chrc_acquire_write) }, | ^~~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusPropertyTable *’ {aka ‘const struct GDBusPropertyTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2567:34: note: in expansion of macro ‘GDBUS_ARGS’ 2567 | { GDBUS_METHOD("AcquireNotify", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[3].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2567:34: note: in expansion of macro ‘GDBUS_ARGS’ 2567 | { GDBUS_METHOD("AcquireNotify", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2567:34: note: in expansion of macro ‘GDBUS_ARGS’ 2567 | { GDBUS_METHOD("AcquireNotify", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[3].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2567:34: note: in expansion of macro ‘GDBUS_ARGS’ 2567 | { GDBUS_METHOD("AcquireNotify", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ client/gatt.c:2568:12: error: initializer element is not constant 2568 | NULL, chrc_acquire_notify) }, | ^~~~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2568:12: note: (near initialization for ‘chrc_methods[3].function’) 2568 | NULL, chrc_acquire_notify) }, | ^~~~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2569:50: error: initializer element is not constant 2569 | { GDBUS_ASYNC_METHOD("StartNotify", NULL, NULL, chrc_start_notify) }, | ^~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2569:50: note: (near initialization for ‘chrc_methods[4].function’) 2569 | { GDBUS_ASYNC_METHOD("StartNotify", NULL, NULL, chrc_start_notify) }, | ^~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2570:43: error: initializer element is not constant 2570 | { GDBUS_METHOD("StopNotify", NULL, NULL, chrc_stop_notify) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2570:43: note: (near initialization for ‘chrc_methods[5].function’) 2570 | { GDBUS_METHOD("StopNotify", NULL, NULL, chrc_stop_notify) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2571:40: error: initializer element is not constant 2571 | { GDBUS_METHOD("Confirm", NULL, NULL, chrc_confirm) }, | ^~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2571:40: note: (near initialization for ‘chrc_methods[6].function’) 2571 | { GDBUS_METHOD("Confirm", NULL, NULL, chrc_confirm) }, | ^~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2575:13: error: invalid storage class for function ‘chrc_set_value’ 2575 | static void chrc_set_value(const char *input, void *user_data) | ^~~~~~~~~~~~~~ client/gatt.c:2591:17: error: invalid storage class for function ‘attr_authorization_flag_exists’ 2591 | static gboolean attr_authorization_flag_exists(char **flags) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:2649:21: error: invalid storage class for function ‘chrc_find’ 2649 | static struct chrc *chrc_find(const char *pattern) | ^~~~~~~~~ client/gatt.c:2692:21: error: invalid storage class for function ‘desc_read_value’ 2692 | static DBusMessage *desc_read_value(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~ client/gatt.c:2718:21: error: invalid storage class for function ‘desc_write_value’ 2718 | static DBusMessage *desc_write_value(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~ In file included from client/gatt.c:33: ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2761:36: note: in expansion of macro ‘GDBUS_ARGS’ 2761 | { GDBUS_ASYNC_METHOD("ReadValue", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[0].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2761:36: note: in expansion of macro ‘GDBUS_ARGS’ 2761 | { GDBUS_ASYNC_METHOD("ReadValue", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusMethodTable *’ {aka ‘const struct GDBusMethodTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2762:6: note: in expansion of macro ‘GDBUS_ARGS’ 2762 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[0].out_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2762:6: note: in expansion of macro ‘GDBUS_ARGS’ 2762 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2762:6: note: in expansion of macro ‘GDBUS_ARGS’ 2762 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[0].out_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2762:6: note: in expansion of macro ‘GDBUS_ARGS’ 2762 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ client/gatt.c:2763:6: error: initializer element is not constant 2763 | desc_read_value) }, | ^~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2763:6: note: (near initialization for ‘desc_methods[0].function’) 2763 | desc_read_value) }, | ^~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusMethodTable *’ {aka ‘const struct GDBusMethodTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2764:37: note: in expansion of macro ‘GDBUS_ARGS’ 2764 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[1].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2764:37: note: in expansion of macro ‘GDBUS_ARGS’ 2764 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2764:37: note: in expansion of macro ‘GDBUS_ARGS’ 2764 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[1].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2764:37: note: in expansion of macro ‘GDBUS_ARGS’ 2764 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ client/gatt.c:2766:12: error: initializer element is not constant 2766 | NULL, desc_write_value) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2766:12: note: (near initialization for ‘desc_methods[1].function’) 2766 | NULL, desc_write_value) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2770:17: error: invalid storage class for function ‘desc_get_handle’ 2770 | static gboolean desc_get_handle(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~ client/gatt.c:2780:13: error: invalid storage class for function ‘desc_set_handle’ 2780 | static void desc_set_handle(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~ client/gatt.c:2799:17: error: invalid storage class for function ‘desc_get_uuid’ 2799 | static gboolean desc_get_uuid(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~ client/gatt.c:2809:17: error: invalid storage class for function ‘desc_get_chrc’ 2809 | static gboolean desc_get_chrc(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~ client/gatt.c:2820:17: error: invalid storage class for function ‘desc_get_value’ 2820 | static gboolean desc_get_value(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~ client/gatt.c:2838:17: error: invalid storage class for function ‘desc_get_flags’ 2838 | static gboolean desc_get_flags(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~ client/gatt.c:2857:19: error: initializer element is not constant 2857 | { "Handle", "q", desc_get_handle, desc_set_handle, NULL }, | ^~~~~~~~~~~~~~~ client/gatt.c:2857:19: note: (near initialization for ‘desc_properties[0].get’) client/gatt.c:2857:36: error: initializer element is not constant 2857 | { "Handle", "q", desc_get_handle, desc_set_handle, NULL }, | ^~~~~~~~~~~~~~~ client/gatt.c:2857:36: note: (near initialization for ‘desc_properties[0].set’) client/gatt.c:2858:17: error: initializer element is not constant 2858 | { "UUID", "s", desc_get_uuid, NULL, NULL }, | ^~~~~~~~~~~~~ client/gatt.c:2858:17: note: (near initialization for ‘desc_properties[1].get’) client/gatt.c:2859:27: error: initializer element is not constant 2859 | { "Characteristic", "o", desc_get_chrc, NULL, NULL }, | ^~~~~~~~~~~~~ client/gatt.c:2859:27: note: (near initialization for ‘desc_properties[2].get’) client/gatt.c:2860:19: error: initializer element is not constant 2860 | { "Value", "ay", desc_get_value, NULL, NULL }, | ^~~~~~~~~~~~~~ client/gatt.c:2860:19: note: (near initialization for ‘desc_properties[3].get’) client/gatt.c:2861:19: error: initializer element is not constant 2861 | { "Flags", "as", desc_get_flags, NULL, NULL }, | ^~~~~~~~~~~~~~ client/gatt.c:2861:19: note: (near initialization for ‘desc_properties[4].get’) client/gatt.c:2865:13: error: invalid storage class for function ‘desc_set_value’ 2865 | static void desc_set_value(const char *input, void *user_data) | ^~~~~~~~~~~~~~ client/gatt.c:2931:21: error: invalid storage class for function ‘desc_find’ 2931 | static struct desc *desc_find(const char *pattern) | ^~~~~~~~~ client/gatt.c:2979:20: error: invalid storage class for function ‘select_service’ 2979 | static GDBusProxy *select_service(GDBusProxy *proxy) | ^~~~~~~~~~~~~~ client/gatt.c:2994:13: error: invalid storage class for function ‘proxy_property_changed’ 2994 | static void proxy_property_changed(GDBusProxy *proxy, const char *name, | ^~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:3020:13: error: invalid storage class for function ‘clone_chrc’ 3020 | static void clone_chrc(struct GDBusProxy *proxy) | ^~~~~~~~~~ client/gatt.c:3073:13: error: invalid storage class for function ‘clone_chrcs’ 3073 | static void clone_chrcs(struct GDBusProxy *proxy) | ^~~~~~~~~~~ client/gatt.c:3086:13: error: invalid storage class for function ‘clone_service’ 3086 | static void clone_service(struct GDBusProxy *proxy) | ^~~~~~~~~~~~~ client/gatt.c:3131:13: error: invalid storage class for function ‘clone_device’ 3131 | static void clone_device(struct GDBusProxy *proxy) | ^~~~~~~~~~~~ client/gatt.c:3144:13: error: invalid storage class for function ‘service_clone’ 3144 | static void service_clone(const char *input, void *user_data) | ^~~~~~~~~~~~~ client/gatt.c:3160:13: error: invalid storage class for function ‘device_clone’ 3160 | static void device_clone(const char *input, void *user_data) | ^~~~~~~~~~~~ client/gatt.c:3174:20: error: invalid storage class for function ‘proxy_get_name’ 3174 | static const char *proxy_get_name(struct GDBusProxy *proxy) | ^~~~~~~~~~~~~~ client/gatt.c:3190:20: error: invalid storage class for function ‘proxy_get_alias’ 3190 | static const char *proxy_get_alias(struct GDBusProxy *proxy) | ^~~~~~~~~~~~~~~ client/gatt.c:3232:1: error: expected declaration or statement at end of input 3232 | } | ^ At top level: client/gatt.c:3203:6: error: ‘gatt_clone_attribute’ defined but not used [-Werror=unused-function] 3203 | void gatt_clone_attribute(GDBusProxy *proxy, int argc, char *argv[]) | ^~~~~~~~~~~~~~~~~~~~ client/gatt.c:2961:6: error: ‘gatt_unregister_desc’ defined but not used [-Werror=unused-function] 2961 | void gatt_unregister_desc(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~ client/gatt.c:2881:6: error: ‘gatt_register_desc’ defined but not used [-Werror=unused-function] 2881 | void gatt_register_desc(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:2674:6: error: ‘gatt_unregister_chrc’ defined but not used [-Werror=unused-function] 2674 | void gatt_unregister_chrc(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~ client/gatt.c:2603:6: error: ‘gatt_register_chrc’ defined but not used [-Werror=unused-function] 2603 | void gatt_register_chrc(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:1638:6: error: ‘gatt_unregister_include’ defined but not used [-Werror=unused-function] 1638 | void gatt_unregister_include(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1608:6: error: ‘gatt_register_include’ defined but not used [-Werror=unused-function] 1608 | void gatt_register_include(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1573:6: error: ‘gatt_unregister_service’ defined but not used [-Werror=unused-function] 1573 | void gatt_unregister_service(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors make[1]: *** [Makefile:7300: client/gatt.o] Error 1 make: *** [Makefile:11320: check] Error 2 ############################## Test: Make Check w/Valgrind - FAIL Desc: Run 'make check' with Valgrind Output: client/gatt.c: In function ‘gatt_register_service’: client/gatt.c:1554:24: error: invalid storage class for function ‘service_find’ 1554 | static struct service *service_find(const char *pattern) | ^~~~~~~~~~~~ client/gatt.c:1554:1: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement] 1554 | static struct service *service_find(const char *pattern) | ^~~~~~ client/gatt.c:1594:14: error: invalid storage class for function ‘inc_find’ 1594 | static char *inc_find(struct service *serv, char *path) | ^~~~~~~~ client/gatt.c:1666:17: error: invalid storage class for function ‘chrc_get_handle’ 1666 | static gboolean chrc_get_handle(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~ client/gatt.c:1676:13: error: invalid storage class for function ‘chrc_set_handle’ 1676 | static void chrc_set_handle(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~ client/gatt.c:1695:17: error: invalid storage class for function ‘chrc_get_uuid’ 1695 | static gboolean chrc_get_uuid(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~ client/gatt.c:1705:17: error: invalid storage class for function ‘chrc_get_service’ 1705 | static gboolean chrc_get_service(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~ client/gatt.c:1716:17: error: invalid storage class for function ‘chrc_get_value’ 1716 | static gboolean chrc_get_value(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~ client/gatt.c:1732:17: error: invalid storage class for function ‘chrc_get_notifying’ 1732 | static gboolean chrc_get_notifying(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:1745:17: error: invalid storage class for function ‘chrc_get_flags’ 1745 | static gboolean chrc_get_flags(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~ client/gatt.c:1763:17: error: invalid storage class for function ‘chrc_get_write_acquired’ 1763 | static gboolean chrc_get_write_acquired(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1776:17: error: invalid storage class for function ‘chrc_write_acquired_exists’ 1776 | static gboolean chrc_write_acquired_exists(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1793:17: error: invalid storage class for function ‘chrc_get_notify_acquired’ 1793 | static gboolean chrc_get_notify_acquired(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1806:17: error: invalid storage class for function ‘chrc_notify_acquired_exists’ 1806 | static gboolean chrc_notify_acquired_exists(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1824:19: error: initializer element is not constant 1824 | { "Handle", "q", chrc_get_handle, chrc_set_handle, NULL }, | ^~~~~~~~~~~~~~~ client/gatt.c:1824:19: note: (near initialization for ‘chrc_properties[0].get’) client/gatt.c:1824:36: error: initializer element is not constant 1824 | { "Handle", "q", chrc_get_handle, chrc_set_handle, NULL }, | ^~~~~~~~~~~~~~~ client/gatt.c:1824:36: note: (near initialization for ‘chrc_properties[0].set’) client/gatt.c:1825:17: error: initializer element is not constant 1825 | { "UUID", "s", chrc_get_uuid, NULL, NULL }, | ^~~~~~~~~~~~~ client/gatt.c:1825:17: note: (near initialization for ‘chrc_properties[1].get’) client/gatt.c:1826:20: error: initializer element is not constant 1826 | { "Service", "o", chrc_get_service, NULL, NULL }, | ^~~~~~~~~~~~~~~~ client/gatt.c:1826:20: note: (near initialization for ‘chrc_properties[2].get’) client/gatt.c:1827:19: error: initializer element is not constant 1827 | { "Value", "ay", chrc_get_value, NULL, NULL }, | ^~~~~~~~~~~~~~ client/gatt.c:1827:19: note: (near initialization for ‘chrc_properties[3].get’) client/gatt.c:1828:22: error: initializer element is not constant 1828 | { "Notifying", "b", chrc_get_notifying, NULL, NULL }, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:1828:22: note: (near initialization for ‘chrc_properties[4].get’) client/gatt.c:1829:19: error: initializer element is not constant 1829 | { "Flags", "as", chrc_get_flags, NULL, NULL }, | ^~~~~~~~~~~~~~ client/gatt.c:1829:19: note: (near initialization for ‘chrc_properties[5].get’) client/gatt.c:1830:26: error: initializer element is not constant 1830 | { "WriteAcquired", "b", chrc_get_write_acquired, NULL, | ^~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1830:26: note: (near initialization for ‘chrc_properties[6].get’) client/gatt.c:1831:6: error: initializer element is not constant 1831 | chrc_write_acquired_exists }, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1831:6: note: (near initialization for ‘chrc_properties[6].exists’) client/gatt.c:1832:27: error: initializer element is not constant 1832 | { "NotifyAcquired", "b", chrc_get_notify_acquired, NULL, | ^~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1832:27: note: (near initialization for ‘chrc_properties[7].get’) client/gatt.c:1833:6: error: initializer element is not constant 1833 | chrc_notify_acquired_exists }, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1833:6: note: (near initialization for ‘chrc_properties[7].exists’) client/gatt.c:1837:20: error: invalid storage class for function ‘path_to_address’ 1837 | static const char *path_to_address(const char *path) | ^~~~~~~~~~~~~~~ client/gatt.c:1851:12: error: invalid storage class for function ‘parse_options’ 1851 | static int parse_options(DBusMessageIter *iter, uint16_t *offset, uint16_t *mtu, | ^~~~~~~~~~~~~ client/gatt.c:1911:21: error: invalid storage class for function ‘read_value’ 1911 | static DBusMessage *read_value(DBusMessage *msg, uint8_t *value, | ^~~~~~~~~~ client/gatt.c:1934:13: error: invalid storage class for function ‘authorize_read_response’ 1934 | static void authorize_read_response(const char *input, void *user_data) | ^~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1967:13: error: invalid storage class for function ‘is_device_trusted’ 1967 | static bool is_device_trusted(const char *path) | ^~~~~~~~~~~~~~~~~ client/gatt.c:1986:13: error: invalid storage class for function ‘proxy_read_reply’ 1986 | static void proxy_read_reply(DBusMessage *message, void *user_data) | ^~~~~~~~~~~~~~~~ client/gatt.c:2033:13: error: invalid storage class for function ‘proxy_read_setup’ 2033 | static void proxy_read_setup(DBusMessageIter *iter, void *user_data) | ^~~~~~~~~~~~~~~~ client/gatt.c:2051:21: error: invalid storage class for function ‘proxy_read_value’ 2051 | static DBusMessage *proxy_read_value(struct GDBusProxy *proxy, DBusMessage *msg, | ^~~~~~~~~~~~~~~~ client/gatt.c:2070:21: error: invalid storage class for function ‘chrc_read_value’ 2070 | static DBusMessage *chrc_read_value(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~ client/gatt.c:2121:12: error: invalid storage class for function ‘parse_value_arg’ 2121 | static int parse_value_arg(DBusMessageIter *iter, uint8_t **value, int *len) | ^~~~~~~~~~~~~~~ client/gatt.c:2134:12: error: invalid storage class for function ‘write_value’ 2134 | static int write_value(size_t *dst_len, uint8_t **dst_value, uint8_t *src_val, | ^~~~~~~~~~~ client/gatt.c:2150:13: error: invalid storage class for function ‘authorize_write_response’ 2150 | static void authorize_write_response(const char *input, void *user_data) | ^~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:2221:13: error: invalid storage class for function ‘proxy_write_reply’ 2221 | static void proxy_write_reply(DBusMessage *message, void *user_data) | ^~~~~~~~~~~~~~~~~ client/gatt.c:2240:21: error: invalid storage class for function ‘proxy_write_value’ 2240 | static DBusMessage *proxy_write_value(struct GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~ client/gatt.c:2264:21: error: invalid storage class for function ‘chrc_write_value’ 2264 | static DBusMessage *chrc_write_value(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~ client/gatt.c:2340:21: error: invalid storage class for function ‘create_sock’ 2340 | static DBusMessage *create_sock(struct chrc *chrc, DBusMessage *msg) | ^~~~~~~~~~~ client/gatt.c:2379:21: error: invalid storage class for function ‘chrc_acquire_write’ 2379 | static DBusMessage *chrc_acquire_write(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:2411:21: error: invalid storage class for function ‘chrc_acquire_notify’ 2411 | static DBusMessage *chrc_acquire_notify(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~~~~ client/gatt.c:2449:13: error: invalid storage class for function ‘proxy_notify_reply’ 2449 | static void proxy_notify_reply(DBusMessage *message, void *user_data) | ^~~~~~~~~~~~~~~~~~ client/gatt.c:2483:21: error: invalid storage class for function ‘proxy_notify’ 2483 | static DBusMessage *proxy_notify(struct chrc *chrc, DBusMessage *msg, | ^~~~~~~~~~~~ client/gatt.c:2507:21: error: invalid storage class for function ‘chrc_start_notify’ 2507 | static DBusMessage *chrc_start_notify(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~~ client/gatt.c:2527:21: error: invalid storage class for function ‘chrc_stop_notify’ 2527 | static DBusMessage *chrc_stop_notify(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~ client/gatt.c:2547:21: error: invalid storage class for function ‘chrc_confirm’ 2547 | static DBusMessage *chrc_confirm(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~ In file included from client/gatt.c:33: ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2559:36: note: in expansion of macro ‘GDBUS_ARGS’ 2559 | { GDBUS_ASYNC_METHOD("ReadValue", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[0].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2559:36: note: in expansion of macro ‘GDBUS_ARGS’ 2559 | { GDBUS_ASYNC_METHOD("ReadValue", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusPropertyTable *’ {aka ‘const struct GDBusPropertyTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2560:6: note: in expansion of macro ‘GDBUS_ARGS’ 2560 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[0].out_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2560:6: note: in expansion of macro ‘GDBUS_ARGS’ 2560 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2560:6: note: in expansion of macro ‘GDBUS_ARGS’ 2560 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[0].out_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2560:6: note: in expansion of macro ‘GDBUS_ARGS’ 2560 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ client/gatt.c:2561:6: error: initializer element is not constant 2561 | chrc_read_value) }, | ^~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2561:6: note: (near initialization for ‘chrc_methods[0].function’) 2561 | chrc_read_value) }, | ^~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusPropertyTable *’ {aka ‘const struct GDBusPropertyTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2562:37: note: in expansion of macro ‘GDBUS_ARGS’ 2562 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[1].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2562:37: note: in expansion of macro ‘GDBUS_ARGS’ 2562 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2562:37: note: in expansion of macro ‘GDBUS_ARGS’ 2562 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[1].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2562:37: note: in expansion of macro ‘GDBUS_ARGS’ 2562 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ client/gatt.c:2564:12: error: initializer element is not constant 2564 | NULL, chrc_write_value) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2564:12: note: (near initialization for ‘chrc_methods[1].function’) 2564 | NULL, chrc_write_value) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusPropertyTable *’ {aka ‘const struct GDBusPropertyTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2565:33: note: in expansion of macro ‘GDBUS_ARGS’ 2565 | { GDBUS_METHOD("AcquireWrite", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[2].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2565:33: note: in expansion of macro ‘GDBUS_ARGS’ 2565 | { GDBUS_METHOD("AcquireWrite", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2565:33: note: in expansion of macro ‘GDBUS_ARGS’ 2565 | { GDBUS_METHOD("AcquireWrite", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[2].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2565:33: note: in expansion of macro ‘GDBUS_ARGS’ 2565 | { GDBUS_METHOD("AcquireWrite", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ client/gatt.c:2566:12: error: initializer element is not constant 2566 | NULL, chrc_acquire_write) }, | ^~~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2566:12: note: (near initialization for ‘chrc_methods[2].function’) 2566 | NULL, chrc_acquire_write) }, | ^~~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusPropertyTable *’ {aka ‘const struct GDBusPropertyTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2567:34: note: in expansion of macro ‘GDBUS_ARGS’ 2567 | { GDBUS_METHOD("AcquireNotify", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[3].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2567:34: note: in expansion of macro ‘GDBUS_ARGS’ 2567 | { GDBUS_METHOD("AcquireNotify", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2567:34: note: in expansion of macro ‘GDBUS_ARGS’ 2567 | { GDBUS_METHOD("AcquireNotify", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[3].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2567:34: note: in expansion of macro ‘GDBUS_ARGS’ 2567 | { GDBUS_METHOD("AcquireNotify", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ client/gatt.c:2568:12: error: initializer element is not constant 2568 | NULL, chrc_acquire_notify) }, | ^~~~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2568:12: note: (near initialization for ‘chrc_methods[3].function’) 2568 | NULL, chrc_acquire_notify) }, | ^~~~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2569:50: error: initializer element is not constant 2569 | { GDBUS_ASYNC_METHOD("StartNotify", NULL, NULL, chrc_start_notify) }, | ^~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2569:50: note: (near initialization for ‘chrc_methods[4].function’) 2569 | { GDBUS_ASYNC_METHOD("StartNotify", NULL, NULL, chrc_start_notify) }, | ^~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2570:43: error: initializer element is not constant 2570 | { GDBUS_METHOD("StopNotify", NULL, NULL, chrc_stop_notify) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2570:43: note: (near initialization for ‘chrc_methods[5].function’) 2570 | { GDBUS_METHOD("StopNotify", NULL, NULL, chrc_stop_notify) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2571:40: error: initializer element is not constant 2571 | { GDBUS_METHOD("Confirm", NULL, NULL, chrc_confirm) }, | ^~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2571:40: note: (near initialization for ‘chrc_methods[6].function’) 2571 | { GDBUS_METHOD("Confirm", NULL, NULL, chrc_confirm) }, | ^~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2575:13: error: invalid storage class for function ‘chrc_set_value’ 2575 | static void chrc_set_value(const char *input, void *user_data) | ^~~~~~~~~~~~~~ client/gatt.c:2591:17: error: invalid storage class for function ‘attr_authorization_flag_exists’ 2591 | static gboolean attr_authorization_flag_exists(char **flags) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:2649:21: error: invalid storage class for function ‘chrc_find’ 2649 | static struct chrc *chrc_find(const char *pattern) | ^~~~~~~~~ client/gatt.c:2692:21: error: invalid storage class for function ‘desc_read_value’ 2692 | static DBusMessage *desc_read_value(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~ client/gatt.c:2718:21: error: invalid storage class for function ‘desc_write_value’ 2718 | static DBusMessage *desc_write_value(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~ In file included from client/gatt.c:33: ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2761:36: note: in expansion of macro ‘GDBUS_ARGS’ 2761 | { GDBUS_ASYNC_METHOD("ReadValue", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[0].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2761:36: note: in expansion of macro ‘GDBUS_ARGS’ 2761 | { GDBUS_ASYNC_METHOD("ReadValue", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusMethodTable *’ {aka ‘const struct GDBusMethodTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2762:6: note: in expansion of macro ‘GDBUS_ARGS’ 2762 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[0].out_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2762:6: note: in expansion of macro ‘GDBUS_ARGS’ 2762 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2762:6: note: in expansion of macro ‘GDBUS_ARGS’ 2762 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[0].out_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2762:6: note: in expansion of macro ‘GDBUS_ARGS’ 2762 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ client/gatt.c:2763:6: error: initializer element is not constant 2763 | desc_read_value) }, | ^~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2763:6: note: (near initialization for ‘desc_methods[0].function’) 2763 | desc_read_value) }, | ^~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusMethodTable *’ {aka ‘const struct GDBusMethodTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2764:37: note: in expansion of macro ‘GDBUS_ARGS’ 2764 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[1].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2764:37: note: in expansion of macro ‘GDBUS_ARGS’ 2764 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2764:37: note: in expansion of macro ‘GDBUS_ARGS’ 2764 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[1].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2764:37: note: in expansion of macro ‘GDBUS_ARGS’ 2764 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ client/gatt.c:2766:12: error: initializer element is not constant 2766 | NULL, desc_write_value) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2766:12: note: (near initialization for ‘desc_methods[1].function’) 2766 | NULL, desc_write_value) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2770:17: error: invalid storage class for function ‘desc_get_handle’ 2770 | static gboolean desc_get_handle(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~ client/gatt.c:2780:13: error: invalid storage class for function ‘desc_set_handle’ 2780 | static void desc_set_handle(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~ client/gatt.c:2799:17: error: invalid storage class for function ‘desc_get_uuid’ 2799 | static gboolean desc_get_uuid(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~ client/gatt.c:2809:17: error: invalid storage class for function ‘desc_get_chrc’ 2809 | static gboolean desc_get_chrc(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~ client/gatt.c:2820:17: error: invalid storage class for function ‘desc_get_value’ 2820 | static gboolean desc_get_value(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~ client/gatt.c:2838:17: error: invalid storage class for function ‘desc_get_flags’ 2838 | static gboolean desc_get_flags(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~ client/gatt.c:2857:19: error: initializer element is not constant 2857 | { "Handle", "q", desc_get_handle, desc_set_handle, NULL }, | ^~~~~~~~~~~~~~~ client/gatt.c:2857:19: note: (near initialization for ‘desc_properties[0].get’) client/gatt.c:2857:36: error: initializer element is not constant 2857 | { "Handle", "q", desc_get_handle, desc_set_handle, NULL }, | ^~~~~~~~~~~~~~~ client/gatt.c:2857:36: note: (near initialization for ‘desc_properties[0].set’) client/gatt.c:2858:17: error: initializer element is not constant 2858 | { "UUID", "s", desc_get_uuid, NULL, NULL }, | ^~~~~~~~~~~~~ client/gatt.c:2858:17: note: (near initialization for ‘desc_properties[1].get’) client/gatt.c:2859:27: error: initializer element is not constant 2859 | { "Characteristic", "o", desc_get_chrc, NULL, NULL }, | ^~~~~~~~~~~~~ client/gatt.c:2859:27: note: (near initialization for ‘desc_properties[2].get’) client/gatt.c:2860:19: error: initializer element is not constant 2860 | { "Value", "ay", desc_get_value, NULL, NULL }, | ^~~~~~~~~~~~~~ client/gatt.c:2860:19: note: (near initialization for ‘desc_properties[3].get’) client/gatt.c:2861:19: error: initializer element is not constant 2861 | { "Flags", "as", desc_get_flags, NULL, NULL }, | ^~~~~~~~~~~~~~ client/gatt.c:2861:19: note: (near initialization for ‘desc_properties[4].get’) client/gatt.c:2865:13: error: invalid storage class for function ‘desc_set_value’ 2865 | static void desc_set_value(const char *input, void *user_data) | ^~~~~~~~~~~~~~ client/gatt.c:2931:21: error: invalid storage class for function ‘desc_find’ 2931 | static struct desc *desc_find(const char *pattern) | ^~~~~~~~~ client/gatt.c:2979:20: error: invalid storage class for function ‘select_service’ 2979 | static GDBusProxy *select_service(GDBusProxy *proxy) | ^~~~~~~~~~~~~~ client/gatt.c:2994:13: error: invalid storage class for function ‘proxy_property_changed’ 2994 | static void proxy_property_changed(GDBusProxy *proxy, const char *name, | ^~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:3020:13: error: invalid storage class for function ‘clone_chrc’ 3020 | static void clone_chrc(struct GDBusProxy *proxy) | ^~~~~~~~~~ client/gatt.c:3073:13: error: invalid storage class for function ‘clone_chrcs’ 3073 | static void clone_chrcs(struct GDBusProxy *proxy) | ^~~~~~~~~~~ client/gatt.c:3086:13: error: invalid storage class for function ‘clone_service’ 3086 | static void clone_service(struct GDBusProxy *proxy) | ^~~~~~~~~~~~~ client/gatt.c:3131:13: error: invalid storage class for function ‘clone_device’ 3131 | static void clone_device(struct GDBusProxy *proxy) | ^~~~~~~~~~~~ client/gatt.c:3144:13: error: invalid storage class for function ‘service_clone’ 3144 | static void service_clone(const char *input, void *user_data) | ^~~~~~~~~~~~~ client/gatt.c:3160:13: error: invalid storage class for function ‘device_clone’ 3160 | static void device_clone(const char *input, void *user_data) | ^~~~~~~~~~~~ client/gatt.c:3174:20: error: invalid storage class for function ‘proxy_get_name’ 3174 | static const char *proxy_get_name(struct GDBusProxy *proxy) | ^~~~~~~~~~~~~~ client/gatt.c:3190:20: error: invalid storage class for function ‘proxy_get_alias’ 3190 | static const char *proxy_get_alias(struct GDBusProxy *proxy) | ^~~~~~~~~~~~~~~ client/gatt.c:3232:1: error: expected declaration or statement at end of input 3232 | } | ^ At top level: client/gatt.c:3203:6: error: ‘gatt_clone_attribute’ defined but not used [-Werror=unused-function] 3203 | void gatt_clone_attribute(GDBusProxy *proxy, int argc, char *argv[]) | ^~~~~~~~~~~~~~~~~~~~ client/gatt.c:2961:6: error: ‘gatt_unregister_desc’ defined but not used [-Werror=unused-function] 2961 | void gatt_unregister_desc(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~ client/gatt.c:2881:6: error: ‘gatt_register_desc’ defined but not used [-Werror=unused-function] 2881 | void gatt_register_desc(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:2674:6: error: ‘gatt_unregister_chrc’ defined but not used [-Werror=unused-function] 2674 | void gatt_unregister_chrc(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~ client/gatt.c:2603:6: error: ‘gatt_register_chrc’ defined but not used [-Werror=unused-function] 2603 | void gatt_register_chrc(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:1638:6: error: ‘gatt_unregister_include’ defined but not used [-Werror=unused-function] 1638 | void gatt_unregister_include(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1608:6: error: ‘gatt_register_include’ defined but not used [-Werror=unused-function] 1608 | void gatt_register_include(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1573:6: error: ‘gatt_unregister_service’ defined but not used [-Werror=unused-function] 1573 | void gatt_unregister_service(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors make[1]: *** [Makefile:7300: client/gatt.o] Error 1 make: *** [Makefile:4324: all] Error 2 ############################## Test: Make Distcheck - FAIL Desc: Run distcheck to check the distribution Output: ../../client/gatt.c: In function ‘gatt_register_service’: ../../client/gatt.c:1554:24: error: invalid storage class for function ‘service_find’ 1554 | static struct service *service_find(const char *pattern) | ^~~~~~~~~~~~ ../../client/gatt.c:1594:14: error: invalid storage class for function ‘inc_find’ 1594 | static char *inc_find(struct service *serv, char *path) | ^~~~~~~~ ../../client/gatt.c:1666:17: error: invalid storage class for function ‘chrc_get_handle’ 1666 | static gboolean chrc_get_handle(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~ ../../client/gatt.c:1676:13: error: invalid storage class for function ‘chrc_set_handle’ 1676 | static void chrc_set_handle(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~ ../../client/gatt.c:1695:17: error: invalid storage class for function ‘chrc_get_uuid’ 1695 | static gboolean chrc_get_uuid(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~ ../../client/gatt.c:1705:17: error: invalid storage class for function ‘chrc_get_service’ 1705 | static gboolean chrc_get_service(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~ ../../client/gatt.c:1716:17: error: invalid storage class for function ‘chrc_get_value’ 1716 | static gboolean chrc_get_value(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~ ../../client/gatt.c:1732:17: error: invalid storage class for function ‘chrc_get_notifying’ 1732 | static gboolean chrc_get_notifying(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~ ../../client/gatt.c:1745:17: error: invalid storage class for function ‘chrc_get_flags’ 1745 | static gboolean chrc_get_flags(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~ ../../client/gatt.c:1763:17: error: invalid storage class for function ‘chrc_get_write_acquired’ 1763 | static gboolean chrc_get_write_acquired(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~~~~~~ ../../client/gatt.c:1776:17: error: invalid storage class for function ‘chrc_write_acquired_exists’ 1776 | static gboolean chrc_write_acquired_exists(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ ../../client/gatt.c:1793:17: error: invalid storage class for function ‘chrc_get_notify_acquired’ 1793 | static gboolean chrc_get_notify_acquired(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~~~~~~~ ../../client/gatt.c:1806:17: error: invalid storage class for function ‘chrc_notify_acquired_exists’ 1806 | static gboolean chrc_notify_acquired_exists(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../client/gatt.c:1824:19: error: initializer element is not constant 1824 | { "Handle", "q", chrc_get_handle, chrc_set_handle, NULL }, | ^~~~~~~~~~~~~~~ ../../client/gatt.c:1824:19: note: (near initialization for ‘chrc_properties[0].get’) ../../client/gatt.c:1824:36: error: initializer element is not constant 1824 | { "Handle", "q", chrc_get_handle, chrc_set_handle, NULL }, | ^~~~~~~~~~~~~~~ ../../client/gatt.c:1824:36: note: (near initialization for ‘chrc_properties[0].set’) ../../client/gatt.c:1825:17: error: initializer element is not constant 1825 | { "UUID", "s", chrc_get_uuid, NULL, NULL }, | ^~~~~~~~~~~~~ ../../client/gatt.c:1825:17: note: (near initialization for ‘chrc_properties[1].get’) ../../client/gatt.c:1826:20: error: initializer element is not constant 1826 | { "Service", "o", chrc_get_service, NULL, NULL }, | ^~~~~~~~~~~~~~~~ ../../client/gatt.c:1826:20: note: (near initialization for ‘chrc_properties[2].get’) ../../client/gatt.c:1827:19: error: initializer element is not constant 1827 | { "Value", "ay", chrc_get_value, NULL, NULL }, | ^~~~~~~~~~~~~~ ../../client/gatt.c:1827:19: note: (near initialization for ‘chrc_properties[3].get’) ../../client/gatt.c:1828:22: error: initializer element is not constant 1828 | { "Notifying", "b", chrc_get_notifying, NULL, NULL }, | ^~~~~~~~~~~~~~~~~~ ../../client/gatt.c:1828:22: note: (near initialization for ‘chrc_properties[4].get’) ../../client/gatt.c:1829:19: error: initializer element is not constant 1829 | { "Flags", "as", chrc_get_flags, NULL, NULL }, | ^~~~~~~~~~~~~~ ../../client/gatt.c:1829:19: note: (near initialization for ‘chrc_properties[5].get’) ../../client/gatt.c:1830:26: error: initializer element is not constant 1830 | { "WriteAcquired", "b", chrc_get_write_acquired, NULL, | ^~~~~~~~~~~~~~~~~~~~~~~ ../../client/gatt.c:1830:26: note: (near initialization for ‘chrc_properties[6].get’) ../../client/gatt.c:1831:6: error: initializer element is not constant 1831 | chrc_write_acquired_exists }, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ ../../client/gatt.c:1831:6: note: (near initialization for ‘chrc_properties[6].exists’) ../../client/gatt.c:1832:27: error: initializer element is not constant 1832 | { "NotifyAcquired", "b", chrc_get_notify_acquired, NULL, | ^~~~~~~~~~~~~~~~~~~~~~~~ ../../client/gatt.c:1832:27: note: (near initialization for ‘chrc_properties[7].get’) ../../client/gatt.c:1833:6: error: initializer element is not constant 1833 | chrc_notify_acquired_exists }, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../client/gatt.c:1833:6: note: (near initialization for ‘chrc_properties[7].exists’) ../../client/gatt.c:1837:20: error: invalid storage class for function ‘path_to_address’ 1837 | static const char *path_to_address(const char *path) | ^~~~~~~~~~~~~~~ ../../client/gatt.c:1851:12: error: invalid storage class for function ‘parse_options’ 1851 | static int parse_options(DBusMessageIter *iter, uint16_t *offset, uint16_t *mtu, | ^~~~~~~~~~~~~ ../../client/gatt.c:1911:21: error: invalid storage class for function ‘read_value’ 1911 | static DBusMessage *read_value(DBusMessage *msg, uint8_t *value, | ^~~~~~~~~~ ../../client/gatt.c:1934:13: error: invalid storage class for function ‘authorize_read_response’ 1934 | static void authorize_read_response(const char *input, void *user_data) | ^~~~~~~~~~~~~~~~~~~~~~~ ../../client/gatt.c:1967:13: error: invalid storage class for function ‘is_device_trusted’ 1967 | static bool is_device_trusted(const char *path) | ^~~~~~~~~~~~~~~~~ ../../client/gatt.c:1986:13: error: invalid storage class for function ‘proxy_read_reply’ 1986 | static void proxy_read_reply(DBusMessage *message, void *user_data) | ^~~~~~~~~~~~~~~~ ../../client/gatt.c:2033:13: error: invalid storage class for function ‘proxy_read_setup’ 2033 | static void proxy_read_setup(DBusMessageIter *iter, void *user_data) | ^~~~~~~~~~~~~~~~ ../../client/gatt.c:2051:21: error: invalid storage class for function ‘proxy_read_value’ 2051 | static DBusMessage *proxy_read_value(struct GDBusProxy *proxy, DBusMessage *msg, | ^~~~~~~~~~~~~~~~ ../../client/gatt.c:2070:21: error: invalid storage class for function ‘chrc_read_value’ 2070 | static DBusMessage *chrc_read_value(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~ ../../client/gatt.c:2121:12: error: invalid storage class for function ‘parse_value_arg’ 2121 | static int parse_value_arg(DBusMessageIter *iter, uint8_t **value, int *len) | ^~~~~~~~~~~~~~~ ../../client/gatt.c:2134:12: error: invalid storage class for function ‘write_value’ 2134 | static int write_value(size_t *dst_len, uint8_t **dst_value, uint8_t *src_val, | ^~~~~~~~~~~ ../../client/gatt.c:2150:13: error: invalid storage class for function ‘authorize_write_response’ 2150 | static void authorize_write_response(const char *input, void *user_data) | ^~~~~~~~~~~~~~~~~~~~~~~~ ../../client/gatt.c:2221:13: error: invalid storage class for function ‘proxy_write_reply’ 2221 | static void proxy_write_reply(DBusMessage *message, void *user_data) | ^~~~~~~~~~~~~~~~~ ../../client/gatt.c:2240:21: error: invalid storage class for function ‘proxy_write_value’ 2240 | static DBusMessage *proxy_write_value(struct GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~ ../../client/gatt.c:2264:21: error: invalid storage class for function ‘chrc_write_value’ 2264 | static DBusMessage *chrc_write_value(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~ ../../client/gatt.c:2340:21: error: invalid storage class for function ‘create_sock’ 2340 | static DBusMessage *create_sock(struct chrc *chrc, DBusMessage *msg) | ^~~~~~~~~~~ ../../client/gatt.c:2379:21: error: invalid storage class for function ‘chrc_acquire_write’ 2379 | static DBusMessage *chrc_acquire_write(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~~~ ../../client/gatt.c:2411:21: error: invalid storage class for function ‘chrc_acquire_notify’ 2411 | static DBusMessage *chrc_acquire_notify(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~~~~ ../../client/gatt.c:2449:13: error: invalid storage class for function ‘proxy_notify_reply’ 2449 | static void proxy_notify_reply(DBusMessage *message, void *user_data) | ^~~~~~~~~~~~~~~~~~ ../../client/gatt.c:2483:21: error: invalid storage class for function ‘proxy_notify’ 2483 | static DBusMessage *proxy_notify(struct chrc *chrc, DBusMessage *msg, | ^~~~~~~~~~~~ ../../client/gatt.c:2507:21: error: invalid storage class for function ‘chrc_start_notify’ 2507 | static DBusMessage *chrc_start_notify(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~~ ../../client/gatt.c:2527:21: error: invalid storage class for function ‘chrc_stop_notify’ 2527 | static DBusMessage *chrc_stop_notify(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~ ../../client/gatt.c:2547:21: error: invalid storage class for function ‘chrc_confirm’ 2547 | static DBusMessage *chrc_confirm(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~ In file included from ../../client/gatt.c:33: ../../gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ ../../client/gatt.c:2559:36: note: in expansion of macro ‘GDBUS_ARGS’ 2559 | { GDBUS_ASYNC_METHOD("ReadValue", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ../../gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[0].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ ../../client/gatt.c:2559:36: note: in expansion of macro ‘GDBUS_ARGS’ 2559 | { GDBUS_ASYNC_METHOD("ReadValue", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ../../gdbus/gdbus.h:146:29: warning: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusPropertyTable *’ {aka ‘const struct GDBusPropertyTable *’} [-Wincompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ ../../client/gatt.c:2560:6: note: in expansion of macro ‘GDBUS_ARGS’ 2560 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ../../gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[0].out_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ ../../client/gatt.c:2560:6: note: in expansion of macro ‘GDBUS_ARGS’ 2560 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ../../gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ ../../client/gatt.c:2560:6: note: in expansion of macro ‘GDBUS_ARGS’ 2560 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ../../gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[0].out_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ ../../client/gatt.c:2560:6: note: in expansion of macro ‘GDBUS_ARGS’ 2560 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ../../client/gatt.c:2561:6: error: initializer element is not constant 2561 | chrc_read_value) }, | ^~~~~~~~~~~~~~~ ../../gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ../../client/gatt.c:2561:6: note: (near initialization for ‘chrc_methods[0].function’) 2561 | chrc_read_value) }, | ^~~~~~~~~~~~~~~ ../../gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ../../gdbus/gdbus.h:146:29: warning: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusPropertyTable *’ {aka ‘const struct GDBusPropertyTable *’} [-Wincompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ ../../client/gatt.c:2562:37: note: in expansion of macro ‘GDBUS_ARGS’ 2562 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ../../gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[1].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ ../../client/gatt.c:2562:37: note: in expansion of macro ‘GDBUS_ARGS’ 2562 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ../../gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ ../../client/gatt.c:2562:37: note: in expansion of macro ‘GDBUS_ARGS’ 2562 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ../../gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[1].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ ../../client/gatt.c:2562:37: note: in expansion of macro ‘GDBUS_ARGS’ 2562 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ../../client/gatt.c:2564:12: error: initializer element is not constant 2564 | NULL, chrc_write_value) }, | ^~~~~~~~~~~~~~~~ ../../gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ../../client/gatt.c:2564:12: note: (near initialization for ‘chrc_methods[1].function’) 2564 | NULL, chrc_write_value) }, | ^~~~~~~~~~~~~~~~ ../../gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ../../gdbus/gdbus.h:146:29: warning: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusPropertyTable *’ {aka ‘const struct GDBusPropertyTable *’} [-Wincompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ ../../client/gatt.c:2565:33: note: in expansion of macro ‘GDBUS_ARGS’ 2565 | { GDBUS_METHOD("AcquireWrite", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ../../gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[2].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ ../../client/gatt.c:2565:33: note: in expansion of macro ‘GDBUS_ARGS’ 2565 | { GDBUS_METHOD("AcquireWrite", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ../../gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ ../../client/gatt.c:2565:33: note: in expansion of macro ‘GDBUS_ARGS’ 2565 | { GDBUS_METHOD("AcquireWrite", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ../../gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[2].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ ../../client/gatt.c:2565:33: note: in expansion of macro ‘GDBUS_ARGS’ 2565 | { GDBUS_METHOD("AcquireWrite", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ../../client/gatt.c:2566:12: error: initializer element is not constant 2566 | NULL, chrc_acquire_write) }, | ^~~~~~~~~~~~~~~~~~ ../../gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ ../../client/gatt.c:2566:12: note: (near initialization for ‘chrc_methods[2].function’) 2566 | NULL, chrc_acquire_write) }, | ^~~~~~~~~~~~~~~~~~ ../../gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ ../../gdbus/gdbus.h:146:29: warning: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusPropertyTable *’ {aka ‘const struct GDBusPropertyTable *’} [-Wincompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ ../../client/gatt.c:2567:34: note: in expansion of macro ‘GDBUS_ARGS’ 2567 | { GDBUS_METHOD("AcquireNotify", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ../../gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[3].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ ../../client/gatt.c:2567:34: note: in expansion of macro ‘GDBUS_ARGS’ 2567 | { GDBUS_METHOD("AcquireNotify", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ../../gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ ../../client/gatt.c:2567:34: note: in expansion of macro ‘GDBUS_ARGS’ 2567 | { GDBUS_METHOD("AcquireNotify", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ../../gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[3].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ ../../client/gatt.c:2567:34: note: in expansion of macro ‘GDBUS_ARGS’ 2567 | { GDBUS_METHOD("AcquireNotify", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ../../client/gatt.c:2568:12: error: initializer element is not constant 2568 | NULL, chrc_acquire_notify) }, | ^~~~~~~~~~~~~~~~~~~ ../../gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ ../../client/gatt.c:2568:12: note: (near initialization for ‘chrc_methods[3].function’) 2568 | NULL, chrc_acquire_notify) }, | ^~~~~~~~~~~~~~~~~~~ ../../gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ ../../client/gatt.c:2569:50: error: initializer element is not constant 2569 | { GDBUS_ASYNC_METHOD("StartNotify", NULL, NULL, chrc_start_notify) }, | ^~~~~~~~~~~~~~~~~ ../../gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ../../client/gatt.c:2569:50: note: (near initialization for ‘chrc_methods[4].function’) 2569 | { GDBUS_ASYNC_METHOD("StartNotify", NULL, NULL, chrc_start_notify) }, | ^~~~~~~~~~~~~~~~~ ../../gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ../../client/gatt.c:2570:43: error: initializer element is not constant 2570 | { GDBUS_METHOD("StopNotify", NULL, NULL, chrc_stop_notify) }, | ^~~~~~~~~~~~~~~~ ../../gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ ../../client/gatt.c:2570:43: note: (near initialization for ‘chrc_methods[5].function’) 2570 | { GDBUS_METHOD("StopNotify", NULL, NULL, chrc_stop_notify) }, | ^~~~~~~~~~~~~~~~ ../../gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ ../../client/gatt.c:2571:40: error: initializer element is not constant 2571 | { GDBUS_METHOD("Confirm", NULL, NULL, chrc_confirm) }, | ^~~~~~~~~~~~ ../../gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ ../../client/gatt.c:2571:40: note: (near initialization for ‘chrc_methods[6].function’) 2571 | { GDBUS_METHOD("Confirm", NULL, NULL, chrc_confirm) }, | ^~~~~~~~~~~~ ../../gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ ../../client/gatt.c:2575:13: error: invalid storage class for function ‘chrc_set_value’ 2575 | static void chrc_set_value(const char *input, void *user_data) | ^~~~~~~~~~~~~~ ../../client/gatt.c:2591:17: error: invalid storage class for function ‘attr_authorization_flag_exists’ 2591 | static gboolean attr_authorization_flag_exists(char **flags) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../client/gatt.c:2649:21: error: invalid storage class for function ‘chrc_find’ 2649 | static struct chrc *chrc_find(const char *pattern) | ^~~~~~~~~ ../../client/gatt.c:2692:21: error: invalid storage class for function ‘desc_read_value’ 2692 | static DBusMessage *desc_read_value(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~ ../../client/gatt.c:2718:21: error: invalid storage class for function ‘desc_write_value’ 2718 | static DBusMessage *desc_write_value(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~ In file included from ../../client/gatt.c:33: ../../gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ ../../client/gatt.c:2761:36: note: in expansion of macro ‘GDBUS_ARGS’ 2761 | { GDBUS_ASYNC_METHOD("ReadValue", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ../../gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[0].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ ../../client/gatt.c:2761:36: note: in expansion of macro ‘GDBUS_ARGS’ 2761 | { GDBUS_ASYNC_METHOD("ReadValue", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ../../gdbus/gdbus.h:146:29: warning: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusMethodTable *’ {aka ‘const struct GDBusMethodTable *’} [-Wincompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ ../../client/gatt.c:2762:6: note: in expansion of macro ‘GDBUS_ARGS’ 2762 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ../../gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[0].out_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ ../../client/gatt.c:2762:6: note: in expansion of macro ‘GDBUS_ARGS’ 2762 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ../../gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ ../../client/gatt.c:2762:6: note: in expansion of macro ‘GDBUS_ARGS’ 2762 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ../../gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[0].out_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ ../../client/gatt.c:2762:6: note: in expansion of macro ‘GDBUS_ARGS’ 2762 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ../../client/gatt.c:2763:6: error: initializer element is not constant 2763 | desc_read_value) }, | ^~~~~~~~~~~~~~~ ../../gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ../../client/gatt.c:2763:6: note: (near initialization for ‘desc_methods[0].function’) 2763 | desc_read_value) }, | ^~~~~~~~~~~~~~~ ../../gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ../../gdbus/gdbus.h:146:29: warning: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusMethodTable *’ {aka ‘const struct GDBusMethodTable *’} [-Wincompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ ../../client/gatt.c:2764:37: note: in expansion of macro ‘GDBUS_ARGS’ 2764 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ../../gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[1].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ ../../client/gatt.c:2764:37: note: in expansion of macro ‘GDBUS_ARGS’ 2764 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ../../gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ ../../client/gatt.c:2764:37: note: in expansion of macro ‘GDBUS_ARGS’ 2764 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ../../gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[1].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ../../gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ ../../client/gatt.c:2764:37: note: in expansion of macro ‘GDBUS_ARGS’ 2764 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ../../client/gatt.c:2766:12: error: initializer element is not constant 2766 | NULL, desc_write_value) }, | ^~~~~~~~~~~~~~~~ ../../gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ../../client/gatt.c:2766:12: note: (near initialization for ‘desc_methods[1].function’) 2766 | NULL, desc_write_value) }, | ^~~~~~~~~~~~~~~~ ../../gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ../../client/gatt.c:2770:17: error: invalid storage class for function ‘desc_get_handle’ 2770 | static gboolean desc_get_handle(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~ ../../client/gatt.c:2780:13: error: invalid storage class for function ‘desc_set_handle’ 2780 | static void desc_set_handle(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~ ../../client/gatt.c:2799:17: error: invalid storage class for function ‘desc_get_uuid’ 2799 | static gboolean desc_get_uuid(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~ ../../client/gatt.c:2809:17: error: invalid storage class for function ‘desc_get_chrc’ 2809 | static gboolean desc_get_chrc(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~ ../../client/gatt.c:2820:17: error: invalid storage class for function ‘desc_get_value’ 2820 | static gboolean desc_get_value(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~ ../../client/gatt.c:2838:17: error: invalid storage class for function ‘desc_get_flags’ 2838 | static gboolean desc_get_flags(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~ ../../client/gatt.c:2857:19: error: initializer element is not constant 2857 | { "Handle", "q", desc_get_handle, desc_set_handle, NULL }, | ^~~~~~~~~~~~~~~ ../../client/gatt.c:2857:19: note: (near initialization for ‘desc_properties[0].get’) ../../client/gatt.c:2857:36: error: initializer element is not constant 2857 | { "Handle", "q", desc_get_handle, desc_set_handle, NULL }, | ^~~~~~~~~~~~~~~ ../../client/gatt.c:2857:36: note: (near initialization for ‘desc_properties[0].set’) ../../client/gatt.c:2858:17: error: initializer element is not constant 2858 | { "UUID", "s", desc_get_uuid, NULL, NULL }, | ^~~~~~~~~~~~~ ../../client/gatt.c:2858:17: note: (near initialization for ‘desc_properties[1].get’) ../../client/gatt.c:2859:27: error: initializer element is not constant 2859 | { "Characteristic", "o", desc_get_chrc, NULL, NULL }, | ^~~~~~~~~~~~~ ../../client/gatt.c:2859:27: note: (near initialization for ‘desc_properties[2].get’) ../../client/gatt.c:2860:19: error: initializer element is not constant 2860 | { "Value", "ay", desc_get_value, NULL, NULL }, | ^~~~~~~~~~~~~~ ../../client/gatt.c:2860:19: note: (near initialization for ‘desc_properties[3].get’) ../../client/gatt.c:2861:19: error: initializer element is not constant 2861 | { "Flags", "as", desc_get_flags, NULL, NULL }, | ^~~~~~~~~~~~~~ ../../client/gatt.c:2861:19: note: (near initialization for ‘desc_properties[4].get’) ../../client/gatt.c:2865:13: error: invalid storage class for function ‘desc_set_value’ 2865 | static void desc_set_value(const char *input, void *user_data) | ^~~~~~~~~~~~~~ ../../client/gatt.c:2931:21: error: invalid storage class for function ‘desc_find’ 2931 | static struct desc *desc_find(const char *pattern) | ^~~~~~~~~ ../../client/gatt.c:2979:20: error: invalid storage class for function ‘select_service’ 2979 | static GDBusProxy *select_service(GDBusProxy *proxy) | ^~~~~~~~~~~~~~ ../../client/gatt.c:2994:13: error: invalid storage class for function ‘proxy_property_changed’ 2994 | static void proxy_property_changed(GDBusProxy *proxy, const char *name, | ^~~~~~~~~~~~~~~~~~~~~~ ../../client/gatt.c:3020:13: error: invalid storage class for function ‘clone_chrc’ 3020 | static void clone_chrc(struct GDBusProxy *proxy) | ^~~~~~~~~~ ../../client/gatt.c:3073:13: error: invalid storage class for function ‘clone_chrcs’ 3073 | static void clone_chrcs(struct GDBusProxy *proxy) | ^~~~~~~~~~~ ../../client/gatt.c:3086:13: error: invalid storage class for function ‘clone_service’ 3086 | static void clone_service(struct GDBusProxy *proxy) | ^~~~~~~~~~~~~ ../../client/gatt.c:3131:13: error: invalid storage class for function ‘clone_device’ 3131 | static void clone_device(struct GDBusProxy *proxy) | ^~~~~~~~~~~~ ../../client/gatt.c:3144:13: error: invalid storage class for function ‘service_clone’ 3144 | static void service_clone(const char *input, void *user_data) | ^~~~~~~~~~~~~ ../../client/gatt.c:3160:13: error: invalid storage class for function ‘device_clone’ 3160 | static void device_clone(const char *input, void *user_data) | ^~~~~~~~~~~~ ../../client/gatt.c:3174:20: error: invalid storage class for function ‘proxy_get_name’ 3174 | static const char *proxy_get_name(struct GDBusProxy *proxy) | ^~~~~~~~~~~~~~ ../../client/gatt.c:3190:20: error: invalid storage class for function ‘proxy_get_alias’ 3190 | static const char *proxy_get_alias(struct GDBusProxy *proxy) | ^~~~~~~~~~~~~~~ ../../client/gatt.c:3232:1: error: expected declaration or statement at end of input 3232 | } | ^ make[2]: *** [Makefile:7300: client/gatt.o] Error 1 make[1]: *** [Makefile:4324: all] Error 2 make: *** [Makefile:11241: distcheck] Error 1 ############################## Test: Build w/ext ELL - Make - FAIL Desc: Build BlueZ source with '--enable-external-ell' configuration Output: client/gatt.c: In function ‘gatt_register_service’: client/gatt.c:1554:24: error: invalid storage class for function ‘service_find’ 1554 | static struct service *service_find(const char *pattern) | ^~~~~~~~~~~~ client/gatt.c:1554:1: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement] 1554 | static struct service *service_find(const char *pattern) | ^~~~~~ client/gatt.c:1594:14: error: invalid storage class for function ‘inc_find’ 1594 | static char *inc_find(struct service *serv, char *path) | ^~~~~~~~ client/gatt.c:1666:17: error: invalid storage class for function ‘chrc_get_handle’ 1666 | static gboolean chrc_get_handle(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~ client/gatt.c:1676:13: error: invalid storage class for function ‘chrc_set_handle’ 1676 | static void chrc_set_handle(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~ client/gatt.c:1695:17: error: invalid storage class for function ‘chrc_get_uuid’ 1695 | static gboolean chrc_get_uuid(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~ client/gatt.c:1705:17: error: invalid storage class for function ‘chrc_get_service’ 1705 | static gboolean chrc_get_service(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~ client/gatt.c:1716:17: error: invalid storage class for function ‘chrc_get_value’ 1716 | static gboolean chrc_get_value(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~ client/gatt.c:1732:17: error: invalid storage class for function ‘chrc_get_notifying’ 1732 | static gboolean chrc_get_notifying(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:1745:17: error: invalid storage class for function ‘chrc_get_flags’ 1745 | static gboolean chrc_get_flags(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~ client/gatt.c:1763:17: error: invalid storage class for function ‘chrc_get_write_acquired’ 1763 | static gboolean chrc_get_write_acquired(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1776:17: error: invalid storage class for function ‘chrc_write_acquired_exists’ 1776 | static gboolean chrc_write_acquired_exists(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1793:17: error: invalid storage class for function ‘chrc_get_notify_acquired’ 1793 | static gboolean chrc_get_notify_acquired(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1806:17: error: invalid storage class for function ‘chrc_notify_acquired_exists’ 1806 | static gboolean chrc_notify_acquired_exists(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1824:19: error: initializer element is not constant 1824 | { "Handle", "q", chrc_get_handle, chrc_set_handle, NULL }, | ^~~~~~~~~~~~~~~ client/gatt.c:1824:19: note: (near initialization for ‘chrc_properties[0].get’) client/gatt.c:1824:36: error: initializer element is not constant 1824 | { "Handle", "q", chrc_get_handle, chrc_set_handle, NULL }, | ^~~~~~~~~~~~~~~ client/gatt.c:1824:36: note: (near initialization for ‘chrc_properties[0].set’) client/gatt.c:1825:17: error: initializer element is not constant 1825 | { "UUID", "s", chrc_get_uuid, NULL, NULL }, | ^~~~~~~~~~~~~ client/gatt.c:1825:17: note: (near initialization for ‘chrc_properties[1].get’) client/gatt.c:1826:20: error: initializer element is not constant 1826 | { "Service", "o", chrc_get_service, NULL, NULL }, | ^~~~~~~~~~~~~~~~ client/gatt.c:1826:20: note: (near initialization for ‘chrc_properties[2].get’) client/gatt.c:1827:19: error: initializer element is not constant 1827 | { "Value", "ay", chrc_get_value, NULL, NULL }, | ^~~~~~~~~~~~~~ client/gatt.c:1827:19: note: (near initialization for ‘chrc_properties[3].get’) client/gatt.c:1828:22: error: initializer element is not constant 1828 | { "Notifying", "b", chrc_get_notifying, NULL, NULL }, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:1828:22: note: (near initialization for ‘chrc_properties[4].get’) client/gatt.c:1829:19: error: initializer element is not constant 1829 | { "Flags", "as", chrc_get_flags, NULL, NULL }, | ^~~~~~~~~~~~~~ client/gatt.c:1829:19: note: (near initialization for ‘chrc_properties[5].get’) client/gatt.c:1830:26: error: initializer element is not constant 1830 | { "WriteAcquired", "b", chrc_get_write_acquired, NULL, | ^~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1830:26: note: (near initialization for ‘chrc_properties[6].get’) client/gatt.c:1831:6: error: initializer element is not constant 1831 | chrc_write_acquired_exists }, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1831:6: note: (near initialization for ‘chrc_properties[6].exists’) client/gatt.c:1832:27: error: initializer element is not constant 1832 | { "NotifyAcquired", "b", chrc_get_notify_acquired, NULL, | ^~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1832:27: note: (near initialization for ‘chrc_properties[7].get’) client/gatt.c:1833:6: error: initializer element is not constant 1833 | chrc_notify_acquired_exists }, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1833:6: note: (near initialization for ‘chrc_properties[7].exists’) client/gatt.c:1837:20: error: invalid storage class for function ‘path_to_address’ 1837 | static const char *path_to_address(const char *path) | ^~~~~~~~~~~~~~~ client/gatt.c:1851:12: error: invalid storage class for function ‘parse_options’ 1851 | static int parse_options(DBusMessageIter *iter, uint16_t *offset, uint16_t *mtu, | ^~~~~~~~~~~~~ client/gatt.c:1911:21: error: invalid storage class for function ‘read_value’ 1911 | static DBusMessage *read_value(DBusMessage *msg, uint8_t *value, | ^~~~~~~~~~ client/gatt.c:1934:13: error: invalid storage class for function ‘authorize_read_response’ 1934 | static void authorize_read_response(const char *input, void *user_data) | ^~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1967:13: error: invalid storage class for function ‘is_device_trusted’ 1967 | static bool is_device_trusted(const char *path) | ^~~~~~~~~~~~~~~~~ client/gatt.c:1986:13: error: invalid storage class for function ‘proxy_read_reply’ 1986 | static void proxy_read_reply(DBusMessage *message, void *user_data) | ^~~~~~~~~~~~~~~~ client/gatt.c:2033:13: error: invalid storage class for function ‘proxy_read_setup’ 2033 | static void proxy_read_setup(DBusMessageIter *iter, void *user_data) | ^~~~~~~~~~~~~~~~ client/gatt.c:2051:21: error: invalid storage class for function ‘proxy_read_value’ 2051 | static DBusMessage *proxy_read_value(struct GDBusProxy *proxy, DBusMessage *msg, | ^~~~~~~~~~~~~~~~ client/gatt.c:2070:21: error: invalid storage class for function ‘chrc_read_value’ 2070 | static DBusMessage *chrc_read_value(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~ client/gatt.c:2121:12: error: invalid storage class for function ‘parse_value_arg’ 2121 | static int parse_value_arg(DBusMessageIter *iter, uint8_t **value, int *len) | ^~~~~~~~~~~~~~~ client/gatt.c:2134:12: error: invalid storage class for function ‘write_value’ 2134 | static int write_value(size_t *dst_len, uint8_t **dst_value, uint8_t *src_val, | ^~~~~~~~~~~ client/gatt.c:2150:13: error: invalid storage class for function ‘authorize_write_response’ 2150 | static void authorize_write_response(const char *input, void *user_data) | ^~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:2221:13: error: invalid storage class for function ‘proxy_write_reply’ 2221 | static void proxy_write_reply(DBusMessage *message, void *user_data) | ^~~~~~~~~~~~~~~~~ client/gatt.c:2240:21: error: invalid storage class for function ‘proxy_write_value’ 2240 | static DBusMessage *proxy_write_value(struct GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~ client/gatt.c:2264:21: error: invalid storage class for function ‘chrc_write_value’ 2264 | static DBusMessage *chrc_write_value(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~ client/gatt.c:2340:21: error: invalid storage class for function ‘create_sock’ 2340 | static DBusMessage *create_sock(struct chrc *chrc, DBusMessage *msg) | ^~~~~~~~~~~ client/gatt.c:2379:21: error: invalid storage class for function ‘chrc_acquire_write’ 2379 | static DBusMessage *chrc_acquire_write(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:2411:21: error: invalid storage class for function ‘chrc_acquire_notify’ 2411 | static DBusMessage *chrc_acquire_notify(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~~~~ client/gatt.c:2449:13: error: invalid storage class for function ‘proxy_notify_reply’ 2449 | static void proxy_notify_reply(DBusMessage *message, void *user_data) | ^~~~~~~~~~~~~~~~~~ client/gatt.c:2483:21: error: invalid storage class for function ‘proxy_notify’ 2483 | static DBusMessage *proxy_notify(struct chrc *chrc, DBusMessage *msg, | ^~~~~~~~~~~~ client/gatt.c:2507:21: error: invalid storage class for function ‘chrc_start_notify’ 2507 | static DBusMessage *chrc_start_notify(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~~ client/gatt.c:2527:21: error: invalid storage class for function ‘chrc_stop_notify’ 2527 | static DBusMessage *chrc_stop_notify(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~ client/gatt.c:2547:21: error: invalid storage class for function ‘chrc_confirm’ 2547 | static DBusMessage *chrc_confirm(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~ In file included from client/gatt.c:33: ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2559:36: note: in expansion of macro ‘GDBUS_ARGS’ 2559 | { GDBUS_ASYNC_METHOD("ReadValue", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[0].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2559:36: note: in expansion of macro ‘GDBUS_ARGS’ 2559 | { GDBUS_ASYNC_METHOD("ReadValue", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusPropertyTable *’ {aka ‘const struct GDBusPropertyTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2560:6: note: in expansion of macro ‘GDBUS_ARGS’ 2560 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[0].out_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2560:6: note: in expansion of macro ‘GDBUS_ARGS’ 2560 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2560:6: note: in expansion of macro ‘GDBUS_ARGS’ 2560 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[0].out_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2560:6: note: in expansion of macro ‘GDBUS_ARGS’ 2560 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ client/gatt.c:2561:6: error: initializer element is not constant 2561 | chrc_read_value) }, | ^~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2561:6: note: (near initialization for ‘chrc_methods[0].function’) 2561 | chrc_read_value) }, | ^~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusPropertyTable *’ {aka ‘const struct GDBusPropertyTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2562:37: note: in expansion of macro ‘GDBUS_ARGS’ 2562 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[1].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2562:37: note: in expansion of macro ‘GDBUS_ARGS’ 2562 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2562:37: note: in expansion of macro ‘GDBUS_ARGS’ 2562 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[1].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2562:37: note: in expansion of macro ‘GDBUS_ARGS’ 2562 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ client/gatt.c:2564:12: error: initializer element is not constant 2564 | NULL, chrc_write_value) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2564:12: note: (near initialization for ‘chrc_methods[1].function’) 2564 | NULL, chrc_write_value) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusPropertyTable *’ {aka ‘const struct GDBusPropertyTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2565:33: note: in expansion of macro ‘GDBUS_ARGS’ 2565 | { GDBUS_METHOD("AcquireWrite", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[2].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2565:33: note: in expansion of macro ‘GDBUS_ARGS’ 2565 | { GDBUS_METHOD("AcquireWrite", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2565:33: note: in expansion of macro ‘GDBUS_ARGS’ 2565 | { GDBUS_METHOD("AcquireWrite", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[2].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2565:33: note: in expansion of macro ‘GDBUS_ARGS’ 2565 | { GDBUS_METHOD("AcquireWrite", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ client/gatt.c:2566:12: error: initializer element is not constant 2566 | NULL, chrc_acquire_write) }, | ^~~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2566:12: note: (near initialization for ‘chrc_methods[2].function’) 2566 | NULL, chrc_acquire_write) }, | ^~~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusPropertyTable *’ {aka ‘const struct GDBusPropertyTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2567:34: note: in expansion of macro ‘GDBUS_ARGS’ 2567 | { GDBUS_METHOD("AcquireNotify", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[3].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2567:34: note: in expansion of macro ‘GDBUS_ARGS’ 2567 | { GDBUS_METHOD("AcquireNotify", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2567:34: note: in expansion of macro ‘GDBUS_ARGS’ 2567 | { GDBUS_METHOD("AcquireNotify", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[3].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2567:34: note: in expansion of macro ‘GDBUS_ARGS’ 2567 | { GDBUS_METHOD("AcquireNotify", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ client/gatt.c:2568:12: error: initializer element is not constant 2568 | NULL, chrc_acquire_notify) }, | ^~~~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2568:12: note: (near initialization for ‘chrc_methods[3].function’) 2568 | NULL, chrc_acquire_notify) }, | ^~~~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2569:50: error: initializer element is not constant 2569 | { GDBUS_ASYNC_METHOD("StartNotify", NULL, NULL, chrc_start_notify) }, | ^~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2569:50: note: (near initialization for ‘chrc_methods[4].function’) 2569 | { GDBUS_ASYNC_METHOD("StartNotify", NULL, NULL, chrc_start_notify) }, | ^~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2570:43: error: initializer element is not constant 2570 | { GDBUS_METHOD("StopNotify", NULL, NULL, chrc_stop_notify) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2570:43: note: (near initialization for ‘chrc_methods[5].function’) 2570 | { GDBUS_METHOD("StopNotify", NULL, NULL, chrc_stop_notify) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2571:40: error: initializer element is not constant 2571 | { GDBUS_METHOD("Confirm", NULL, NULL, chrc_confirm) }, | ^~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2571:40: note: (near initialization for ‘chrc_methods[6].function’) 2571 | { GDBUS_METHOD("Confirm", NULL, NULL, chrc_confirm) }, | ^~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2575:13: error: invalid storage class for function ‘chrc_set_value’ 2575 | static void chrc_set_value(const char *input, void *user_data) | ^~~~~~~~~~~~~~ client/gatt.c:2591:17: error: invalid storage class for function ‘attr_authorization_flag_exists’ 2591 | static gboolean attr_authorization_flag_exists(char **flags) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:2649:21: error: invalid storage class for function ‘chrc_find’ 2649 | static struct chrc *chrc_find(const char *pattern) | ^~~~~~~~~ client/gatt.c:2692:21: error: invalid storage class for function ‘desc_read_value’ 2692 | static DBusMessage *desc_read_value(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~ client/gatt.c:2718:21: error: invalid storage class for function ‘desc_write_value’ 2718 | static DBusMessage *desc_write_value(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~ In file included from client/gatt.c:33: ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2761:36: note: in expansion of macro ‘GDBUS_ARGS’ 2761 | { GDBUS_ASYNC_METHOD("ReadValue", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[0].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2761:36: note: in expansion of macro ‘GDBUS_ARGS’ 2761 | { GDBUS_ASYNC_METHOD("ReadValue", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusMethodTable *’ {aka ‘const struct GDBusMethodTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2762:6: note: in expansion of macro ‘GDBUS_ARGS’ 2762 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[0].out_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2762:6: note: in expansion of macro ‘GDBUS_ARGS’ 2762 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2762:6: note: in expansion of macro ‘GDBUS_ARGS’ 2762 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[0].out_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2762:6: note: in expansion of macro ‘GDBUS_ARGS’ 2762 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ client/gatt.c:2763:6: error: initializer element is not constant 2763 | desc_read_value) }, | ^~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2763:6: note: (near initialization for ‘desc_methods[0].function’) 2763 | desc_read_value) }, | ^~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusMethodTable *’ {aka ‘const struct GDBusMethodTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2764:37: note: in expansion of macro ‘GDBUS_ARGS’ 2764 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[1].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2764:37: note: in expansion of macro ‘GDBUS_ARGS’ 2764 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2764:37: note: in expansion of macro ‘GDBUS_ARGS’ 2764 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[1].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2764:37: note: in expansion of macro ‘GDBUS_ARGS’ 2764 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ client/gatt.c:2766:12: error: initializer element is not constant 2766 | NULL, desc_write_value) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2766:12: note: (near initialization for ‘desc_methods[1].function’) 2766 | NULL, desc_write_value) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2770:17: error: invalid storage class for function ‘desc_get_handle’ 2770 | static gboolean desc_get_handle(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~ client/gatt.c:2780:13: error: invalid storage class for function ‘desc_set_handle’ 2780 | static void desc_set_handle(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~ client/gatt.c:2799:17: error: invalid storage class for function ‘desc_get_uuid’ 2799 | static gboolean desc_get_uuid(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~ client/gatt.c:2809:17: error: invalid storage class for function ‘desc_get_chrc’ 2809 | static gboolean desc_get_chrc(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~ client/gatt.c:2820:17: error: invalid storage class for function ‘desc_get_value’ 2820 | static gboolean desc_get_value(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~ client/gatt.c:2838:17: error: invalid storage class for function ‘desc_get_flags’ 2838 | static gboolean desc_get_flags(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~ client/gatt.c:2857:19: error: initializer element is not constant 2857 | { "Handle", "q", desc_get_handle, desc_set_handle, NULL }, | ^~~~~~~~~~~~~~~ client/gatt.c:2857:19: note: (near initialization for ‘desc_properties[0].get’) client/gatt.c:2857:36: error: initializer element is not constant 2857 | { "Handle", "q", desc_get_handle, desc_set_handle, NULL }, | ^~~~~~~~~~~~~~~ client/gatt.c:2857:36: note: (near initialization for ‘desc_properties[0].set’) client/gatt.c:2858:17: error: initializer element is not constant 2858 | { "UUID", "s", desc_get_uuid, NULL, NULL }, | ^~~~~~~~~~~~~ client/gatt.c:2858:17: note: (near initialization for ‘desc_properties[1].get’) client/gatt.c:2859:27: error: initializer element is not constant 2859 | { "Characteristic", "o", desc_get_chrc, NULL, NULL }, | ^~~~~~~~~~~~~ client/gatt.c:2859:27: note: (near initialization for ‘desc_properties[2].get’) client/gatt.c:2860:19: error: initializer element is not constant 2860 | { "Value", "ay", desc_get_value, NULL, NULL }, | ^~~~~~~~~~~~~~ client/gatt.c:2860:19: note: (near initialization for ‘desc_properties[3].get’) client/gatt.c:2861:19: error: initializer element is not constant 2861 | { "Flags", "as", desc_get_flags, NULL, NULL }, | ^~~~~~~~~~~~~~ client/gatt.c:2861:19: note: (near initialization for ‘desc_properties[4].get’) client/gatt.c:2865:13: error: invalid storage class for function ‘desc_set_value’ 2865 | static void desc_set_value(const char *input, void *user_data) | ^~~~~~~~~~~~~~ client/gatt.c:2931:21: error: invalid storage class for function ‘desc_find’ 2931 | static struct desc *desc_find(const char *pattern) | ^~~~~~~~~ client/gatt.c:2979:20: error: invalid storage class for function ‘select_service’ 2979 | static GDBusProxy *select_service(GDBusProxy *proxy) | ^~~~~~~~~~~~~~ client/gatt.c:2994:13: error: invalid storage class for function ‘proxy_property_changed’ 2994 | static void proxy_property_changed(GDBusProxy *proxy, const char *name, | ^~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:3020:13: error: invalid storage class for function ‘clone_chrc’ 3020 | static void clone_chrc(struct GDBusProxy *proxy) | ^~~~~~~~~~ client/gatt.c:3073:13: error: invalid storage class for function ‘clone_chrcs’ 3073 | static void clone_chrcs(struct GDBusProxy *proxy) | ^~~~~~~~~~~ client/gatt.c:3086:13: error: invalid storage class for function ‘clone_service’ 3086 | static void clone_service(struct GDBusProxy *proxy) | ^~~~~~~~~~~~~ client/gatt.c:3131:13: error: invalid storage class for function ‘clone_device’ 3131 | static void clone_device(struct GDBusProxy *proxy) | ^~~~~~~~~~~~ client/gatt.c:3144:13: error: invalid storage class for function ‘service_clone’ 3144 | static void service_clone(const char *input, void *user_data) | ^~~~~~~~~~~~~ client/gatt.c:3160:13: error: invalid storage class for function ‘device_clone’ 3160 | static void device_clone(const char *input, void *user_data) | ^~~~~~~~~~~~ client/gatt.c:3174:20: error: invalid storage class for function ‘proxy_get_name’ 3174 | static const char *proxy_get_name(struct GDBusProxy *proxy) | ^~~~~~~~~~~~~~ client/gatt.c:3190:20: error: invalid storage class for function ‘proxy_get_alias’ 3190 | static const char *proxy_get_alias(struct GDBusProxy *proxy) | ^~~~~~~~~~~~~~~ client/gatt.c:3232:1: error: expected declaration or statement at end of input 3232 | } | ^ At top level: client/gatt.c:3203:6: error: ‘gatt_clone_attribute’ defined but not used [-Werror=unused-function] 3203 | void gatt_clone_attribute(GDBusProxy *proxy, int argc, char *argv[]) | ^~~~~~~~~~~~~~~~~~~~ client/gatt.c:2961:6: error: ‘gatt_unregister_desc’ defined but not used [-Werror=unused-function] 2961 | void gatt_unregister_desc(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~ client/gatt.c:2881:6: error: ‘gatt_register_desc’ defined but not used [-Werror=unused-function] 2881 | void gatt_register_desc(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:2674:6: error: ‘gatt_unregister_chrc’ defined but not used [-Werror=unused-function] 2674 | void gatt_unregister_chrc(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~ client/gatt.c:2603:6: error: ‘gatt_register_chrc’ defined but not used [-Werror=unused-function] 2603 | void gatt_register_chrc(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:1638:6: error: ‘gatt_unregister_include’ defined but not used [-Werror=unused-function] 1638 | void gatt_unregister_include(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1608:6: error: ‘gatt_register_include’ defined but not used [-Werror=unused-function] 1608 | void gatt_register_include(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1573:6: error: ‘gatt_unregister_service’ defined but not used [-Werror=unused-function] 1573 | void gatt_unregister_service(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors make[1]: *** [Makefile:7300: client/gatt.o] Error 1 make: *** [Makefile:4324: all] Error 2 ############################## Test: Incremental Build with patches - FAIL Desc: Incremental build per patch in the series Output: client/gatt.c: In function ‘gatt_register_service’: client/gatt.c:1554:24: error: invalid storage class for function ‘service_find’ 1554 | static struct service *service_find(const char *pattern) | ^~~~~~~~~~~~ client/gatt.c:1554:1: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement] 1554 | static struct service *service_find(const char *pattern) | ^~~~~~ client/gatt.c:1594:14: error: invalid storage class for function ‘inc_find’ 1594 | static char *inc_find(struct service *serv, char *path) | ^~~~~~~~ client/gatt.c:1666:17: error: invalid storage class for function ‘chrc_get_handle’ 1666 | static gboolean chrc_get_handle(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~ client/gatt.c:1676:13: error: invalid storage class for function ‘chrc_set_handle’ 1676 | static void chrc_set_handle(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~ client/gatt.c:1695:17: error: invalid storage class for function ‘chrc_get_uuid’ 1695 | static gboolean chrc_get_uuid(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~ client/gatt.c:1705:17: error: invalid storage class for function ‘chrc_get_service’ 1705 | static gboolean chrc_get_service(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~ client/gatt.c:1716:17: error: invalid storage class for function ‘chrc_get_value’ 1716 | static gboolean chrc_get_value(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~ client/gatt.c:1732:17: error: invalid storage class for function ‘chrc_get_notifying’ 1732 | static gboolean chrc_get_notifying(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:1745:17: error: invalid storage class for function ‘chrc_get_flags’ 1745 | static gboolean chrc_get_flags(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~ client/gatt.c:1763:17: error: invalid storage class for function ‘chrc_get_write_acquired’ 1763 | static gboolean chrc_get_write_acquired(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1776:17: error: invalid storage class for function ‘chrc_write_acquired_exists’ 1776 | static gboolean chrc_write_acquired_exists(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1793:17: error: invalid storage class for function ‘chrc_get_notify_acquired’ 1793 | static gboolean chrc_get_notify_acquired(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1806:17: error: invalid storage class for function ‘chrc_notify_acquired_exists’ 1806 | static gboolean chrc_notify_acquired_exists(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1824:19: error: initializer element is not constant 1824 | { "Handle", "q", chrc_get_handle, chrc_set_handle, NULL }, | ^~~~~~~~~~~~~~~ client/gatt.c:1824:19: note: (near initialization for ‘chrc_properties[0].get’) client/gatt.c:1824:36: error: initializer element is not constant 1824 | { "Handle", "q", chrc_get_handle, chrc_set_handle, NULL }, | ^~~~~~~~~~~~~~~ client/gatt.c:1824:36: note: (near initialization for ‘chrc_properties[0].set’) client/gatt.c:1825:17: error: initializer element is not constant 1825 | { "UUID", "s", chrc_get_uuid, NULL, NULL }, | ^~~~~~~~~~~~~ client/gatt.c:1825:17: note: (near initialization for ‘chrc_properties[1].get’) client/gatt.c:1826:20: error: initializer element is not constant 1826 | { "Service", "o", chrc_get_service, NULL, NULL }, | ^~~~~~~~~~~~~~~~ client/gatt.c:1826:20: note: (near initialization for ‘chrc_properties[2].get’) client/gatt.c:1827:19: error: initializer element is not constant 1827 | { "Value", "ay", chrc_get_value, NULL, NULL }, | ^~~~~~~~~~~~~~ client/gatt.c:1827:19: note: (near initialization for ‘chrc_properties[3].get’) client/gatt.c:1828:22: error: initializer element is not constant 1828 | { "Notifying", "b", chrc_get_notifying, NULL, NULL }, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:1828:22: note: (near initialization for ‘chrc_properties[4].get’) client/gatt.c:1829:19: error: initializer element is not constant 1829 | { "Flags", "as", chrc_get_flags, NULL, NULL }, | ^~~~~~~~~~~~~~ client/gatt.c:1829:19: note: (near initialization for ‘chrc_properties[5].get’) client/gatt.c:1830:26: error: initializer element is not constant 1830 | { "WriteAcquired", "b", chrc_get_write_acquired, NULL, | ^~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1830:26: note: (near initialization for ‘chrc_properties[6].get’) client/gatt.c:1831:6: error: initializer element is not constant 1831 | chrc_write_acquired_exists }, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1831:6: note: (near initialization for ‘chrc_properties[6].exists’) client/gatt.c:1832:27: error: initializer element is not constant 1832 | { "NotifyAcquired", "b", chrc_get_notify_acquired, NULL, | ^~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1832:27: note: (near initialization for ‘chrc_properties[7].get’) client/gatt.c:1833:6: error: initializer element is not constant 1833 | chrc_notify_acquired_exists }, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1833:6: note: (near initialization for ‘chrc_properties[7].exists’) client/gatt.c:1837:20: error: invalid storage class for function ‘path_to_address’ 1837 | static const char *path_to_address(const char *path) | ^~~~~~~~~~~~~~~ client/gatt.c:1851:12: error: invalid storage class for function ‘parse_options’ 1851 | static int parse_options(DBusMessageIter *iter, uint16_t *offset, uint16_t *mtu, | ^~~~~~~~~~~~~ client/gatt.c:1911:21: error: invalid storage class for function ‘read_value’ 1911 | static DBusMessage *read_value(DBusMessage *msg, uint8_t *value, | ^~~~~~~~~~ client/gatt.c:1934:13: error: invalid storage class for function ‘authorize_read_response’ 1934 | static void authorize_read_response(const char *input, void *user_data) | ^~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1967:13: error: invalid storage class for function ‘is_device_trusted’ 1967 | static bool is_device_trusted(const char *path) | ^~~~~~~~~~~~~~~~~ client/gatt.c:1986:13: error: invalid storage class for function ‘proxy_read_reply’ 1986 | static void proxy_read_reply(DBusMessage *message, void *user_data) | ^~~~~~~~~~~~~~~~ client/gatt.c:2033:13: error: invalid storage class for function ‘proxy_read_setup’ 2033 | static void proxy_read_setup(DBusMessageIter *iter, void *user_data) | ^~~~~~~~~~~~~~~~ client/gatt.c:2051:21: error: invalid storage class for function ‘proxy_read_value’ 2051 | static DBusMessage *proxy_read_value(struct GDBusProxy *proxy, DBusMessage *msg, | ^~~~~~~~~~~~~~~~ client/gatt.c:2070:21: error: invalid storage class for function ‘chrc_read_value’ 2070 | static DBusMessage *chrc_read_value(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~ client/gatt.c:2121:12: error: invalid storage class for function ‘parse_value_arg’ 2121 | static int parse_value_arg(DBusMessageIter *iter, uint8_t **value, int *len) | ^~~~~~~~~~~~~~~ client/gatt.c:2134:12: error: invalid storage class for function ‘write_value’ 2134 | static int write_value(size_t *dst_len, uint8_t **dst_value, uint8_t *src_val, | ^~~~~~~~~~~ client/gatt.c:2150:13: error: invalid storage class for function ‘authorize_write_response’ 2150 | static void authorize_write_response(const char *input, void *user_data) | ^~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:2221:13: error: invalid storage class for function ‘proxy_write_reply’ 2221 | static void proxy_write_reply(DBusMessage *message, void *user_data) | ^~~~~~~~~~~~~~~~~ client/gatt.c:2240:21: error: invalid storage class for function ‘proxy_write_value’ 2240 | static DBusMessage *proxy_write_value(struct GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~ client/gatt.c:2264:21: error: invalid storage class for function ‘chrc_write_value’ 2264 | static DBusMessage *chrc_write_value(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~ client/gatt.c:2340:21: error: invalid storage class for function ‘create_sock’ 2340 | static DBusMessage *create_sock(struct chrc *chrc, DBusMessage *msg) | ^~~~~~~~~~~ client/gatt.c:2379:21: error: invalid storage class for function ‘chrc_acquire_write’ 2379 | static DBusMessage *chrc_acquire_write(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:2411:21: error: invalid storage class for function ‘chrc_acquire_notify’ 2411 | static DBusMessage *chrc_acquire_notify(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~~~~ client/gatt.c:2449:13: error: invalid storage class for function ‘proxy_notify_reply’ 2449 | static void proxy_notify_reply(DBusMessage *message, void *user_data) | ^~~~~~~~~~~~~~~~~~ client/gatt.c:2483:21: error: invalid storage class for function ‘proxy_notify’ 2483 | static DBusMessage *proxy_notify(struct chrc *chrc, DBusMessage *msg, | ^~~~~~~~~~~~ client/gatt.c:2507:21: error: invalid storage class for function ‘chrc_start_notify’ 2507 | static DBusMessage *chrc_start_notify(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~~ client/gatt.c:2527:21: error: invalid storage class for function ‘chrc_stop_notify’ 2527 | static DBusMessage *chrc_stop_notify(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~ client/gatt.c:2547:21: error: invalid storage class for function ‘chrc_confirm’ 2547 | static DBusMessage *chrc_confirm(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~ In file included from client/gatt.c:33: ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2559:36: note: in expansion of macro ‘GDBUS_ARGS’ 2559 | { GDBUS_ASYNC_METHOD("ReadValue", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[0].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2559:36: note: in expansion of macro ‘GDBUS_ARGS’ 2559 | { GDBUS_ASYNC_METHOD("ReadValue", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusPropertyTable *’ {aka ‘const struct GDBusPropertyTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2560:6: note: in expansion of macro ‘GDBUS_ARGS’ 2560 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[0].out_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2560:6: note: in expansion of macro ‘GDBUS_ARGS’ 2560 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2560:6: note: in expansion of macro ‘GDBUS_ARGS’ 2560 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[0].out_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2560:6: note: in expansion of macro ‘GDBUS_ARGS’ 2560 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ client/gatt.c:2561:6: error: initializer element is not constant 2561 | chrc_read_value) }, | ^~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2561:6: note: (near initialization for ‘chrc_methods[0].function’) 2561 | chrc_read_value) }, | ^~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusPropertyTable *’ {aka ‘const struct GDBusPropertyTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2562:37: note: in expansion of macro ‘GDBUS_ARGS’ 2562 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[1].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2562:37: note: in expansion of macro ‘GDBUS_ARGS’ 2562 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2562:37: note: in expansion of macro ‘GDBUS_ARGS’ 2562 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[1].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2562:37: note: in expansion of macro ‘GDBUS_ARGS’ 2562 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ client/gatt.c:2564:12: error: initializer element is not constant 2564 | NULL, chrc_write_value) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2564:12: note: (near initialization for ‘chrc_methods[1].function’) 2564 | NULL, chrc_write_value) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusPropertyTable *’ {aka ‘const struct GDBusPropertyTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2565:33: note: in expansion of macro ‘GDBUS_ARGS’ 2565 | { GDBUS_METHOD("AcquireWrite", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[2].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2565:33: note: in expansion of macro ‘GDBUS_ARGS’ 2565 | { GDBUS_METHOD("AcquireWrite", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2565:33: note: in expansion of macro ‘GDBUS_ARGS’ 2565 | { GDBUS_METHOD("AcquireWrite", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[2].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2565:33: note: in expansion of macro ‘GDBUS_ARGS’ 2565 | { GDBUS_METHOD("AcquireWrite", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ client/gatt.c:2566:12: error: initializer element is not constant 2566 | NULL, chrc_acquire_write) }, | ^~~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2566:12: note: (near initialization for ‘chrc_methods[2].function’) 2566 | NULL, chrc_acquire_write) }, | ^~~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusPropertyTable *’ {aka ‘const struct GDBusPropertyTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2567:34: note: in expansion of macro ‘GDBUS_ARGS’ 2567 | { GDBUS_METHOD("AcquireNotify", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[3].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2567:34: note: in expansion of macro ‘GDBUS_ARGS’ 2567 | { GDBUS_METHOD("AcquireNotify", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2567:34: note: in expansion of macro ‘GDBUS_ARGS’ 2567 | { GDBUS_METHOD("AcquireNotify", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘chrc_methods[3].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:150:13: note: in definition of macro ‘GDBUS_METHOD’ 150 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2567:34: note: in expansion of macro ‘GDBUS_ARGS’ 2567 | { GDBUS_METHOD("AcquireNotify", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ client/gatt.c:2568:12: error: initializer element is not constant 2568 | NULL, chrc_acquire_notify) }, | ^~~~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2568:12: note: (near initialization for ‘chrc_methods[3].function’) 2568 | NULL, chrc_acquire_notify) }, | ^~~~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2569:50: error: initializer element is not constant 2569 | { GDBUS_ASYNC_METHOD("StartNotify", NULL, NULL, chrc_start_notify) }, | ^~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2569:50: note: (near initialization for ‘chrc_methods[4].function’) 2569 | { GDBUS_ASYNC_METHOD("StartNotify", NULL, NULL, chrc_start_notify) }, | ^~~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2570:43: error: initializer element is not constant 2570 | { GDBUS_METHOD("StopNotify", NULL, NULL, chrc_stop_notify) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2570:43: note: (near initialization for ‘chrc_methods[5].function’) 2570 | { GDBUS_METHOD("StopNotify", NULL, NULL, chrc_stop_notify) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2571:40: error: initializer element is not constant 2571 | { GDBUS_METHOD("Confirm", NULL, NULL, chrc_confirm) }, | ^~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2571:40: note: (near initialization for ‘chrc_methods[6].function’) 2571 | { GDBUS_METHOD("Confirm", NULL, NULL, chrc_confirm) }, | ^~~~~~~~~~~~ ./gdbus/gdbus.h:152:14: note: in definition of macro ‘GDBUS_METHOD’ 152 | .function = _function | ^~~~~~~~~ client/gatt.c:2575:13: error: invalid storage class for function ‘chrc_set_value’ 2575 | static void chrc_set_value(const char *input, void *user_data) | ^~~~~~~~~~~~~~ client/gatt.c:2591:17: error: invalid storage class for function ‘attr_authorization_flag_exists’ 2591 | static gboolean attr_authorization_flag_exists(char **flags) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:2649:21: error: invalid storage class for function ‘chrc_find’ 2649 | static struct chrc *chrc_find(const char *pattern) | ^~~~~~~~~ client/gatt.c:2692:21: error: invalid storage class for function ‘desc_read_value’ 2692 | static DBusMessage *desc_read_value(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~ client/gatt.c:2718:21: error: invalid storage class for function ‘desc_write_value’ 2718 | static DBusMessage *desc_write_value(DBusConnection *conn, DBusMessage *msg, | ^~~~~~~~~~~~~~~~ In file included from client/gatt.c:33: ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2761:36: note: in expansion of macro ‘GDBUS_ARGS’ 2761 | { GDBUS_ASYNC_METHOD("ReadValue", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[0].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2761:36: note: in expansion of macro ‘GDBUS_ARGS’ 2761 | { GDBUS_ASYNC_METHOD("ReadValue", GDBUS_ARGS({ "options", "a{sv}" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusMethodTable *’ {aka ‘const struct GDBusMethodTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2762:6: note: in expansion of macro ‘GDBUS_ARGS’ 2762 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[0].out_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2762:6: note: in expansion of macro ‘GDBUS_ARGS’ 2762 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2762:6: note: in expansion of macro ‘GDBUS_ARGS’ 2762 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[0].out_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:157:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 157 | .out_args = _out_args, \ | ^~~~~~~~~ client/gatt.c:2762:6: note: in expansion of macro ‘GDBUS_ARGS’ 2762 | GDBUS_ARGS({ "value", "ay" }), | ^~~~~~~~~~ client/gatt.c:2763:6: error: initializer element is not constant 2763 | desc_read_value) }, | ^~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2763:6: note: (near initialization for ‘desc_methods[0].function’) 2763 | desc_read_value) }, | ^~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initialization of ‘const GDBusArgInfo *’ {aka ‘const struct GDBusArgInfo *’} from incompatible pointer type ‘const GDBusMethodTable *’ {aka ‘const struct GDBusMethodTable *’} [-Werror=incompatible-pointer-types] 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2764:37: note: in expansion of macro ‘GDBUS_ARGS’ 2764 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[1].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2764:37: note: in expansion of macro ‘GDBUS_ARGS’ 2764 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: error: initializer element is not constant 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2764:37: note: in expansion of macro ‘GDBUS_ARGS’ 2764 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ ./gdbus/gdbus.h:146:29: note: (near initialization for ‘desc_methods[1].in_args’) 146 | #define GDBUS_ARGS(args...) (const GDBusArgInfo[]) { args, { } } | ^ ./gdbus/gdbus.h:156:13: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 156 | .in_args = _in_args, \ | ^~~~~~~~ client/gatt.c:2764:37: note: in expansion of macro ‘GDBUS_ARGS’ 2764 | { GDBUS_ASYNC_METHOD("WriteValue", GDBUS_ARGS({ "value", "ay" }, | ^~~~~~~~~~ client/gatt.c:2766:12: error: initializer element is not constant 2766 | NULL, desc_write_value) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2766:12: note: (near initialization for ‘desc_methods[1].function’) 2766 | NULL, desc_write_value) }, | ^~~~~~~~~~~~~~~~ ./gdbus/gdbus.h:158:14: note: in definition of macro ‘GDBUS_ASYNC_METHOD’ 158 | .function = _function, \ | ^~~~~~~~~ client/gatt.c:2770:17: error: invalid storage class for function ‘desc_get_handle’ 2770 | static gboolean desc_get_handle(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~ client/gatt.c:2780:13: error: invalid storage class for function ‘desc_set_handle’ 2780 | static void desc_set_handle(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~~ client/gatt.c:2799:17: error: invalid storage class for function ‘desc_get_uuid’ 2799 | static gboolean desc_get_uuid(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~ client/gatt.c:2809:17: error: invalid storage class for function ‘desc_get_chrc’ 2809 | static gboolean desc_get_chrc(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~ client/gatt.c:2820:17: error: invalid storage class for function ‘desc_get_value’ 2820 | static gboolean desc_get_value(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~ client/gatt.c:2838:17: error: invalid storage class for function ‘desc_get_flags’ 2838 | static gboolean desc_get_flags(const GDBusPropertyTable *property, | ^~~~~~~~~~~~~~ client/gatt.c:2857:19: error: initializer element is not constant 2857 | { "Handle", "q", desc_get_handle, desc_set_handle, NULL }, | ^~~~~~~~~~~~~~~ client/gatt.c:2857:19: note: (near initialization for ‘desc_properties[0].get’) client/gatt.c:2857:36: error: initializer element is not constant 2857 | { "Handle", "q", desc_get_handle, desc_set_handle, NULL }, | ^~~~~~~~~~~~~~~ client/gatt.c:2857:36: note: (near initialization for ‘desc_properties[0].set’) client/gatt.c:2858:17: error: initializer element is not constant 2858 | { "UUID", "s", desc_get_uuid, NULL, NULL }, | ^~~~~~~~~~~~~ client/gatt.c:2858:17: note: (near initialization for ‘desc_properties[1].get’) client/gatt.c:2859:27: error: initializer element is not constant 2859 | { "Characteristic", "o", desc_get_chrc, NULL, NULL }, | ^~~~~~~~~~~~~ client/gatt.c:2859:27: note: (near initialization for ‘desc_properties[2].get’) client/gatt.c:2860:19: error: initializer element is not constant 2860 | { "Value", "ay", desc_get_value, NULL, NULL }, | ^~~~~~~~~~~~~~ client/gatt.c:2860:19: note: (near initialization for ‘desc_properties[3].get’) client/gatt.c:2861:19: error: initializer element is not constant 2861 | { "Flags", "as", desc_get_flags, NULL, NULL }, | ^~~~~~~~~~~~~~ client/gatt.c:2861:19: note: (near initialization for ‘desc_properties[4].get’) client/gatt.c:2865:13: error: invalid storage class for function ‘desc_set_value’ 2865 | static void desc_set_value(const char *input, void *user_data) | ^~~~~~~~~~~~~~ client/gatt.c:2931:21: error: invalid storage class for function ‘desc_find’ 2931 | static struct desc *desc_find(const char *pattern) | ^~~~~~~~~ client/gatt.c:2979:20: error: invalid storage class for function ‘select_service’ 2979 | static GDBusProxy *select_service(GDBusProxy *proxy) | ^~~~~~~~~~~~~~ client/gatt.c:2994:13: error: invalid storage class for function ‘proxy_property_changed’ 2994 | static void proxy_property_changed(GDBusProxy *proxy, const char *name, | ^~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:3020:13: error: invalid storage class for function ‘clone_chrc’ 3020 | static void clone_chrc(struct GDBusProxy *proxy) | ^~~~~~~~~~ client/gatt.c:3073:13: error: invalid storage class for function ‘clone_chrcs’ 3073 | static void clone_chrcs(struct GDBusProxy *proxy) | ^~~~~~~~~~~ client/gatt.c:3086:13: error: invalid storage class for function ‘clone_service’ 3086 | static void clone_service(struct GDBusProxy *proxy) | ^~~~~~~~~~~~~ client/gatt.c:3131:13: error: invalid storage class for function ‘clone_device’ 3131 | static void clone_device(struct GDBusProxy *proxy) | ^~~~~~~~~~~~ client/gatt.c:3144:13: error: invalid storage class for function ‘service_clone’ 3144 | static void service_clone(const char *input, void *user_data) | ^~~~~~~~~~~~~ client/gatt.c:3160:13: error: invalid storage class for function ‘device_clone’ 3160 | static void device_clone(const char *input, void *user_data) | ^~~~~~~~~~~~ client/gatt.c:3174:20: error: invalid storage class for function ‘proxy_get_name’ 3174 | static const char *proxy_get_name(struct GDBusProxy *proxy) | ^~~~~~~~~~~~~~ client/gatt.c:3190:20: error: invalid storage class for function ‘proxy_get_alias’ 3190 | static const char *proxy_get_alias(struct GDBusProxy *proxy) | ^~~~~~~~~~~~~~~ client/gatt.c:3232:1: error: expected declaration or statement at end of input 3232 | } | ^ At top level: client/gatt.c:3203:6: error: ‘gatt_clone_attribute’ defined but not used [-Werror=unused-function] 3203 | void gatt_clone_attribute(GDBusProxy *proxy, int argc, char *argv[]) | ^~~~~~~~~~~~~~~~~~~~ client/gatt.c:2961:6: error: ‘gatt_unregister_desc’ defined but not used [-Werror=unused-function] 2961 | void gatt_unregister_desc(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~ client/gatt.c:2881:6: error: ‘gatt_register_desc’ defined but not used [-Werror=unused-function] 2881 | void gatt_register_desc(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:2674:6: error: ‘gatt_unregister_chrc’ defined but not used [-Werror=unused-function] 2674 | void gatt_unregister_chrc(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~ client/gatt.c:2603:6: error: ‘gatt_register_chrc’ defined but not used [-Werror=unused-function] 2603 | void gatt_register_chrc(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~ client/gatt.c:1638:6: error: ‘gatt_unregister_include’ defined but not used [-Werror=unused-function] 1638 | void gatt_unregister_include(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1608:6: error: ‘gatt_register_include’ defined but not used [-Werror=unused-function] 1608 | void gatt_register_include(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~~ client/gatt.c:1573:6: error: ‘gatt_unregister_service’ defined but not used [-Werror=unused-function] 1573 | void gatt_unregister_service(DBusConnection *conn, GDBusProxy *proxy, | ^~~~~~~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors make[1]: *** [Makefile:7300: client/gatt.o] Error 1 make: *** [Makefile:4324: all] Error 2 --- Regards, Linux Bluetooth
diff --git a/client/gatt.c b/client/gatt.c index 13872c794..100a4eb90 100644 --- a/client/gatt.c +++ b/client/gatt.c @@ -1527,7 +1527,8 @@ void gatt_register_service(DBusConnection *conn, GDBusProxy *proxy, if (argc > 2) { service->handle = parse_handle(argv[2]); - if (!service->handle) + if (!service->handle) { + service_free(service); return bt_shell_noninteractive_quit(EXIT_FAILURE); } @@ -2622,8 +2623,10 @@ void gatt_register_chrc(DBusConnection *conn, GDBusProxy *proxy, if (argc > 3) { chrc->handle = parse_handle(argv[3]); - if (!chrc->handle) + if (!chrc->handle) { + chrc_free(chrc); return bt_shell_noninteractive_quit(EXIT_FAILURE); + } } if (g_dbus_register_interface(conn, chrc->path, CHRC_INTERFACE, @@ -2902,8 +2905,10 @@ void gatt_register_desc(DBusConnection *conn, GDBusProxy *proxy, if (argc > 3) { desc->handle = parse_handle(argv[3]); - if (!desc->handle) + if (!desc->handle) { + desc_free(desc); return bt_shell_noninteractive_quit(EXIT_FAILURE); + } } if (g_dbus_register_interface(conn, desc->path, DESC_INTERFACE,