summaryrefslogtreecommitdiff
path: root/bsp/renesas/ra4e2-eco/ra/fsp/inc/api/fsp_common_api.h
blob: 79bd5efc7a5707298483990e01b366703e31ffe2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
/*
* Copyright (c) 2020 - 2025 Renesas Electronics Corporation and/or its affiliates
*
* SPDX-License-Identifier: BSD-3-Clause
*/

#ifndef FSP_COMMON_API_H
#define FSP_COMMON_API_H

/***********************************************************************************************************************
 * Includes
 **********************************************************************************************************************/
#include <assert.h>
#include <stdint.h>

/* Includes FSP version macros. */
#include "fsp_version.h"

/*******************************************************************************************************************//**
 * @ingroup RENESAS_COMMON
 * @defgroup RENESAS_ERROR_CODES Common Error Codes
 * All FSP modules share these common error codes.
 * @{
 **********************************************************************************************************************/

/**********************************************************************************************************************
 * Macro definitions
 **********************************************************************************************************************/

/** This macro is used to suppress compiler messages about a parameter not being used in a function. The nice thing
 * about using this implementation is that it does not take any extra RAM or ROM. */

#define FSP_PARAMETER_NOT_USED(p)    (void) ((p))

/** Determine if a C++ compiler is being used.
 * If so, ensure that standard C is used to process the API information.  */
#if defined(__cplusplus)
 #define FSP_CPP_HEADER    extern "C" {
 #define FSP_CPP_FOOTER    }
#else
 #define FSP_CPP_HEADER
 #define FSP_CPP_FOOTER
#endif

/** FSP Header and Footer definitions */
#define FSP_HEADER    FSP_CPP_HEADER
#define FSP_FOOTER    FSP_CPP_FOOTER

/* Common macro for FSP header files. There is also a corresponding FSP_FOOTER macro at the end of this file. */
FSP_HEADER

/** Macro to be used when argument to function is ignored since function call is NSC and the parameter is statically
 *  defined on the Secure side. */
#define FSP_SECURE_ARGUMENT    (NULL)

/**********************************************************************************************************************
 * Typedef definitions
 **********************************************************************************************************************/

