1 /* 2 * @ : Copyright (c) 2021 Phytium Information Technology, Inc. 3 * 4 * SPDX-License-Identifier: Apache-2.0. 5 * 6 * @Date: 2021-04-07 09:53:30 7 * @LastEditTime: 2021-05-24 10:12:07 8 * @Description: This files is for error code functions 9 * 10 * @Modify History: 11 * Ver Who Date Changes 12 * ----- ------ -------- -------------------------------------- 13 */ 14 15 #ifndef _FT_ERROR_CODE_H 16 #define _FT_ERROR_CODE_H 17 18 #include "ft_status.h" 19 #include "ft_types.h" 20 21 typedef ft_base_t ft_error_t; 22 23 /* 系统错误码模块定义 */ 24 typedef enum _ft_errcode_module_mask 25 { 26 errModGeneral = 0, 27 errModBsp, 28 ERR_MODE_UART, 29 errModeI2c, 30 errModeGmac, 31 errModeSdCtrl, 32 errCan, 33 errGicV3, 34 errQspi, 35 ERR_MODE_SD_MMC, 36 ERR_MODE_SPI, 37 38 errModMaxMask = 255, 39 } ft_errcode_module_mask_t; 40 41 /* BSP模块的错误子模块定义 */ 42 typedef enum _ft_errcode_bsp_mask 43 { 44 errBspGeneral = 0, 45 errBspClk, 46 errBspRtc, 47 errPort, 48 errBspModMaxMask = 255 49 } ft_errcode_bsp_mask_t; 50 51 #define FT_ERRCODE_SYS_MODULE_OFFSET 24 52 #define FT_ERRCODE_SUB_MODULE_OFFSET 16 53 54 #define FT_ERRCODE_SYS_MODULE_MASK (0xff << FT_ERRCODE_SYS_MODULE_OFFSET) /* bit 24 .. 31 */ 55 #define FT_ERRCODE_SUB_MODULE_MASK (0xff << FT_ERRCODE_SUB_MODULE_OFFSET) /* bit 16 .. 23 */ 56 #define FT_ERRCODE_TAIL_VALUE_MASK (0xffff) /* bit 1 .. 15 */ 57 58 /* Offset error code */ 59 #define FT_ERRCODE_OFFSET(code, offset, mask) \ 60 (((code) << offset) & mask) 61 62 /* Assembly error code */ 63 #define FT_MAKE_ERRCODE(sys_mode, sub_mode, tail) \ 64 ((FT_ERRCODE_OFFSET(sys_mode, FT_ERRCODE_SYS_MODULE_OFFSET, FT_ERRCODE_SYS_MODULE_MASK)) | \ 65 (FT_ERRCODE_OFFSET(sub_mode, FT_ERRCODE_SUB_MODULE_OFFSET, FT_ERRCODE_SUB_MODULE_MASK)) | \ 66 (tail & FT_ERRCODE_TAIL_VALUE_MASK)) 67 #define FT_CODE_ERR FT_MAKE_ERRCODE 68 69 #define ERR_SUCCESS FT_MAKE_ERRCODE(errModGeneral, errBspGeneral, FST_SUCCESS) /* 成功 */ 70 #define ERR_GENERAL FT_MAKE_ERRCODE(errModGeneral, errBspGeneral, FST_FAILURE) /* 一般错误 */ 71 72 #endif 73