1 /**************************************************************************** 2 **************************************************************************** 3 *** 4 *** This header was automatically generated from a Linux kernel header 5 *** of the same name, to make information necessary for userspace to 6 *** call into the kernel available to libc. It contains only constants, 7 *** structures, and macros generated from the original header, and thus, 8 *** contains no copyrightable information. 9 *** 10 *** To edit the content of this header, modify the corresponding 11 *** source file (e.g. under external/kernel-headers/original/) then 12 *** run bionic/libc/kernel/tools/update_all.py 13 *** 14 *** Any manual change here will be lost the next time this script will 15 *** be run. You've been warned! 16 *** 17 **************************************************************************** 18 ****************************************************************************/ 19 #ifndef __FACEAUTH_SHARED_H__ 20 #define __FACEAUTH_SHARED_H__ 21 #define INPUT_IMAGE_WIDTH 480 22 #define INPUT_IMAGE_HEIGHT 640 23 #define INPUT_IMAGE_SIZE (INPUT_IMAGE_WIDTH * INPUT_IMAGE_HEIGHT) 24 #define DISABLE_GAZE_DEPRECATED (1ULL << 0) 25 #define SECURE_CAMERA_DATA (1ULL << 2) 26 #define REQUIRE_ATTENTION (1ULL << 3) 27 #define MAX_CACHE_ENROLLMENT 1536 28 #define MAX_ENROLLMENT 20 29 #define MAX_NUM_USERS 4 30 #define ERROR_NO_ERROR 0 31 #define ERROR_GENERAL_ERROR - 1 32 #define ERROR_INTERNAL_CITADEL_INVALID_ARGS - 32 33 #define ERROR_INTERNAL_CITADEL_TIMEOUT - 33 34 #define ERROR_INTERNAL_CITADEL_SFS_FULL - 34 35 #define ERROR_INTERNAL_CITADEL_SFS_INTERNAL - 35 36 #define ERROR_INTERNAL_CITADEL_ERR_THROTTLE - 36 37 #define ERROR_INTERNAL_CITADEL_SESSION_ID - 37 38 #define ERROR_INTERNAL_CITADEL_CRC - 38 39 #define ERROR_INTERNAL_CITADEL_NONSECURE_MODE - 39 40 #define ERROR_INTERNAL_CITADEL_INVALID_TOKEN - 40 41 #define ERROR_INTERNAL_CITADEL_RECALIBRATE - 41 42 #define ERROR_INTERNAL_CITADEL_VERSION - 42 43 #define ERROR_INTERNAL_CITADEL_ERR_UNKNOWN - 43 44 #define ERROR_INTERNAL_CITADEL_INVALID_CHALLENGE - 44 45 #define ERROR_INTERNAL_CITADEL_INVALID_USER_ID - 45 46 #define ERROR_INTERNAL_CITADEL_EMBEDDING_VERSION - 46 47 #define ERROR_INTERNAL_CITADEL_EMBEDDING_DOWNGRADE - 47 48 #define ERROR_CITADEL_INVALID_ARGS - 48 49 #define ERROR_CITADEL_TIMEOUT - 49 50 #define ERROR_CITADEL_CACHE_FULL - 50 51 #define ERROR_CITADEL_CACHE_INVALID_INDEX - 51 52 #define ERROR_CITADEL_INVALID_PROFILE - 52 53 #define ERROR_CITADEL_EARLY_FAIL - 53 54 #define ERROR_CITADEL_SESSION_ID - 54 55 #define ERROR_CITADEL_CRC - 55 56 #define ERROR_CITADEL_UNSUPPORTED - 56 57 #define ERROR_INTERNAL_CITADEL_CHALLENGE_EXPIRED - 57 58 #define ERROR_INTERNAL_CITADEL_WIPED_USER - 58 59 #define ERROR_INTERNAL_CITADEL_INVALID_FACENET - 59 60 #define ERROR_INTERNAL_CITADEL_INVALID_DEPTHID - 60 61 #define ERROR_DEPTH_IPU_TIMEOUT - 64 62 #define ERROR_SKIN_INVALID_LAYER_SIZE - 65 63 #define ERROR_FSSD_BUFFER_SIZE_MISMATCH - 66 64 #define ERROR_SKIN_INVALID_PATCH_SIZE - 67 65 #define ERROR_SKIN_INVALID_FACE_SIZE - 68 66 #define ERROR_DOWNSCALE_IPU_TIMEOUT - 69 67 #define ERROR_AFFINE_COMBINED_IPU_TIMEOUT - 70 68 #define ERROR_FACENET_BUFFER_SIZE_MISMATCH - 71 69 #define ERROR_DEPTHID_BUFFER_SIZE_MISMATCH - 72 70 #define ERROR_GAZENET_BUFFER_SIZE_MISMATCH - 73 71 #define ERROR_SKIN_BUFFER_SIZE_MISMATCH - 74 72 #define ERROR_MAX_THRESHOLD_FACES - 75 73 #define ERROR_INSUFFICIENT_ALLOCATOR_MEMORY - 76 74 #define ERROR_IPU_TIMEOUT - 77 75 #define ERROR_REJECT_USERS_FULL - 78 76 #define ERROR_REJECT_PROFILES_FULL - 79 77 #define ERROR_REJECT_MAX_PROFILES_PER_USER - 80 78 #define ERROR_UNSUPPORTED_COMMAND - 81 79 #define ERROR_FW_DRIVER_SYNC_ERROR - 84 80 #define ERROR_UNEXPECTED_COMMAND - 85 81 #define CMD_IS_VALID(cmd) ((cmd) < COMMAND_COUNT) 82 typedef enum _workload_status { 83 WORKLOAD_STATUS_NO_STATUS = 0, 84 WORKLOAD_STATUS_PASS, 85 WORKLOAD_STATUS_REJECT_NO_FACE, 86 WORKLOAD_STATUS_REJECT_MAX_FACE_CAPACITY, 87 WORKLOAD_STATUS_REJECT_NO_ATTENTION, 88 WORKLOAD_STATUS_REJECT_TOO_SMALL, 89 WORKLOAD_STATUS_REJECT_CLIPPED_LEFT, 90 WORKLOAD_STATUS_REJECT_CLIPPED_RIGHT, 91 WORKLOAD_STATUS_REJECT_CLIPPED_TOP, 92 WORKLOAD_STATUS_REJECT_CLIPPED_BOTTOM, 93 WORKLOAD_STATUS_REJECT_TOO_DARK, 94 WORKLOAD_STATUS_REJECT_TOO_BRIGHT, 95 WORKLOAD_STATUS_REJECT_TILT_ANGLE, 96 WORKLOAD_STATUS_REJECT_PAN_ANGLE, 97 WORKLOAD_STATUS_REJECT_TOO_CLOSE, 98 WORKLOAD_STATUS_REJECT_TOO_FAR, 99 WORKLOAD_STATUS_REJECT_USERS_FULL, 100 WORKLOAD_STATUS_REJECT_PROFILES_FULL, 101 WORKLOAD_STATUS_REJECT_INVALID_DEPTH, 102 WORKLOAD_STATUS_REJECT_SKIN, 103 WORKLOAD_STATUS_REJECT_SPOOF, 104 WORKLOAD_STATUS_HARD_REJECT, 105 WORKLOAD_STATUS_ERROR, 106 WORKLOAD_STATUS_REJECT_FRAME_SELECTION, 107 WORKLOAD_STATUS_COUNT, 108 WORKLOAD_STATUS_INTMAX = 0xffffffff 109 } WorkloadStatus; 110 typedef enum _faceauth_input_commands { 111 COMMAND_NONE = 0, 112 COMMAND_ENROLL, 113 COMMAND_ENROLL_COMPLETE, 114 COMMAND_ERASE, 115 COMMAND_VALIDATE, 116 COMMAND_EXIT, 117 COMMAND_GET_CHALLENGE, 118 COMMAND_REVOKE_CHALLENGE, 119 COMMAND_GET_USER_INFO, 120 COMMAND_SET_FEATURE, 121 COMMAND_CLR_FEATURE, 122 COMMAND_RESET_LOCKOUT, 123 COMMAND_MIGRATE, 124 COMMAND_EXIT_DIRTY, 125 COMMAND_VERIFY_HAT, 126 COMMAND_COUNT, 127 COMMAND_INTMAX = 0xffffffff 128 } FaceAuthInputCommands; 129 #define IS_IMAGE_PROCESSING_CMD(cmd) ((cmd) == COMMAND_ENROLL || (cmd) == COMMAND_VALIDATE || (cmd) == COMMAND_MIGRATE) 130 typedef enum _faceauth_ack_messages { 131 STATUS_NONE = 0, 132 STATUS_READY, 133 STATUS_BUSY, 134 STATUS_CLEAN, 135 STATUS_INTMAX = 0xffffffff 136 } FaceAckMessages; 137 struct Coordinate { 138 int32_t x; 139 int32_t y; 140 } __attribute__((packed)); 141 struct BoundingBox { 142 struct Coordinate top_left; 143 struct Coordinate bottom_right; 144 } __attribute__((packed)); 145 struct BoundingBoxes { 146 struct BoundingBox right_box; 147 struct BoundingBox left_box; 148 } __attribute__((packed)); 149 enum FaceLandmarks { 150 LEFT_EYE = 0, 151 RIGHT_EYE, 152 NOSE_TIP, 153 MOUTH_CENTER, 154 LEFT_EAR_TRAGION, 155 RIGHT_EAR_TRAGION, 156 NUM_FACE_LANDMARKS, 157 FACE_LANDMARK_INTMAX = 0xffffffff 158 }; 159 struct Face { 160 int32_t x1; 161 int32_t y1; 162 int32_t x2; 163 int32_t y2; 164 struct Coordinate landmark[NUM_FACE_LANDMARKS]; 165 uint32_t confidence; 166 int32_t pan_angle; 167 int32_t tilt_angle; 168 int32_t roll_angle; 169 } __attribute__((packed)); 170 struct SerialVerificationToken { 171 uint64_t challenge; 172 uint64_t timestamp; 173 uint32_t security_level; 174 uint8_t mac[32]; 175 } __attribute__((packed)); 176 #endif 177