/** Common error codes */
typedef enum e_fsp_err
{
    FSP_SUCCESS = 0,

    FSP_ERR_ASSERTION             = 1,                      /* /< A critical assertion has failed */
    FSP_ERR_INVALID_POINTER       = 2,                      /* /< Pointer points to invalid memory location */
    FSP_ERR_INVALID_ARGUMENT      = 3,                      /* /< Invalid input parameter */
    FSP_ERR_INVALID_CHANNEL       = 4,                      /* /< Selected channel does not exist */
    FSP_ERR_INVALID_MODE          = 5,                      /* /< Unsupported or incorrect mode */
    FSP_ERR_UNSUPPORTED           = 6,                      /* /< Selected mode not supported by this API */
    FSP_ERR_NOT_OPEN              = 7,                      /* /< Requested channel is not configured or API not open */
    FSP_ERR_IN_USE                = 8,                      /* /< Channel/peripheral is running/busy */
    FSP_ERR_OUT_OF_MEMORY         = 9,                      /* /< Allocate more memory in the driver's cfg.h */
    FSP_ERR_HW_LOCKED             = 10,                     /* /< Hardware is locked */
    FSP_ERR_IRQ_BSP_DISABLED      = 11,                     /* /< IRQ not enabled in BSP */
    FSP_ERR_OVERFLOW              = 12,                     /* /< Hardware overflow */
    FSP_ERR_UNDERFLOW             = 13,                     /* /< Hardware underflow */
    FSP_ERR_ALREADY_OPEN          = 14,                     /* /< Requested channel is already open in a different configuration */
    FSP_ERR_APPROXIMATION         = 15,                     /* /< Could not set value to exact result */
    FSP_ERR_CLAMPED               = 16,                     /* /< Value had to be limited for some reason */
    FSP_ERR_INVALID_RATE          = 17,                     /* /< Selected rate could not be met */
    FSP_ERR_ABORTED               = 18,                     /* /< An operation was aborted */
    FSP_ERR_NOT_ENABLED           = 19,                     /* /< Requested operation is not enabled */
    FSP_ERR_TIMEOUT               = 20,                     /* /< Timeout error */
    FSP_ERR_INVALID_BLOCKS        = 21,                     /* /< Invalid number of blocks supplied */
    FSP_ERR_INVALID_ADDRESS       = 22,                     /* /< Invalid address supplied */
    FSP_ERR_INVALID_SIZE          = 23,                     /* /< Invalid size/length supplied for operation */
    FSP_ERR_WRITE_FAILED          = 24,                     /* /< Write operation failed */
    FSP_ERR_ERASE_FAILED          = 25,                     /* /< Erase operation failed */
    FSP_ERR_INVALID_CALL          = 26,                     /* /< Invalid function call is made */
    FSP_ERR_INVALID_HW_CONDITION  = 27,                     /* /< Detected hardware is in invalid condition */
    FSP_ERR_INVALID_FACTORY_FLASH = 28,                     /* /< Factory flash is not available on this MCU */
    FSP_ERR_INVALID_STATE         = 30,                     /* /< API or command not valid in the current state */
    FSP_ERR_NOT_ERASED            = 31,                     /* /< Erase verification failed */
    FSP_ERR_SECTOR_RELEASE_FAILED = 32,                     /* /< Sector release failed */
    FSP_ERR_NOT_INITIALIZED       = 33,                     /* /< Required initialization not complete */
    FSP_ERR_NOT_FOUND             = 34,                     /* /< The requested item could not be found */
    FSP_ERR_NO_CALLBACK_MEMORY    = 35,                     /* /< Non-secure callback memory not provided for non-secure callback */
    FSP_ERR_BUFFER_EMPTY          = 36,                     /* /< No data available in buffer */
    FSP_ERR_INVALID_DATA          = 37,                     /* /< Accuracy of data is not guaranteed */

    /* Start of RTOS only error codes */
    FSP_ERR_INTERNAL     = 100,                             /* /< Internal error */
    FSP_ERR_WAIT_ABORTED = 101,                             /* /< Wait aborted */

    /* Start of UART specific */
    FSP_ERR_FRAMING            = 200,                       /* /< Framing error occurs */
    FSP_ERR_BREAK_DETECT       = 201,                       /* /< Break signal detects */
    FSP_ERR_PARITY             = 202,                       /* /< Parity error occurs */
    FSP_ERR_RXBUF_OVERFLOW     = 203,                       /* /< Receive queue overflow */
    FSP_ERR_QUEUE_UNAVAILABLE  = 204,                       /* /< Can't open s/w queue */
    FSP_ERR_INSUFFICIENT_SPACE = 205,                       /* /< Not enough space in transmission circular buffer */
    FSP_ERR_INSUFFICIENT_DATA  = 206,                       /* /< Not enough data in receive circular buffer */

    /* Start of SPI specific */
    FSP_ERR_TRANSFER_ABORTED = 300,                         /* /< The data transfer was aborted. */
    FSP_ERR_MODE_FAULT       = 301,                         /* /< Mode fault error. */
    FSP_ERR_READ_OVERFLOW    = 302,                         /* /< Read overflow. */
    FSP_ERR_SPI_PARITY       = 303,                         /* /< Parity error. */
    FSP_ERR_OVERRUN          = 304,                         /* /< Overrun error. */

    /* Start of CGC Specific */
    FSP_ERR_CLOCK_INACTIVE        = 400,                    /* /< Inactive clock specified as system clock. */
    FSP_ERR_CLOCK_ACTIVE          = 401,                    /* /< Active clock source cannot be modified without stopping first. */
    FSP_ERR_NOT_STABILIZED        = 403,                    /* /< Clock has not stabilized after its been turned on/off */
    FSP_ERR_PLL_SRC_INACTIVE      = 404,                    /* /< PLL initialization attempted when PLL source is turned off */
    FSP_ERR_OSC_STOP_DET_ENABLED  = 405,                    /* /< Illegal attempt to stop LOCO when Oscillation stop is enabled */
    FSP_ERR_OSC_STOP_DETECTED     = 406,                    /* /< The Oscillation stop detection status flag is set */
    FSP_ERR_OSC_STOP_CLOCK_ACTIVE = 407,                    /* /< Attempt to clear Oscillation Stop Detect Status with PLL/MAIN_OSC active */
    FSP_ERR_CLKOUT_EXCEEDED       = 408,                    /* /< Output on target output clock pin exceeds maximum supported limit */
    FSP_ERR_USB_MODULE_ENABLED    = 409,                    /* /< USB clock configure request with USB Module enabled */
    FSP_ERR_HARDWARE_TIMEOUT      = 410,                    /* /< A register read or write timed out */
    FSP_ERR_LOW_VOLTAGE_MODE      = 411,                    /* /< Invalid clock setting attempted in low voltage mode */

    /* Start of FLASH Specific */
    FSP_ERR_PE_FAILURE             = 500,                   /* /< Unable to enter Programming mode. */
    FSP_ERR_CMD_LOCKED             = 501,                   /* /< Peripheral in command locked state */
    FSP_ERR_FCLK                   = 502,                   /* /< FCLK must be >= 4 MHz */
    FSP_ERR_INVALID_LINKED_ADDRESS = 503,                   /* /< Function or data are linked at an invalid region of memory */
    FSP_ERR_BLANK_CHECK_FAILED     = 504,                   /* /< Blank check operation failed */

    /* Start of CAC Specific */
    FSP_ERR_INVALID_CAC_REF_CLOCK = 600,                    /* /< Measured clock rate < reference clock rate */

    /* Start of IIRFA Specific */
    FSP_ERR_INVALID_RESULT = 700,                           /* /< The result of one or more calculations was +/- infinity. */

    /* Start of GLCD Specific */
    FSP_ERR_CLOCK_GENERATION           = 1000,              /* /< Clock cannot be specified as system clock */
    FSP_ERR_INVALID_TIMING_SETTING     = 1001,              /* /< Invalid timing parameter */
    FSP_ERR_INVALID_LAYER_SETTING      = 1002,              /* /< Invalid layer parameter */
    FSP_ERR_INVALID_ALIGNMENT          = 1003,              /* /< Invalid memory alignment found */
    FSP_ERR_INVALID_GAMMA_SETTING      = 1004,              /* /< Invalid gamma correction parameter */
    FSP_ERR_INVALID_LAYER_FORMAT       = 1005,              /* /< Invalid color format in layer */
    FSP_ERR_INVALID_UPDATE_TIMING      = 1006,              /* /< Invalid timing for register update */
    FSP_ERR_INVALID_CLUT_ACCESS        = 1007,              /* /< Invalid access to CLUT entry */
    FSP_ERR_INVALID_FADE_SETTING       = 1008,              /* /< Invalid fade-in/fade-out setting */
    FSP_ERR_INVALID_BRIGHTNESS_SETTING = 1009,              /* /< Invalid gamma correction parameter */

    /* Start of JPEG Specific */
    FSP_ERR_JPEG_ERR                                = 1100, /* /< JPEG error */
    FSP_ERR_JPEG_SOI_NOT_DETECTED                   = 1101, /* /< SOI not detected until EOI detected. */
    FSP_ERR_JPEG_SOF1_TO_SOFF_DETECTED              = 1102, /* /< SOF1 to SOFF detected. */
    FSP_ERR_JPEG_UNSUPPORTED_PIXEL_FORMAT           = 1103, /* /< Unprovided pixel format detected. */
    FSP_ERR_JPEG_SOF_ACCURACY_ERROR                 = 1104, /* /< SOF accuracy error: other than 8 detected. */
    FSP_ERR_JPEG_DQT_ACCURACY_ERROR                 = 1105, /* /< DQT accuracy error: other than 0 detected. */
    FSP_ERR_JPEG_COMPONENT_ERROR1                   = 1106, /* /< Component error 1: the number of SOF0 header components detected is other than 1, 3, or 4. */
    FSP_ERR_JPEG_COMPONENT_ERROR2                   = 1107, /* /< Component error 2: the number of components differs between SOF0 header and SOS. */
    FSP_ERR_JPEG_SOF0_DQT_DHT_NOT_DETECTED          = 1108, /* /< SOF0, DQT, and DHT not detected when SOS detected. */
    FSP_ERR_JPEG_SOS_NOT_DETECTED                   = 1109, /* /< SOS not detected: SOS not detected until EOI detected. */
    FSP_ERR_JPEG_EOI_NOT_DETECTED                   = 1110, /* /< EOI not detected (default) */
    FSP_ERR_JPEG_RESTART_INTERVAL_DATA_NUMBER_ERROR = 1111, /* /< Restart interval data number error detected. */
    FSP_ERR_JPEG_IMAGE_SIZE_ERROR                   = 1112, /* /< Image size error detected. */
    FSP_ERR_JPEG_LAST_MCU_DATA_NUMBER_ERROR         = 1113, /* /< Last MCU data number error detected. */
    FSP_ERR_JPEG_BLOCK_DATA_NUMBER_ERROR            = 1114, /* /< Block data number error detected. */
    FSP_ERR_JPEG_BUFFERSIZE_NOT_ENOUGH              = 1115, /* /< User provided buffer size not enough */
    FSP_ERR_JPEG_UNSUPPORTED_IMAGE_SIZE             = 1116, /* /< JPEG Image size is not aligned with MCU */

    /* Start of touch panel framework specific */
    FSP_ERR_CALIBRATE_FAILED = 1200,                        /* /< Calibration failed */

    /* Start of IIRFA specific */
    FSP_ERR_IIRFA_ECC_1BIT = 1300,                          /* /< 1-bit ECC error detected */
    FSP_ERR_IIRFA_ECC_2BIT = 1301,                          /* /< 2-bit ECC error detected */

    /* Start of IP specific */
    FSP_ERR_IP_HARDWARE_NOT_PRESENT = 1400,                 /* /< Requested IP does not exist on this device */
    FSP_ERR_IP_UNIT_NOT_PRESENT     = 1401,                 /* /< Requested unit does not exist on this device */
    FSP_ERR_IP_CHANNEL_NOT_PRESENT  = 1402,                 /* /< Requested channel does not exist on this device */

    /* Start of USB specific */
    FSP_ERR_USB_FAILED      = 1500,
    FSP_ERR_USB_BUSY        = 1501,
    FSP_ERR_USB_SIZE_SHORT  = 1502,
    FSP_ERR_USB_SIZE_OVER   = 1503,
    FSP_ERR_USB_NOT_OPEN    = 1504,
    FSP_ERR_USB_NOT_SUSPEND = 1505,
    FSP_ERR_USB_PARAMETER   = 1506,

    /* Start of Message framework specific */
    FSP_ERR_NO_MORE_BUFFER           = 2000,         /* /< No more buffer found in the memory block pool */
    FSP_ERR_ILLEGAL_BUFFER_ADDRESS   = 2001,         /* /< Buffer address is out of block memory pool */
    FSP_ERR_INVALID_WORKBUFFER_SIZE  = 2002,         /* /< Work buffer size is invalid */
    FSP_ERR_INVALID_MSG_BUFFER_SIZE  = 2003,         /* /< Message buffer size is invalid */
    FSP_ERR_TOO_MANY_BUFFERS         = 2004,         /* /< Number of buffer is too many */
    FSP_ERR_NO_SUBSCRIBER_FOUND      = 2005,         /* /< No message subscriber found */
    FSP_ERR_MESSAGE_QUEUE_EMPTY      = 2006,         /* /< No message found in the message queue */
    FSP_ERR_MESSAGE_QUEUE_FULL       = 2007,         /* /< No room for new message in the message queue */
    FSP_ERR_ILLEGAL_SUBSCRIBER_LISTS = 2008,         /* /< Message subscriber lists is illegal */
    FSP_ERR_BUFFER_RELEASED          = 2009,         /* /< Buffer has been released */

    /* Start of 2DG Driver specific */
    FSP_ERR_D2D_ERROR_INIT      = 3000,              /* /< D/AVE 2D has an error in the initialization */
    FSP_ERR_D2D_ERROR_DEINIT    = 3001,              /* /< D/AVE 2D has an error in the initialization */
    FSP_ERR_D2D_ERROR_RENDERING = 3002,              /* /< D/AVE 2D has an error in the rendering */
    FSP_ERR_D2D_ERROR_SIZE      = 3003,              /* /< D/AVE 2D has an error in the rendering */

    /* Start of ETHER Driver specific */
    FSP_ERR_ETHER_ERROR_NO_DATA              = 4000, /* /< No Data in Receive buffer. */
    FSP_ERR_ETHER_ERROR_LINK                 = 4001, /* /< ETHERC/EDMAC has an error in the Auto-negotiation */
    FSP_ERR_ETHER_ERROR_MAGIC_PACKET_MODE    = 4002, /* /< As a Magic Packet is being detected, and transmission/reception is not enabled */
    FSP_ERR_ETHER_ERROR_TRANSMIT_BUFFER_FULL = 4003, /* /< Transmit buffer is not empty */
    FSP_ERR_ETHER_ERROR_FILTERING            = 4004, /* /< Detect multicast frame when multicast frame filtering enable */
    FSP_ERR_ETHER_ERROR_PHY_COMMUNICATION    = 4005, /* /< ETHERC/EDMAC has an error in the phy communication */
    FSP_ERR_ETHER_RECEIVE_BUFFER_ACTIVE      = 4006, /* /< Receive buffer is active. */

    /* Start of ETHER_PHY Driver specific */
    FSP_ERR_ETHER_PHY_ERROR_LINK = 5000,             /* /< PHY is not link up. */
    FSP_ERR_ETHER_PHY_NOT_READY  = 5001,             /* /< PHY has an error in the Auto-negotiation */

    /* Start of BYTEQ library specific */
    FSP_ERR_QUEUE_FULL  = 10000,                     /* /< Queue is full, cannot queue another data */
    FSP_ERR_QUEUE_EMPTY = 10001,                     /* /< Queue is empty, no data to dequeue */

    /* Start of CTSU Driver specific */
    FSP_ERR_CTSU_SCANNING              = 6000,       /* /< Scanning. */
    FSP_ERR_CTSU_NOT_GET_DATA          = 6001,       /* /< Not processed previous scan data. */
    FSP_ERR_CTSU_INCOMPLETE_TUNING     = 6002,       /* /< Incomplete initial offset tuning. */
    FSP_ERR_CTSU_DIAG_NOT_YET          = 6003,       /* /< Diagnosis of data collected no yet. */
    FSP_ERR_CTSU_DIAG_LDO_OVER_VOLTAGE = 6004,       /* /< Diagnosis of LDO over voltage failed. */
    FSP_ERR_CTSU_DIAG_CCO_HIGH         = 6005,       /* /< Diagnosis of CCO into 19.2uA failed. */
    FSP_ERR_CTSU_DIAG_CCO_LOW          = 6006,       /* /< Diagnosis of CCO into 2.4uA failed. */
    FSP_ERR_CTSU_DIAG_SSCG             = 6007,       /* /< Diagnosis of SSCG frequency failed. */
    FSP_ERR_CTSU_DIAG_DAC              = 6008,       /* /< Diagnosis of non-touch count value failed. */
    FSP_ERR_CTSU_DIAG_OUTPUT_VOLTAGE   = 6009,       /* /< Diagnosis of LDO output voltage failed. */
    FSP_ERR_CTSU_DIAG_OVER_VOLTAGE     = 6010,       /* /< Diagnosis of over voltage detection circuit failed. */
    FSP_ERR_CTSU_DIAG_OVER_CURRENT     = 6011,       /* /< Diagnosis of over current detection circuit failed. */
    FSP_ERR_CTSU_DIAG_LOAD_RESISTANCE  = 6012,       /* /< Diagnosis of LDO internal resistance value failed. */
    FSP_ERR_CTSU_DIAG_CURRENT_SOURCE   = 6013,       /* /< Diagnosis of Current source value failed. */
    FSP_ERR_CTSU_DIAG_SENSCLK_GAIN     = 6014,       /* /< Diagnosis of SENSCLK frequency gain failed. */
    FSP_ERR_CTSU_DIAG_SUCLK_GAIN       = 6015,       /* /< Diagnosis of SUCLK frequency gain failed. */
    FSP_ERR_CTSU_DIAG_CLOCK_RECOVERY   = 6016,       /* /< Diagnosis of SUCLK clock recovery function failed. */
    FSP_ERR_CTSU_DIAG_CFC_GAIN         = 6017,       /* /< Diagnosis of CFC oscillator gain failed. */

    /* Start of SDMMC specific */
    FSP_ERR_CARD_INIT_FAILED     = 40000,            /* /< SD card or eMMC device failed to initialize. */
    FSP_ERR_CARD_NOT_INSERTED    = 40001,            /* /< SD card not installed. */
    FSP_ERR_DEVICE_BUSY          = 40002,            /* /< Device is holding DAT0 low or another operation is ongoing. */
    FSP_ERR_CARD_NOT_INITIALIZED = 40004,            /* /< SD card was removed. */
    FSP_ERR_CARD_WRITE_PROTECTED = 40005,            /* /< Media is write protected. */
    FSP_ERR_TRANSFER_BUSY        = 40006,            /* /< Transfer in progress. */
    FSP_ERR_RESPONSE             = 40007,            /* /< Card did not respond or responded with an error. */

    /* Start of FX_IO specific */
    FSP_ERR_MEDIA_FORMAT_FAILED = 50000,             /* /< Media format failed. */
    FSP_ERR_MEDIA_OPEN_FAILED   = 50001,             /* /< Media open failed. */

    /* Start of CAN specific */
    FSP_ERR_CAN_DATA_UNAVAILABLE   = 60000,          /* /< No data available. */
    FSP_ERR_CAN_MODE_SWITCH_FAILED = 60001,          /* /< Switching operation modes failed. */
    FSP_ERR_CAN_INIT_FAILED        = 60002,          /* /< Hardware initialization failed. */
    FSP_ERR_CAN_TRANSMIT_NOT_READY = 60003,          /* /< Transmit in progress. */
    FSP_ERR_CAN_RECEIVE_MAILBOX    = 60004,          /* /< Mailbox is setup as a receive mailbox. */
    FSP_ERR_CAN_TRANSMIT_MAILBOX   = 60005,          /* /< Mailbox is setup as a transmit mailbox. */
    FSP_ERR_CAN_MESSAGE_LOST       = 60006,          /* /< Receive message has been overwritten or overrun. */
    FSP_ERR_CAN_TRANSMIT_FIFO_FULL = 60007,          /* /< Transmit FIFO is full. */

    /* Start of SF_WIFI Specific */
    FSP_ERR_WIFI_CONFIG_FAILED    = 70000,           /* /< WiFi module Configuration failed. */
    FSP_ERR_WIFI_INIT_FAILED      = 70001,           /* /< WiFi module initialization failed. */
    FSP_ERR_WIFI_TRANSMIT_FAILED  = 70002,           /* /< Transmission failed */
    FSP_ERR_WIFI_INVALID_MODE     = 70003,           /* /< API called when provisioned in client mode */
    FSP_ERR_WIFI_FAILED           = 70004,           /* /< WiFi Failed. */
    FSP_ERR_WIFI_SCAN_COMPLETE    = 70005,           /* /< Wifi scan has completed. */
    FSP_ERR_WIFI_AP_NOT_CONNECTED = 70006,           /* /< WiFi module is not connected to access point */
    FSP_ERR_WIFI_UNKNOWN_AT_CMD   = 70007,           /* /< DA16XXX Unknown AT command Error */
    FSP_ERR_WIFI_INSUF_PARAM      = 70008,           /* /< DA16XXX Insufficient parameter */
    FSP_ERR_WIFI_TOO_MANY_PARAMS  = 70009,           /* /< DA16XXX Too many parameters */
    FSP_ERR_WIFI_INV_PARAM_VAL    = 70010,           /* /< DA16XXX Wrong parameter value */
    FSP_ERR_WIFI_NO_RESULT        = 70011,           /* /< DA16XXX No result */
    FSP_ERR_WIFI_RSP_BUF_OVFLW    = 70012,           /* /< DA16XXX Response buffer overflow */
    FSP_ERR_WIFI_FUNC_NOT_CONFIG  = 70013,           /* /< DA16XXX Function is not configured */
    FSP_ERR_WIFI_NVRAM_WR_FAIL    = 70014,           /* /< DA16XXX NVRAM write failure */
    FSP_ERR_WIFI_RET_MEM_WR_FAIL  = 70015,           /* /< DA16XXX Retention memory write failure */
    FSP_ERR_WIFI_UNKNOWN_ERR      = 70016,           /* /< DA16XXX unknown error */

    /* Start of SF_CELLULAR Specific */
    FSP_ERR_CELLULAR_CONFIG_FAILED       = 80000,    /* /< Cellular module Configuration failed. */
    FSP_ERR_CELLULAR_INIT_FAILED         = 80001,    /* /< Cellular module initialization failed. */
    FSP_ERR_CELLULAR_TRANSMIT_FAILED     = 80002,    /* /< Transmission failed */
    FSP_ERR_CELLULAR_FW_UPTODATE         = 80003,    /* /< Firmware is uptodate */
    FSP_ERR_CELLULAR_FW_UPGRADE_FAILED   = 80004,    /* /< Firmware upgrade failed */
    FSP_ERR_CELLULAR_FAILED              = 80005,    /* /< Cellular Failed. */
    FSP_ERR_CELLULAR_INVALID_STATE       = 80006,    /* /< API Called in invalid state. */
    FSP_ERR_CELLULAR_REGISTRATION_FAILED = 80007,    /* /< Cellular Network registration failed */

    /* Start of SF_BLE specific */
    FSP_ERR_BLE_FAILED              = 90001,         /* /< BLE operation failed */
    FSP_ERR_BLE_INIT_FAILED         = 90002,         /* /< BLE device initialization failed */
    FSP_ERR_BLE_CONFIG_FAILED       = 90003,         /* /< BLE device configuration failed */
    FSP_ERR_BLE_PRF_ALREADY_ENABLED = 90004,         /* /< BLE device Profile already enabled */
    FSP_ERR_BLE_PRF_NOT_ENABLED     = 90005,         /* /< BLE device not enabled */

    /* Start of SF_BLE_ABS specific */
    FSP_ERR_BLE_ABS_INVALID_OPERATION = 91001,       /* /< Invalid operation is executed. */
    FSP_ERR_BLE_ABS_NOT_FOUND         = 91002,       /* /< Valid data or free space is not found. */

    /* Start of Crypto specific (0x10000) @note Refer to sf_cryoto_err.h for Crypto error code. */
    FSP_ERR_CRYPTO_CONTINUE              = 0x10000,  /* /< Continue executing function */
    FSP_ERR_CRYPTO_SCE_RESOURCE_CONFLICT = 0x10001,  /* /< Hardware resource busy */
    FSP_ERR_CRYPTO_SCE_FAIL              = 0x10002,  /* /< Internal I/O buffer is not empty */
    FSP_ERR_CRYPTO_SCE_HRK_INVALID_INDEX = 0x10003,  /* /< Invalid index */
    FSP_ERR_CRYPTO_SCE_RETRY             = 0x10004,  /* /< Retry */
    FSP_ERR_CRYPTO_SCE_VERIFY_FAIL       = 0x10005,  /* /< Verify is failed */
    FSP_ERR_CRYPTO_SCE_ALREADY_OPEN      = 0x10006,  /* /< HW SCE module is already opened */
    FSP_ERR_CRYPTO_NOT_OPEN              = 0x10007,  /* /< Hardware module is not initialized */
    FSP_ERR_CRYPTO_UNKNOWN               = 0x10008,  /* /< Some unknown error occurred */
    FSP_ERR_CRYPTO_NULL_POINTER          = 0x10009,  /* /< Null pointer input as a parameter */
    FSP_ERR_CRYPTO_NOT_IMPLEMENTED       = 0x1000a,  /* /< Algorithm/size not implemented */
    FSP_ERR_CRYPTO_RNG_INVALID_PARAM     = 0x1000b,  /* /< An invalid parameter is specified */
    FSP_ERR_CRYPTO_RNG_FATAL_ERROR       = 0x1000c,  /* /< A fatal error occurred */
    FSP_ERR_CRYPTO_INVALID_SIZE          = 0x1000d,  /* /< Size specified is invalid */
    FSP_ERR_CRYPTO_INVALID_STATE         = 0x1000e,  /* /< Function used in an valid state */
    FSP_ERR_CRYPTO_ALREADY_OPEN          = 0x1000f,  /* /< control block is already opened */
    FSP_ERR_CRYPTO_INSTALL_KEY_FAILED    = 0x10010,  /* /< Specified input key is invalid. */
    FSP_ERR_CRYPTO_AUTHENTICATION_FAILED = 0x10011,  /* /< Authentication failed */
    FSP_ERR_CRYPTO_SCE_KEY_SET_FAIL      = 0x10012,  /* /< Failure to Init Cipher */
    FSP_ERR_CRYPTO_SCE_AUTHENTICATION    = 0x10013,  /* /< Authentication failed */
    FSP_ERR_CRYPTO_SCE_PARAMETER         = 0x10014,  /* /< Input date is illegal. */
    FSP_ERR_CRYPTO_SCE_PROHIBIT_FUNCTION = 0x10015,  /* /< An invalid function call occurred. */

    /* Start of Crypto RSIP specific (0x10100) */
    FSP_ERR_CRYPTO_RSIP_RESOURCE_CONFLICT = 0x10100, /* /< Hardware resource is busy */
    FSP_ERR_CRYPTO_RSIP_FATAL             = 0x10101, /* /< Hardware fatal error or unexpected return */
    FSP_ERR_CRYPTO_RSIP_FAIL              = 0x10102, /* /< Internal error */
    FSP_ERR_CRYPTO_RSIP_KEY_SET_FAIL      = 0x10103, /* /< Input key type is illegal */
    FSP_ERR_CRYPTO_RSIP_AUTHENTICATION    = 0x10104, /* /< Authentication failed */

    /* Start of SF_CRYPTO specific */
    FSP_ERR_CRYPTO_COMMON_NOT_OPENED      = 0x20000, /* /< Crypto Framework Common is not opened */
    FSP_ERR_CRYPTO_HAL_ERROR              = 0x20001, /* /< Cryoto HAL module returned an error */
    FSP_ERR_CRYPTO_KEY_BUF_NOT_ENOUGH     = 0x20002, /* /< Key buffer size is not enough to generate a key */
    FSP_ERR_CRYPTO_BUF_OVERFLOW           = 0x20003, /* /< Attempt to write data larger than what the buffer can hold */
    FSP_ERR_CRYPTO_INVALID_OPERATION_MODE = 0x20004, /* /< Invalid operation mode. */
    FSP_ERR_MESSAGE_TOO_LONG              = 0x20005, /* /< Message for RSA encryption is too long. */
    FSP_ERR_RSA_DECRYPTION_ERROR          = 0x20006, /* /< RSA Decryption error. */

    /** @note SF_CRYPTO APIs may return an error code starting from 0x10000 which is of Crypto module.
     *        Refer to sf_cryoto_err.h for Crypto error codes.
     */

    /* Start of Sensor specific */
    FSP_ERR_SENSOR_INVALID_DATA             = 0x30000, /* /< Data is invalid. */
    FSP_ERR_SENSOR_IN_STABILIZATION         = 0x30001, /* /< Sensor is stabilizing. */
    FSP_ERR_SENSOR_MEASUREMENT_NOT_FINISHED = 0x30002, /* /< Measurement is not finished. */

    /* Start of COMMS specific */
    FSP_ERR_COMMS_BUS_NOT_OPEN = 0x40000,              /* /< Bus is not open. */
} fsp_err_t;

/** @} */

/***********************************************************************************************************************
 * Function prototypes
 **********************************************************************************************************************/

/* Common macro for FSP header files. There is also a corresponding FSP_HEADER macro at the top of this file. */
FSP_FOOTER

#endif