Line data Source code
1 0 : /* 2 : * Copyright (c) 2023 Nordic Semiconductor ASA 3 : * 4 : * SPDX-License-Identifier: Apache-2.0 5 : */ 6 : 7 : #ifndef H_MCUMGR_SETTINGS_MGMT_CALLBACKS_ 8 : #define H_MCUMGR_SETTINGS_MGMT_CALLBACKS_ 9 : 10 : #ifdef __cplusplus 11 : extern "C" { 12 : #endif 13 : 14 : /** 15 : * @brief MCUmgr settings_mgmt callback API 16 : * @defgroup mcumgr_callback_api_settings_mgmt MCUmgr settings_mgmt callback API 17 : * @ingroup mcumgr_callback_api 18 : * @{ 19 : */ 20 : 21 0 : enum settings_mgmt_access_types { 22 : SETTINGS_ACCESS_READ, 23 : SETTINGS_ACCESS_WRITE, 24 : SETTINGS_ACCESS_DELETE, 25 : SETTINGS_ACCESS_COMMIT, 26 : SETTINGS_ACCESS_LOAD, 27 : SETTINGS_ACCESS_SAVE, 28 : }; 29 : 30 : /** 31 : * Structure provided in the #MGMT_EVT_OP_SETTINGS_MGMT_ACCESS notification callback: This 32 : * callback function is used to notify the application about a pending setting 33 : * read/write/delete/load/save/commit request and to authorise or deny it. Access will be allowed 34 : * so long as no handlers return an error, if one returns an error then access will be denied. 35 : */ 36 1 : struct settings_mgmt_access { 37 : /** Type of access */ 38 1 : enum settings_mgmt_access_types access; 39 : 40 : /** 41 : * Key name for accesses (only set for SETTINGS_ACCESS_READ, SETTINGS_ACCESS_WRITE and 42 : * SETTINGS_ACCESS_DELETE). Note that this can be changed by handlers to redirect settings 43 : * access if needed (as long as it does not exceed the maximum setting string size) if 44 : * CONFIG_MCUMGR_GRP_SETTINGS_BUFFER_TYPE_STACK is selected, of maximum size 45 : * CONFIG_MCUMGR_GRP_SETTINGS_NAME_LEN. 46 : * 47 : * Note: This string *must* be NULL terminated. 48 : */ 49 : #ifdef CONFIG_MCUMGR_GRP_SETTINGS_BUFFER_TYPE_HEAP 50 : const char *name; 51 : #else 52 1 : char *name; 53 : #endif 54 : 55 : /** Data provided by the user (only set for SETTINGS_ACCESS_WRITE) */ 56 1 : const uint8_t *val; 57 : 58 : /** Length of data provided by the user (only set for SETTINGS_ACCESS_WRITE) */ 59 1 : const size_t *val_length; 60 : }; 61 : 62 : /** 63 : * @} 64 : */ 65 : 66 : #ifdef __cplusplus 67 : } 68 : #endif 69 : 70 : #endif