1# Core Library Release Notes
2The Core Library provides basic types and utilities that can be used between different devices. This allows different libraries to share common items between themselves to avoid reimplementation and promote consistency.
3
4### What's Included?
5* Common result type for reporting errors or status
6* Common utility MACROs for
7    * CY_ASSERT: Verifies a value and halts if invalid (if not NDEBUG)
8    * CY_HALT: Halts the application
9    * CY_UNUSED_PARAMETER: Avoid warnings if a function argument isn't used
10    * CY_LO8: Gets the lower 8 bits of a 16-bit value
11    * CY_HI8: Gets the upper 8 bits of a 16-bit value
12    * CY_LO16: Gets the lower 16 bits of a 32-bit value
13    * CY_HI16: Gets the upper 16 bits of a 32-bit value
14    * CY_SWAP_ENDIAN16: Swaps the byte ordering of a 16-bit value
15    * CY_SWAP_ENDIAN32: Swaps the byte ordering of a 32-bit value
16    * CY_SWAP_ENDIAN64: Swaps the byte ordering of a 64-bit value
17    * CY_GET_REG8: Reads the 8-bit value from the specified address
18    * CY_SET_REG8: Writes an 8-bit value to the specified address
19    * CY_GET_REG16: Reads the 16-bit value from the specified address
20    * CY_SET_REG16: Writes the 16-bit value to the specified address
21    * CY_GET_REG24:  Reads the 24-bit value from the specified address
22    * CY_SET_REG24: Writes the 24-bit value to the specified address
23    * CY_GET_REG32: Reads the 32-bit value from the specified register
24    * CY_SET_REG32: Writes the 32-bit value to the specified register
25    * _CLR_SET_FLD32U:  The macro for setting a register with a name field and value for providing get-clear-modify-write operations
26    * CY_REG32_CLR_SET: Uses _CLR_SET_FLD32U macro for providing get-clear-modify-write operations with a name field and value and writes a resulting value to the 32-bit register
27    * _CLR_SET_FLD16U: The macro for setting a 16-bit register with a name field and value for providing get-clear-modify-write operations
28    * CY_REG16_CLR_SET: Uses _CLR_SET_FLD16U macro for providing get-clear-modify-write operations with a name field and value and writes a resulting value to the 16-bit register
29    * _CLR_SET_FLD8U: The macro for setting a 8-bit register with a name field and value for providing get-clear-modify-write operations
30    * CY_REG8_CLR_SET: Uses _CLR_SET_FLD8U macro for providing get-clear-modify-write operations with a name field and value and writes a resulting value to the 8-bit register
31    * _BOOL2FLD: Returns a field mask if the value is not false
32    * _FLD2BOOL: Returns true, if the value includes the field mask
33    * CY_SYSLIB_DIV_ROUND: Calculates a / b with rounding to the nearest integer, a and b must have the same sign.
34    * CY_SYSLIB_DIV_ROUNDUP: Calculates a / b with rounding up if remainder != 0, both a and b must be positive.
35* MACROs to create cross compiler compatible code. Use the CY_NOINIT, CY_SECTION, CY_UNUSED, CY_ALIGN attributes at the first place of declaration/definition. For example: CY_NOINIT uint32_t noinitVar;
36    * CY_NOINIT
37    * CY_SECTION
38    * CY_UNUSED
39    * CY_NOINLINE
40    * CY_ALIGN
41    * CY_RAMFUNC_BEGIN
42    * CY_RAMFUNC_END
43
44### What Changed?
45
46#### v1.4.0
47* Added new module identifiers to cy_result.h
48* Add typedefs to convey width in scenarios where there are no standard fixed-width types.
49#### v1.3.1
50* Added new entries to cy_en_rslt_module_t
51* Update CY_NOINIT to support newer ARM compiler 6.16
52#### v1.3.0
53* Added a new CY_RSLT_CREATE_EX to provide more options for creating error codes
54#### v1.2.0
55* Added a new cy_rslt_decode_t that provides better debugging experience when examining result codes
56* Converted module identifiers into enums to provide better debugging experience
57#### v1.1.5
58* Minor updates including new module id definitions
59#### v1.1.4
60* Minor updates for MISRA & documentation
61#### v1.1.3
62* Minor update for documentation & branding
63#### v1.1.2
64* Added new module identifiers to cy_result.h
65#### v1.1.1
66* Fixed MISRA violation
67#### v1.1.0
68* Migrated numerous utility & cross compiler macros from psoc6pdl into here
69#### v1.0.1
70* Added new module IDs in cy_result.h
71* Minor updates to documentation
72#### v1.0.0
73* Initial release
74
75### Supported Software and Tools
76This version of the Core Library was validated for compatibility with the following Software and Tools:
77
78| Software and Tools                        | Version |
79| :---                                      | :----:  |
80| ModusToolbox™ Software Environment        | 2.4.0   |
81| GCC Compiler                              | 10.3.1  |
82| IAR Compiler                              | 9.30.1  |
83| ARM Compiler                              | 6.16    |
84
85Minimum required ModusToolbox™ Software Environment: v2.0
86
87### More information
88Use the following links for more information, as needed:
89* [API Reference Guide](https://infineon.github.io/core-lib/html/modules.html)
90* [Cypress Semiconductor, an Infineon Technologies Company](http://www.cypress.com)
91* [Infineon GitHub](https://github.com/infineon)
92* [ModusToolbox™](https://www.cypress.com/products/modustoolbox-software-environment)
93
94---
95© Cypress Semiconductor Corporation (an Infineon company) or an affiliate of Cypress Semiconductor Corporation, 2019-2023.
96