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