Line data Source code
1 0 : /* 2 : * Copyright (c) 2022 Laird Connectivity 3 : * Copyright (c) 2022 Nordic Semiconductor ASA 4 : * 5 : * SPDX-License-Identifier: Apache-2.0 6 : */ 7 : 8 : #ifndef H_MCUMGR_IMG_MGMT_CALLBACKS_ 9 : #define H_MCUMGR_IMG_MGMT_CALLBACKS_ 10 : 11 : #include <stdbool.h> 12 : #include <stdint.h> 13 : #include <zcbor_common.h> 14 : 15 : #ifdef __cplusplus 16 : extern "C" { 17 : #endif 18 : 19 : /* Dummy definitions, include zephyr/mgmt/mcumgr/grp/img_mgmt/img_mgmt.h for actual definitions */ 20 : struct img_mgmt_upload_action; 21 : struct img_mgmt_upload_req; 22 : 23 : /** 24 : * @brief MCUmgr img_mgmt callback API 25 : * @defgroup mcumgr_callback_api_img_mgmt MCUmgr img_mgmt callback API 26 : * @ingroup mcumgr_callback_api 27 : * @{ 28 : */ 29 : 30 : /** 31 : * Structure provided in the #MGMT_EVT_OP_IMG_MGMT_DFU_CHUNK notification callback: This callback 32 : * function is used to notify the application about a pending firmware upload packet from a client 33 : * and authorise or deny it. Upload will be allowed so long as all notification handlers return 34 : * #MGMT_ERR_EOK, if one returns an error then the upload will be denied. 35 : */ 36 1 : struct img_mgmt_upload_check { 37 : /** Action to take */ 38 1 : struct img_mgmt_upload_action *action; 39 : 40 : /** Upload request information */ 41 1 : struct img_mgmt_upload_req *req; 42 : }; 43 : 44 : /** 45 : * Structure provided in the #MGMT_EVT_OP_IMG_MGMT_IMAGE_SLOT_STATE notification callback: This 46 : * callback function is used to allow applications or modules append custom fields to the image 47 : * slot state response. 48 : */ 49 1 : struct img_mgmt_state_slot_encode { 50 0 : bool *ok; 51 0 : zcbor_state_t *zse; 52 0 : const uint32_t slot; 53 0 : const char *version; 54 0 : const uint8_t *hash; 55 0 : const int flags; 56 : }; 57 : 58 : /** 59 : * Structure provided in the #MGMT_EVT_OP_IMG_MGMT_SLOT_INFO_IMAGE notification callback: This 60 : * callback function is called once per image when the slot info command is used, it can be used 61 : * to return additional information/fields in the response. 62 : */ 63 1 : struct img_mgmt_slot_info_image { 64 : /** The image that is currently being enumerated. */ 65 1 : const uint8_t image; 66 : 67 : /** 68 : * The zcbor encoder which is currently being used to output information, additional fields 69 : * can be added using this. 70 : */ 71 1 : zcbor_state_t *zse; 72 : }; 73 : 74 : /** 75 : * Structure provided in the #MGMT_EVT_OP_IMG_MGMT_SLOT_INFO_SLOT notification callback: This 76 : * callback function is called once per slot per image when the slot info command is used, it can 77 : * be used to return additional information/fields in the response. 78 : */ 79 1 : struct img_mgmt_slot_info_slot { 80 : /** The image that is currently being enumerated. */ 81 1 : const uint8_t image; 82 : 83 : /** The slot that is currently being enumerated. */ 84 1 : const uint8_t slot; 85 : 86 : /** Flash area of the slot that is current being enumerated. */ 87 1 : const struct flash_area *fa; 88 : 89 : /** 90 : * The zcbor encoder which is currently being used to output information, additional fields 91 : * can be added using this. 92 : */ 93 1 : zcbor_state_t *zse; 94 : }; 95 : 96 : /** 97 : * @} 98 : */ 99 : 100 : #ifdef __cplusplus 101 : } 102 : #endif 103 : 104 : #endif