1 /*
2  * Copyright 2021-2022 NXP
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef SWT_IP_TYPES_H
8 #define SWT_IP_TYPES_H
9 
10 /**
11 *   @file
12 *
13 *   @addtogroup Swt
14 *   @{
15 */
16 
17 #if defined(__cplusplus)
18 extern "C" {
19 #endif
20 
21 /*==================================================================================================
22 *                                        INCLUDE FILES
23 * 1) system and project includes
24 * 2) needed interfaces from external units
25 * 3) internal and external interfaces from this unit
26 ==================================================================================================*/
27 #include "Swt_Ip_Cfg_Defines.h"
28 
29 /*==================================================================================================
30 *                                 SOURCE FILE VERSION INFORMATION
31 ==================================================================================================*/
32 #define SWT_IP_TYPES_VENDOR_ID                    43
33 #define SWT_IP_TYPES_MODULE_ID                    102
34 #define SWT_IP_TYPES_AR_RELEASE_MAJOR_VERSION     4
35 #define SWT_IP_TYPES_AR_RELEASE_MINOR_VERSION     7
36 #define SWT_IP_TYPES_AR_RELEASE_REVISION_VERSION  0
37 #define SWT_IP_TYPES_SW_MAJOR_VERSION             0
38 #define SWT_IP_TYPES_SW_MINOR_VERSION             9
39 #define SWT_IP_TYPES_SW_PATCH_VERSION             0
40 
41 /*==================================================================================================
42 *                                       FILE VERSION CHECKS
43 ==================================================================================================*/
44 
45 /* Check if current file and Swt_Ip_Cfg_Defines configuration header file are of the same vendor */
46 #if (SWT_IP_TYPES_VENDOR_ID != SWT_IP_CFG_DEFINES_VENDOR_ID)
47 #error "Swt_Ip_Types.h and Swt_Ip_Cfg_Defines.h have different vendor ids"
48 #endif
49 
50 #if ((SWT_IP_TYPES_AR_RELEASE_MAJOR_VERSION    != SWT_IP_CFG_DEFINES_AR_RELEASE_MAJOR_VERSION) || \
51      (SWT_IP_TYPES_AR_RELEASE_MINOR_VERSION    != SWT_IP_CFG_DEFINES_AR_RELEASE_MINOR_VERSION) || \
52      (SWT_IP_TYPES_AR_RELEASE_REVISION_VERSION != SWT_IP_CFG_DEFINES_AR_RELEASE_REVISION_VERSION))
53 #error "AutoSar Version Numbers of Swt_Ip_Types.h and Swt_Ip_Cfg_Defines.h are different"
54 #endif
55 
56 #if ((SWT_IP_TYPES_SW_MAJOR_VERSION != SWT_IP_CFG_DEFINES_SW_MAJOR_VERSION) || \
57      (SWT_IP_TYPES_SW_MINOR_VERSION != SWT_IP_CFG_DEFINES_SW_MINOR_VERSION) || \
58      (SWT_IP_TYPES_SW_PATCH_VERSION != SWT_IP_CFG_DEFINES_SW_PATCH_VERSION))
59 #error "Software Version Numbers of Swt_Ip_Types.h and Swt_Ip_Cfg_Defines.h are different"
60 #endif
61 
62 /*==================================================================================================
63 *                                            CONSTANTS
64 ==================================================================================================*/
65 
66 /*==================================================================================================
67 *                                       DEFINES AND MACROS
68 ==================================================================================================*/
69 
70 #define SWT_IP_ALL_MAP_DISABLE ((uint8) 0x00)
71 #define SWT_IP_MAP0_ENABLE     ((uint8) 0x80)
72 #define SWT_IP_MAP1_ENABLE     ((uint8) 0x40)
73 #define SWT_IP_MAP2_ENABLE     ((uint8) 0x20)
74 #define SWT_IP_MAP3_ENABLE     ((uint8) 0x10)
75 #define SWT_IP_MAP4_ENABLE     ((uint8) 0x08)
76 #define SWT_IP_MAP5_ENABLE     ((uint8) 0x04)
77 #define SWT_IP_MAP6_ENABLE     ((uint8) 0x02)
78 #define SWT_IP_MAP7_ENABLE     ((uint8) 0x01)
79 #define SWT_IP_ALL_MAP_ENABLE  ((uint8) 0xFF)
80 
81 /*==================================================================================================
82 *                                              ENUMS
83 ==================================================================================================*/
84 
85 /** @brief       Enum defining the possible type values for SWT API
86 * @implements    Swt_Ip_StatusType_enumeration
87 */
88 typedef enum
89 {
90     SWT_IP_STATUS_SUCCESS   = 0x00,
91     SWT_IP_STATUS_ERROR     = 0x01,
92     SWT_IP_STATUS_TIMEOUT   = 0x02
93 } Swt_Ip_StatusType;
94 
95 /** @brief       Enum defining the possible lock types for the SWT
96 */
97 typedef enum
98 {
99     SWT_IP_UNLOCK           = 0x00,
100     SWT_IP_SOFTLOCK         = 0x01,
101     SWT_IP_HARDLOCK         = 0x02
102 } Swt_Ip_LockType;
103 
104 /** @brief      Enum defining the possible service modes for the SWT
105  */
106 typedef enum
107 {
108     SWT_IP_FS_SEQ_MODE    = 0x00U,     /* Fixed Service Sequence */
109     SWT_IP_KS_SEQ_MODE    = 0x01U,    /* Keyed Service Sequence */
110 } Swt_Ip_ServiceModeType;
111 
112 /*==================================================================================================
113 *                                  STRUCTURES AND OTHER TYPEDEFS
114 ==================================================================================================*/
115 
116 typedef void (*Swt_CallbackPtrType)(void);
117 
118 /** @brief       Structure defining the configuration parameters used for SWT
119 * @implements    Swt_Ip_ConfigType_struct
120 */
121 typedef struct
122 {
123     uint8                   u8MapEnBitmask;
124     boolean                 bEnResetOnInvalidAccess;
125 #if (defined(SWT_IP_HAS_STOP_MODE) && (SWT_IP_HAS_STOP_MODE == 1U))
126     boolean                 bEnRunInStopMode;
127 #endif
128     boolean                 bEnRunInDebugMode;
129     boolean                 bEnWindow;
130     boolean                 bEnInterrupt;
131     Swt_Ip_ServiceModeType      eServiceMode;
132     uint32                  u32TimeoutValue;
133     uint32                  u32WindowValue;
134     uint16                  u16InitialKey;
135     Swt_Ip_LockType         lockConfig;
136     Swt_CallbackPtrType     pfSwtCallback;
137 } Swt_Ip_ConfigType;
138 
139 /*==================================================================================================
140 *                                  GLOBAL VARIABLE DECLARATIONS
141 ==================================================================================================*/
142 
143 /*==================================================================================================
144 *                                       FUNCTION PROTOTYPES
145 ==================================================================================================*/
146 
147 #if defined(__cplusplus)
148 }
149 #endif
150 
151 /** @} */
152 
153 #endif /* SWT_IP_TYPES_H */
154