xref: /xnu-11215.61.5/EXTERNAL_HEADERS/img4/api.h (revision 4f1223e81cd707a65cc109d0b8ad6653699da3c4)
1*4f1223e8SApple OSS Distributions /*!
2*4f1223e8SApple OSS Distributions  * @header
3*4f1223e8SApple OSS Distributions  * API definitions.
4*4f1223e8SApple OSS Distributions  */
5*4f1223e8SApple OSS Distributions #ifndef __IMG4_API_H
6*4f1223e8SApple OSS Distributions #define __IMG4_API_H
7*4f1223e8SApple OSS Distributions 
8*4f1223e8SApple OSS Distributions #ifndef __IMG4_INDIRECT
9*4f1223e8SApple OSS Distributions #error "Please #include <img4/firmware.h> instead of this file directly"
10*4f1223e8SApple OSS Distributions #endif // __IMG4_INDIRECT
11*4f1223e8SApple OSS Distributions 
12*4f1223e8SApple OSS Distributions #include <img4/shim.h>
13*4f1223e8SApple OSS Distributions 
14*4f1223e8SApple OSS Distributions /*!
15*4f1223e8SApple OSS Distributions  * @const IMG4_API_VERSION
16*4f1223e8SApple OSS Distributions  * The API version of the library. This version will be changed in accordance
17*4f1223e8SApple OSS Distributions  * with new API introductions so that callers may submit code to the build that
18*4f1223e8SApple OSS Distributions  * adopts those new APIs before the APIs land by using the following pattern:
19*4f1223e8SApple OSS Distributions  *
20*4f1223e8SApple OSS Distributions  *     #if IMG4_API_VERSION >= 20180424
21*4f1223e8SApple OSS Distributions  *     img4_new_api();
22*4f1223e8SApple OSS Distributions  *     #endif
23*4f1223e8SApple OSS Distributions  *
24*4f1223e8SApple OSS Distributions  * In this example, the library maintainer and API adopter agree on an API
25*4f1223e8SApple OSS Distributions  * version of 20180424 ahead of time for the introduction of
26*4f1223e8SApple OSS Distributions  * img4_new_api(). When a libdarwin with that API version is submitted, the
27*4f1223e8SApple OSS Distributions  * project is rebuilt, and the new API becomes active.
28*4f1223e8SApple OSS Distributions  *
29*4f1223e8SApple OSS Distributions  * Breaking API changes will be both covered under this mechanism as well as
30*4f1223e8SApple OSS Distributions  * individual preprocessor macros in this header that declare new behavior as
31*4f1223e8SApple OSS Distributions  * required.
32*4f1223e8SApple OSS Distributions  *
33*4f1223e8SApple OSS Distributions  * @note
34*4f1223e8SApple OSS Distributions  * For a period of time, the API version was incorrectly defined as 20212105
35*4f1223e8SApple OSS Distributions  * when it should have been 20210521. Avoid version comparisons across that
36*4f1223e8SApple OSS Distributions  * version epoch.
37*4f1223e8SApple OSS Distributions  */
38*4f1223e8SApple OSS Distributions #define IMG4_API_VERSION (20221202u)
39*4f1223e8SApple OSS Distributions 
40*4f1223e8SApple OSS Distributions #if IMG4_TARGET_DARWIN
41*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_FALL_2018 \
42*4f1223e8SApple OSS Distributions 		API_AVAILABLE( \
43*4f1223e8SApple OSS Distributions 			macos(10.15), \
44*4f1223e8SApple OSS Distributions 			ios(12.0), \
45*4f1223e8SApple OSS Distributions 			tvos(12.0), \
46*4f1223e8SApple OSS Distributions 			watchos(5.0))
47*4f1223e8SApple OSS Distributions 
48*4f1223e8SApple OSS Distributions #define IMG4_API_DEPRECATED_FALL_2018 \
49*4f1223e8SApple OSS Distributions 		API_DEPRECATED_WITH_REPLACEMENT( \
50*4f1223e8SApple OSS Distributions 			"img4_firmware_t", \
51*4f1223e8SApple OSS Distributions 			macos(10.15, 11.0), \
52*4f1223e8SApple OSS Distributions 			ios(12.2, 14.0), \
53*4f1223e8SApple OSS Distributions 			tvos(12.2, 14.0), \
54*4f1223e8SApple OSS Distributions 			watchos(5.2, 7.0))
55*4f1223e8SApple OSS Distributions 
56*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_SPRING_2019 \
57*4f1223e8SApple OSS Distributions 		API_AVAILABLE(\
58*4f1223e8SApple OSS Distributions 			macos(10.15), \
59*4f1223e8SApple OSS Distributions 			ios(12.2), \
60*4f1223e8SApple OSS Distributions 			tvos(12.2), \
61*4f1223e8SApple OSS Distributions 			watchos(5.2))
62*4f1223e8SApple OSS Distributions 
63*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_FALL_2020 \
64*4f1223e8SApple OSS Distributions 		API_AVAILABLE( \
65*4f1223e8SApple OSS Distributions 			macos(11.0), \
66*4f1223e8SApple OSS Distributions 			ios(14.0), \
67*4f1223e8SApple OSS Distributions 			tvos(14.0), \
68*4f1223e8SApple OSS Distributions 			watchos(7.0), \
69*4f1223e8SApple OSS Distributions 			bridgeos(5.0))
70*4f1223e8SApple OSS Distributions 
71*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_FALL_2021 \
72*4f1223e8SApple OSS Distributions 		API_AVAILABLE( \
73*4f1223e8SApple OSS Distributions 			macos(12.0), \
74*4f1223e8SApple OSS Distributions 			ios(15.0), \
75*4f1223e8SApple OSS Distributions 			tvos(15.0), \
76*4f1223e8SApple OSS Distributions 			watchos(8.0), \
77*4f1223e8SApple OSS Distributions 			bridgeos(6.0))
78*4f1223e8SApple OSS Distributions 
79*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_FALL_2021_B \
80*4f1223e8SApple OSS Distributions 		API_AVAILABLE( \
81*4f1223e8SApple OSS Distributions 			macos(12.1), \
82*4f1223e8SApple OSS Distributions 			ios(15.1), \
83*4f1223e8SApple OSS Distributions 			tvos(15.1), \
84*4f1223e8SApple OSS Distributions 			watchos(8.1), \
85*4f1223e8SApple OSS Distributions 			bridgeos(6.1))
86*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_FALL_2022 \
87*4f1223e8SApple OSS Distributions 		API_AVAILABLE( \
88*4f1223e8SApple OSS Distributions 			macos(13.0), \
89*4f1223e8SApple OSS Distributions 			ios(16.0), \
90*4f1223e8SApple OSS Distributions 			tvos(16.0), \
91*4f1223e8SApple OSS Distributions 			watchos(9.0), \
92*4f1223e8SApple OSS Distributions 			bridgeos(7.0))
93*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_SPRING_2023 \
94*4f1223e8SApple OSS Distributions 		API_AVAILABLE( \
95*4f1223e8SApple OSS Distributions 			macos(13.3), \
96*4f1223e8SApple OSS Distributions 			ios(16.4), \
97*4f1223e8SApple OSS Distributions 			tvos(16.4), \
98*4f1223e8SApple OSS Distributions 			watchos(9.4), \
99*4f1223e8SApple OSS Distributions 			bridgeos(7.4))
100*4f1223e8SApple OSS Distributions #else
101*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_FALL_2018
102*4f1223e8SApple OSS Distributions #define IMG4_API_DEPRECATED_FALL_2018
103*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_SPRING_2019
104*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_FALL_2020
105*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_FALL_2021
106*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_FALL_2021_B
107*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_FALL_2022
108*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_SPRING_2023
109*4f1223e8SApple OSS Distributions #endif
110*4f1223e8SApple OSS Distributions 
111*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20180112 IMG4_API_AVAILABLE_FALL_2018
112*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20181106 IMG4_API_AVAILABLE_SPRING_2019
113*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20200508 IMG4_API_AVAILABLE_FALL_2020
114*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20200608 IMG4_API_AVAILABLE_FALL_2020
115*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20200724 IMG4_API_AVAILABLE_FALL_2020
116*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20210113 IMG4_API_AVAILABLE_FALL_2021
117*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20210205 IMG4_API_AVAILABLE_FALL_2021
118*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20210226 IMG4_API_AVAILABLE_FALL_2021
119*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20210305 IMG4_API_AVAILABLE_FALL_2021
120*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20210521 IMG4_API_AVAILABLE_FALL_2021
121*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20210624 IMG4_API_AVAILABLE_FALL_2021
122*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20210731 IMG4_API_AVAILABLE_FALL_2021_B
123*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20211105 IMG4_API_AVAILABLE_FALL_2022
124*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20211112 IMG4_API_AVAILABLE_FALL_2022
125*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20211119 IMG4_API_AVAILABLE_FALL_2022
126*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20211126 IMG4_API_AVAILABLE_FALL_2022
127*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20211224 IMG4_API_AVAILABLE_FALL_2022
128*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20220128 IMG4_API_AVAILABLE_FALL_2022
129*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20220322 IMG4_API_AVAILABLE_FALL_2022
130*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20220401 IMG4_API_AVAILABLE_FALL_2022
131*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20220513 IMG4_API_AVAILABLE_FALL_2022
132*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20220711 IMG4_API_AVAILABLE_FALL_2022
133*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20220714 IMG4_API_AVAILABLE_FALL_2022
134*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20220715 IMG4_API_AVAILABLE_FALL_2022
135*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20220912 IMG4_API_AVAILABLE_FALL_2022
136*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20220915 IMG4_API_AVAILABLE_SPRING_2023
137*4f1223e8SApple OSS Distributions #define IMG4_API_AVAILABLE_20221202 IMG4_API_AVAILABLE_SPRING_2023
138*4f1223e8SApple OSS Distributions 
139*4f1223e8SApple OSS Distributions /*!
140*4f1223e8SApple OSS Distributions  * @typedef img4_struct_version_t
141*4f1223e8SApple OSS Distributions  * A type describing the version of a structure in the library.
142*4f1223e8SApple OSS Distributions  */
143*4f1223e8SApple OSS Distributions IMG4_API_AVAILABLE_20180112
144*4f1223e8SApple OSS Distributions typedef uint16_t img4_struct_version_t;
145*4f1223e8SApple OSS Distributions 
146*4f1223e8SApple OSS Distributions #endif // __IMG4_API_H
147