xref: /xnu-8020.121.3/EXTERNAL_HEADERS/img4/api.h (revision fdd8201d7b966f0c3ea610489d29bd841d358941)
1*fdd8201dSApple OSS Distributions /*!
2*fdd8201dSApple OSS Distributions  * @header
3*fdd8201dSApple OSS Distributions  * API definitions.
4*fdd8201dSApple OSS Distributions  */
5*fdd8201dSApple OSS Distributions #ifndef __IMG4_API_H
6*fdd8201dSApple OSS Distributions #define __IMG4_API_H
7*fdd8201dSApple OSS Distributions 
8*fdd8201dSApple OSS Distributions #ifndef __IMG4_INDIRECT
9*fdd8201dSApple OSS Distributions #error "Please #include <img4/firmware.h> instead of this file directly"
10*fdd8201dSApple OSS Distributions #endif // __IMG4_INDIRECT
11*fdd8201dSApple OSS Distributions 
12*fdd8201dSApple OSS Distributions #include <img4/shim.h>
13*fdd8201dSApple OSS Distributions 
14*fdd8201dSApple OSS Distributions /*!
15*fdd8201dSApple OSS Distributions  * @const IMG4_API_VERSION
16*fdd8201dSApple OSS Distributions  * The API version of the library. This version will be changed in accordance
17*fdd8201dSApple OSS Distributions  * with new API introductions so that callers may submit code to the build that
18*fdd8201dSApple OSS Distributions  * adopts those new APIs before the APIs land by using the following pattern:
19*fdd8201dSApple OSS Distributions  *
20*fdd8201dSApple OSS Distributions  *     #if IMG4_API_VERSION >= 20180424
21*fdd8201dSApple OSS Distributions  *     img4_new_api();
22*fdd8201dSApple OSS Distributions  *     #endif
23*fdd8201dSApple OSS Distributions  *
24*fdd8201dSApple OSS Distributions  * In this example, the library maintainer and API adopter agree on an API
25*fdd8201dSApple OSS Distributions  * version of 20180424 ahead of time for the introduction of
26*fdd8201dSApple OSS Distributions  * img4_new_api(). When a libdarwin with that API version is submitted, the
27*fdd8201dSApple OSS Distributions  * project is rebuilt, and the new API becomes active.
28*fdd8201dSApple OSS Distributions  *
29*fdd8201dSApple OSS Distributions  * Breaking API changes will be both covered under this mechanism as well as
30*fdd8201dSApple OSS Distributions  * individual preprocessor macros in this header that declare new behavior as
31*fdd8201dSApple OSS Distributions  * required.
32*fdd8201dSApple OSS Distributions  */
33*fdd8201dSApple OSS Distributions #define IMG4_API_VERSION (20212105u)
34*fdd8201dSApple OSS Distributions 
35*fdd8201dSApple OSS Distributions #if IMG4_TARGET_DARWIN
36*fdd8201dSApple OSS Distributions #define IMG4_API_AVAILABLE_FALL_2018 \
37*fdd8201dSApple OSS Distributions 		API_AVAILABLE( \
38*fdd8201dSApple OSS Distributions 			macos(10.15), \
39*fdd8201dSApple OSS Distributions 			ios(12.0), \
40*fdd8201dSApple OSS Distributions 			tvos(12.0), \
41*fdd8201dSApple OSS Distributions 			watchos(5.0))
42*fdd8201dSApple OSS Distributions 
43*fdd8201dSApple OSS Distributions #define IMG4_API_DEPRECATED_FALL_2018 \
44*fdd8201dSApple OSS Distributions 		API_DEPRECATED_WITH_REPLACEMENT( \
45*fdd8201dSApple OSS Distributions 			"img4_firmware_t", \
46*fdd8201dSApple OSS Distributions 			macos(10.15, 11.0), \
47*fdd8201dSApple OSS Distributions 			ios(12.2, 14.0), \
48*fdd8201dSApple OSS Distributions 			tvos(12.2, 14.0), \
49*fdd8201dSApple OSS Distributions 			watchos(5.2, 7.0))
50*fdd8201dSApple OSS Distributions 
51*fdd8201dSApple OSS Distributions #define IMG4_API_AVAILABLE_SPRING_2019 \
52*fdd8201dSApple OSS Distributions 		API_AVAILABLE(\
53*fdd8201dSApple OSS Distributions 			macos(10.15), \
54*fdd8201dSApple OSS Distributions 			ios(12.2), \
55*fdd8201dSApple OSS Distributions 			tvos(12.2), \
56*fdd8201dSApple OSS Distributions 			watchos(5.2))
57*fdd8201dSApple OSS Distributions 
58*fdd8201dSApple OSS Distributions #define IMG4_API_AVAILABLE_FALL_2020 \
59*fdd8201dSApple OSS Distributions 		API_AVAILABLE( \
60*fdd8201dSApple OSS Distributions 			macos(11.0), \
61*fdd8201dSApple OSS Distributions 			ios(14.0), \
62*fdd8201dSApple OSS Distributions 			tvos(14.0), \
63*fdd8201dSApple OSS Distributions 			watchos(7.0), \
64*fdd8201dSApple OSS Distributions 			bridgeos(5.0))
65*fdd8201dSApple OSS Distributions 
66*fdd8201dSApple OSS Distributions #define IMG4_API_AVAILABLE_FALL_2021 \
67*fdd8201dSApple OSS Distributions 		API_AVAILABLE( \
68*fdd8201dSApple OSS Distributions 			macos(12.0), \
69*fdd8201dSApple OSS Distributions 			ios(15.0), \
70*fdd8201dSApple OSS Distributions 			tvos(15.0), \
71*fdd8201dSApple OSS Distributions 			watchos(8.0), \
72*fdd8201dSApple OSS Distributions 			bridgeos(6.0))
73*fdd8201dSApple OSS Distributions #else
74*fdd8201dSApple OSS Distributions #define IMG4_API_AVAILABLE_FALL_2018
75*fdd8201dSApple OSS Distributions #define IMG4_API_DEPRECATED_FALL_2018
76*fdd8201dSApple OSS Distributions #define IMG4_API_AVAILABLE_SPRING_2019
77*fdd8201dSApple OSS Distributions #define IMG4_API_AVAILABLE_FALL_2020
78*fdd8201dSApple OSS Distributions #define IMG4_API_AVAILABLE_FALL_2021
79*fdd8201dSApple OSS Distributions #endif
80*fdd8201dSApple OSS Distributions 
81*fdd8201dSApple OSS Distributions #define IMG4_API_AVAILABLE_20180112 IMG4_API_AVAILABLE_FALL_2018
82*fdd8201dSApple OSS Distributions #define IMG4_API_AVAILABLE_20181106 IMG4_API_AVAILABLE_SPRING_2019
83*fdd8201dSApple OSS Distributions #define IMG4_API_AVAILABLE_20200508 IMG4_API_AVAILABLE_FALL_2020
84*fdd8201dSApple OSS Distributions #define IMG4_API_AVAILABLE_20200608 IMG4_API_AVAILABLE_FALL_2020
85*fdd8201dSApple OSS Distributions #define IMG4_API_AVAILABLE_20200724 IMG4_API_AVAILABLE_FALL_2020
86*fdd8201dSApple OSS Distributions #define IMG4_API_AVAILABLE_20210113 IMG4_API_AVAILABLE_FALL_2021
87*fdd8201dSApple OSS Distributions #define IMG4_API_AVAILABLE_20210205 IMG4_API_AVAILABLE_FALL_2021
88*fdd8201dSApple OSS Distributions #define IMG4_API_AVAILABLE_20210226 IMG4_API_AVAILABLE_FALL_2021
89*fdd8201dSApple OSS Distributions #define IMG4_API_AVAILABLE_20210305 IMG4_API_AVAILABLE_FALL_2021
90*fdd8201dSApple OSS Distributions #define IMG4_API_AVAILABLE_20210521 IMG4_API_AVAILABLE_FALL_2021
91*fdd8201dSApple OSS Distributions 
92*fdd8201dSApple OSS Distributions /*!
93*fdd8201dSApple OSS Distributions  * @typedef img4_struct_version_t
94*fdd8201dSApple OSS Distributions  * A type describing the version of a structure in the library.
95*fdd8201dSApple OSS Distributions  */
96*fdd8201dSApple OSS Distributions IMG4_API_AVAILABLE_20180112
97*fdd8201dSApple OSS Distributions typedef uint16_t img4_struct_version_t;
98*fdd8201dSApple OSS Distributions 
99*fdd8201dSApple OSS Distributions #endif // __IMG4_API_H
100