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