1 /* 2 * Copyright (c) 2024 Nordic Semiconductor ASA 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 /* clang-format off */ 8 9 #ifndef NRFS_REQS_COMMON_H 10 #define NRFS_REQS_COMMON_H 11 12 #define NRFS_REQUEST_ID_BITS 7uL 13 #define NRFS_NO_RSP_BITS 1uL 14 #define NRFS_SERVICE_ID_BITS 6uL 15 #define NRFS_FILTER_ERR_BITS 1uL 16 #define NRFS_UNSOLICITED_BITS 1uL 17 18 #define NRFS_REQUEST_ID_BITPOS 0uL 19 #define NRFS_NO_RSP_BITPOS (NRFS_REQUEST_ID_BITS) 20 #define NRFS_SERVICE_ID_BITPOS (NRFS_REQUEST_ID_BITS + NRFS_NO_RSP_BITS) 21 #define NRFS_FILTER_ERR_BITPOS (NRFS_REQUEST_ID_BITS + NRFS_NO_RSP_BITS + NRFS_SERVICE_ID_BITS) 22 #define NRFS_UNSOLICITED_BITPOS (NRFS_REQUEST_ID_BITS + NRFS_NO_RSP_BITS + NRFS_SERVICE_ID_BITS + NRFS_FILTER_ERR_BITS) 23 24 #define NRFS_REQUEST_ID_MASK (((1 << NRFS_REQUEST_ID_BITS) - 1) << NRFS_REQUEST_ID_BITPOS) 25 #define NRFS_NO_RSP_MASK (((1 << NRFS_NO_RSP_BITS) - 1) << NRFS_NO_RSP_BITPOS) 26 #define NRFS_SERVICE_ID_MASK (((1 << NRFS_SERVICE_ID_BITS) - 1) << NRFS_SERVICE_ID_BITPOS) 27 #define NRFS_FILTER_ERR_MASK (((1 << NRFS_FILTER_ERR_BITS) - 1) << NRFS_FILTER_ERR_BITPOS) 28 #define NRFS_UNSOLICITED_MASK (((1 << NRFS_UNSOLICITED_BITS) - 1) << NRFS_UNSOLICITED_BITPOS) 29 30 #define NRFS_REQUEST_ID_DEF(_srv_id, _req_id) (((uint16_t)(_srv_id) << NRFS_SERVICE_ID_BITPOS) | \ 31 ((uint16_t)(_req_id) << NRFS_REQUEST_ID_BITPOS)) 32 33 #define NRFS_REQUEST_ID_GET(_req) (((_req) & (NRFS_REQUEST_ID_MASK | NRFS_SERVICE_ID_MASK))) 34 35 #define NRFS_SERVICE_ID_GET(_req) (((_req) & NRFS_SERVICE_ID_MASK) >> NRFS_SERVICE_ID_BITPOS) 36 37 #define NRFS_NO_RSP_GET(_req) (((_req) & NRFS_NO_RSP_MASK) >> NRFS_NO_RSP_BITPOS) 38 39 #define NRFS_NO_RSP_SET(_req) ((_req) |= NRFS_NO_RSP_MASK) 40 41 #define NRFS_FILTER_ERR_GET(_req) (((_req) & NRFS_FILTER_ERR_MASK) >> NRFS_FILTER_ERR_BITPOS) 42 43 #define NRFS_FILTER_ERR_SET(_req) ((_req) |= NRFS_FILTER_ERR_MASK) 44 45 /* Warning! All "UNSOLICITED" features are not supported. This is intended for possible future use. */ 46 #define NRFS_UNSOLICITED_GET(_req) (((_req) & NRFS_UNSOLICITED_MASK) >> NRFS_UNSOLICITED_BITPOS) 47 48 /* Warning! All "UNSOLICITED" features are not supported. This is intended for possible future use. */ 49 #define NRFS_UNSOLICITED_SET(_req) ((_req) |= NRFS_UNSOLICITED_MASK) 50 51 #ifdef __cplusplus 52 extern "C" { 53 #endif 54 55 enum { 56 NRFS_SERVICE_ID_CLOCK, 57 NRFS_SERVICE_ID_DIAG, 58 NRFS_SERVICE_ID_DVFS, 59 NRFS_SERVICE_ID_GDPWR, 60 NRFS_SERVICE_ID_MRAM, 61 NRFS_SERVICE_ID_PMIC, 62 NRFS_SERVICE_ID_RESET, 63 NRFS_SERVICE_ID_TEMP, 64 NRFS_SERVICE_ID_USB, 65 NRFS_SERVICE_ID_GDFS, 66 NRFS_SERVICE_ID_SWEXT, 67 }; 68 69 #ifdef __cplusplus 70 } 71 #endif 72 73 /* clang-format on */ 74 75 #endif /* NRFS_REQS_COMMON_H */ 76