blob: 6f86f03044cbd11fde602a26809d67c8b2f4e5e8 [file] [log] [blame]
Rom Lemarchand1b22d072013-11-22 14:59:54 -08001/*
2 * Copyright (C) 2012 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#include <cstddef>
Rom Lemarchand1b22d072013-11-22 14:59:54 -080018#include <hardware/hardware.h>
19#include <hardware/sensors.h>
20#include <hardware/fb.h>
21#include <hardware/hwcomposer.h>
22#include <hardware/gralloc.h>
23#include <hardware/consumerir.h>
24#include <hardware/camera_common.h>
25#include <hardware/camera3.h>
26
27//Ideally this would print type.member instead we need to rely on the line number from the output
28template <size_t actual, size_t expected> void check_member(void) {
29 static_assert(actual == expected, "");
30}
31
32#ifdef __LP64__
33#define CHECK_MEMBER_AT(type, member, off32, off64) \
34 check_member<offsetof(type, member), off64>()
35#else
36#define CHECK_MEMBER_AT(type, member, off32, off64) \
37 check_member<offsetof(type, member), off32>()
38#endif
39
40void CheckOffsets(void) {
41 //Types defined in hardware.h
42 CHECK_MEMBER_AT(hw_module_t, tag, 0, 0);
43 CHECK_MEMBER_AT(hw_module_t, module_api_version, 4, 4);
44 CHECK_MEMBER_AT(hw_module_t, hal_api_version, 6, 6);
45 CHECK_MEMBER_AT(hw_module_t, id, 8, 8);
46 CHECK_MEMBER_AT(hw_module_t, name, 12, 16);
47 CHECK_MEMBER_AT(hw_module_t, author, 16, 24);
48 CHECK_MEMBER_AT(hw_module_t, methods, 20, 32);
49 CHECK_MEMBER_AT(hw_module_t, dso, 24, 40);
50 CHECK_MEMBER_AT(hw_module_t, reserved, 28, 48);
51
52 CHECK_MEMBER_AT(hw_device_t, tag, 0, 0);
53 CHECK_MEMBER_AT(hw_device_t, version, 4, 4);
54 CHECK_MEMBER_AT(hw_device_t, module, 8, 8);
55 CHECK_MEMBER_AT(hw_device_t, reserved, 12, 16);
56 CHECK_MEMBER_AT(hw_device_t, close, 60, 112);
57
58 //Types defined in sensors.h
59 CHECK_MEMBER_AT(sensors_vec_t, v, 0, 0);
60 CHECK_MEMBER_AT(sensors_vec_t, x, 0, 0);
61 CHECK_MEMBER_AT(sensors_vec_t, y, 4, 4);
62 CHECK_MEMBER_AT(sensors_vec_t, z, 8, 8);
63 CHECK_MEMBER_AT(sensors_vec_t, azimuth, 0, 0);
64 CHECK_MEMBER_AT(sensors_vec_t, pitch, 4, 4);
65 CHECK_MEMBER_AT(sensors_vec_t, roll, 8, 8);
66 CHECK_MEMBER_AT(sensors_vec_t, status, 12, 12);
67 CHECK_MEMBER_AT(sensors_vec_t, reserved, 13, 13);
68
69 CHECK_MEMBER_AT(sensors_event_t, version, 0, 0);
70 CHECK_MEMBER_AT(sensors_event_t, sensor, 4, 4);
71 CHECK_MEMBER_AT(sensors_event_t, type, 8, 8);
72 CHECK_MEMBER_AT(sensors_event_t, reserved0, 12, 12);
73 CHECK_MEMBER_AT(sensors_event_t, timestamp, 16, 16);
74 CHECK_MEMBER_AT(sensors_event_t, data, 24, 24);
75 CHECK_MEMBER_AT(sensors_event_t, acceleration, 24, 24);
76 CHECK_MEMBER_AT(sensors_event_t, magnetic, 24, 24);
77 CHECK_MEMBER_AT(sensors_event_t, orientation, 24, 24);
78 CHECK_MEMBER_AT(sensors_event_t, gyro, 24, 24);
79 CHECK_MEMBER_AT(sensors_event_t, temperature, 24, 24);
80 CHECK_MEMBER_AT(sensors_event_t, distance, 24, 24);
81 CHECK_MEMBER_AT(sensors_event_t, light, 24, 24);
82 CHECK_MEMBER_AT(sensors_event_t, pressure, 24, 24);
83 CHECK_MEMBER_AT(sensors_event_t, relative_humidity, 24, 24);
84 CHECK_MEMBER_AT(sensors_event_t, uncalibrated_gyro, 24, 24);
85 CHECK_MEMBER_AT(sensors_event_t, uncalibrated_magnetic, 24, 24);
86 CHECK_MEMBER_AT(sensors_event_t, meta_data, 24, 24);
87 CHECK_MEMBER_AT(sensors_event_t, u64, 24, 24);
88 CHECK_MEMBER_AT(sensors_event_t, u64.data, 24, 24);
89 CHECK_MEMBER_AT(sensors_event_t, u64.step_counter, 24, 24);
Aravind Akella6242f322014-02-28 18:46:19 -080090 CHECK_MEMBER_AT(sensors_event_t, flags, 88, 88);
91 CHECK_MEMBER_AT(sensors_event_t, reserved1, 92, 92);
Rom Lemarchand1b22d072013-11-22 14:59:54 -080092
93 CHECK_MEMBER_AT(struct sensor_t, name, 0, 0);
94 CHECK_MEMBER_AT(struct sensor_t, vendor, 4, 8);
95 CHECK_MEMBER_AT(struct sensor_t, version, 8, 16);
96 CHECK_MEMBER_AT(struct sensor_t, handle, 12, 20);
97 CHECK_MEMBER_AT(struct sensor_t, type, 16, 24);
98 CHECK_MEMBER_AT(struct sensor_t, maxRange, 20, 28);
99 CHECK_MEMBER_AT(struct sensor_t, resolution, 24, 32);
100 CHECK_MEMBER_AT(struct sensor_t, power, 28, 36);
101 CHECK_MEMBER_AT(struct sensor_t, minDelay, 32, 40);
102 CHECK_MEMBER_AT(struct sensor_t, fifoReservedEventCount, 36, 44);
103 CHECK_MEMBER_AT(struct sensor_t, fifoMaxEventCount, 40, 48);
Aravind Akella6242f322014-02-28 18:46:19 -0800104 CHECK_MEMBER_AT(struct sensor_t, stringType, 44, 56);
105 CHECK_MEMBER_AT(struct sensor_t, requiredPermission, 48, 64);
106 CHECK_MEMBER_AT(struct sensor_t, maxDelay, 52, 72);
107 CHECK_MEMBER_AT(struct sensor_t, flags, 56, 80);
108 CHECK_MEMBER_AT(struct sensor_t, reserved, 60, 88);
Rom Lemarchand1b22d072013-11-22 14:59:54 -0800109
110 CHECK_MEMBER_AT(sensors_poll_device_1_t, v0, 0, 0);
111 CHECK_MEMBER_AT(sensors_poll_device_1_t, common, 0, 0);
112 CHECK_MEMBER_AT(sensors_poll_device_1_t, activate, 64, 120);
113 CHECK_MEMBER_AT(sensors_poll_device_1_t, setDelay, 68, 128);
114 CHECK_MEMBER_AT(sensors_poll_device_1_t, poll, 72, 136);
115 CHECK_MEMBER_AT(sensors_poll_device_1_t, batch, 76, 144);
116 CHECK_MEMBER_AT(sensors_poll_device_1_t, flush, 80, 152);
Ashutosh Joshi5f0ebe62015-04-14 16:06:02 -0700117 CHECK_MEMBER_AT(sensors_poll_device_1_t, inject_sensor_data, 84, 160);
Peng Xu08a4dd92016-11-03 11:56:27 -0700118 CHECK_MEMBER_AT(sensors_poll_device_1_t, register_direct_channel, 88, 168);
119 CHECK_MEMBER_AT(sensors_poll_device_1_t, config_direct_report, 92, 176);
120 CHECK_MEMBER_AT(sensors_poll_device_1_t, reserved_procs, 96, 184);
Rom Lemarchand1b22d072013-11-22 14:59:54 -0800121
122 //Types defined in fb.h
123 CHECK_MEMBER_AT(framebuffer_device_t, common, 0, 0);
124 CHECK_MEMBER_AT(framebuffer_device_t, flags, 64, 120);
125 CHECK_MEMBER_AT(framebuffer_device_t, width, 68, 124);
126 CHECK_MEMBER_AT(framebuffer_device_t, height, 72, 128);
127 CHECK_MEMBER_AT(framebuffer_device_t, stride, 76, 132);
128 CHECK_MEMBER_AT(framebuffer_device_t, format, 80, 136);
129 CHECK_MEMBER_AT(framebuffer_device_t, xdpi, 84, 140);
130 CHECK_MEMBER_AT(framebuffer_device_t, ydpi, 88, 144);
131 CHECK_MEMBER_AT(framebuffer_device_t, fps, 92, 148);
132 CHECK_MEMBER_AT(framebuffer_device_t, minSwapInterval, 96, 152);
133 CHECK_MEMBER_AT(framebuffer_device_t, maxSwapInterval, 100, 156);
134 CHECK_MEMBER_AT(framebuffer_device_t, numFramebuffers, 104, 160);
135 CHECK_MEMBER_AT(framebuffer_device_t, reserved, 108, 164);
136 CHECK_MEMBER_AT(framebuffer_device_t, setSwapInterval, 136, 192);
137 CHECK_MEMBER_AT(framebuffer_device_t, setUpdateRect, 140, 200);
138 CHECK_MEMBER_AT(framebuffer_device_t, post, 144, 208);
139 CHECK_MEMBER_AT(framebuffer_device_t, compositionComplete, 148, 216);
140 CHECK_MEMBER_AT(framebuffer_device_t, dump, 152, 224);
141 CHECK_MEMBER_AT(framebuffer_device_t, enableScreen, 156, 232);
142 CHECK_MEMBER_AT(framebuffer_device_t, reserved_proc, 160, 240);
143
144 //Types defined in hwcomposer.h
145 CHECK_MEMBER_AT(hwc_layer_1_t, compositionType, 0, 0);
146 CHECK_MEMBER_AT(hwc_layer_1_t, hints, 4, 4);
147 CHECK_MEMBER_AT(hwc_layer_1_t, flags, 8, 8);
148 CHECK_MEMBER_AT(hwc_layer_1_t, backgroundColor, 12, 16);
149 CHECK_MEMBER_AT(hwc_layer_1_t, handle, 12, 16);
150 CHECK_MEMBER_AT(hwc_layer_1_t, transform, 16, 24);
151 CHECK_MEMBER_AT(hwc_layer_1_t, blending, 20, 28);
152 CHECK_MEMBER_AT(hwc_layer_1_t, sourceCropi, 24, 32);
153 CHECK_MEMBER_AT(hwc_layer_1_t, sourceCrop, 24, 32);
154 CHECK_MEMBER_AT(hwc_layer_1_t, sourceCropf, 24, 32);
155 CHECK_MEMBER_AT(hwc_layer_1_t, displayFrame, 40, 48);
156 CHECK_MEMBER_AT(hwc_layer_1_t, visibleRegionScreen, 56, 64);
157 CHECK_MEMBER_AT(hwc_layer_1_t, acquireFenceFd, 64, 80);
158 CHECK_MEMBER_AT(hwc_layer_1_t, releaseFenceFd, 68, 84);
159 CHECK_MEMBER_AT(hwc_layer_1_t, planeAlpha, 72, 88);
160 CHECK_MEMBER_AT(hwc_layer_1_t, _pad, 73, 89);
161
162 CHECK_MEMBER_AT(hwc_composer_device_1_t, common, 0, 0);
163 CHECK_MEMBER_AT(hwc_composer_device_1_t, prepare, 64, 120);
164 CHECK_MEMBER_AT(hwc_composer_device_1_t, set, 68, 128);
165 CHECK_MEMBER_AT(hwc_composer_device_1_t, eventControl, 72, 136);
166 CHECK_MEMBER_AT(hwc_composer_device_1_t, blank, 76, 144);
167 CHECK_MEMBER_AT(hwc_composer_device_1_t, query, 80, 152);
168 CHECK_MEMBER_AT(hwc_composer_device_1_t, registerProcs, 84, 160);
169 CHECK_MEMBER_AT(hwc_composer_device_1_t, dump, 88, 168);
170 CHECK_MEMBER_AT(hwc_composer_device_1_t, getDisplayConfigs, 92, 176);
171 CHECK_MEMBER_AT(hwc_composer_device_1_t, getDisplayAttributes, 96, 184);
Dan Stozae83d10c2014-05-06 15:56:59 -0700172 CHECK_MEMBER_AT(hwc_composer_device_1_t, getActiveConfig, 100, 192);
173 CHECK_MEMBER_AT(hwc_composer_device_1_t, setActiveConfig, 104, 200);
Greg Hackmann6d37e6a2014-07-24 13:27:07 -0700174 CHECK_MEMBER_AT(hwc_composer_device_1_t, setCursorPositionAsync, 108, 208);
175 CHECK_MEMBER_AT(hwc_composer_device_1_t, reserved_proc, 112, 216);
Rom Lemarchand1b22d072013-11-22 14:59:54 -0800176
177 //Types defined in gralloc.h
178 CHECK_MEMBER_AT(gralloc_module_t, common, 0, 0);
179 CHECK_MEMBER_AT(gralloc_module_t, registerBuffer, 128, 248);
180 CHECK_MEMBER_AT(gralloc_module_t, unregisterBuffer, 132, 256);
181 CHECK_MEMBER_AT(gralloc_module_t, lock, 136, 264);
182 CHECK_MEMBER_AT(gralloc_module_t, unlock, 140, 272);
183 CHECK_MEMBER_AT(gralloc_module_t, perform, 144, 280);
184 CHECK_MEMBER_AT(gralloc_module_t, lock_ycbcr, 148, 288);
Greg Hackmann1b819112014-05-12 13:48:30 -0700185 CHECK_MEMBER_AT(gralloc_module_t, lockAsync, 152, 296);
186 CHECK_MEMBER_AT(gralloc_module_t, unlockAsync, 156, 304);
187 CHECK_MEMBER_AT(gralloc_module_t, lockAsync_ycbcr, 160, 312);
188 CHECK_MEMBER_AT(gralloc_module_t, reserved_proc, 164, 320);
Rom Lemarchand1b22d072013-11-22 14:59:54 -0800189
190 CHECK_MEMBER_AT(alloc_device_t, common, 0, 0);
191 CHECK_MEMBER_AT(alloc_device_t, alloc, 64, 120);
192 CHECK_MEMBER_AT(alloc_device_t, free, 68, 128);
193 CHECK_MEMBER_AT(alloc_device_t, dump, 72, 136);
194 CHECK_MEMBER_AT(alloc_device_t, reserved_proc, 76, 144);
195
196 //Types defined in consumerir.h
197 CHECK_MEMBER_AT(consumerir_device_t, common, 0, 0);
198 CHECK_MEMBER_AT(consumerir_device_t, transmit, 64, 120);
199 CHECK_MEMBER_AT(consumerir_device_t, get_num_carrier_freqs, 68, 128);
200 CHECK_MEMBER_AT(consumerir_device_t, get_carrier_freqs, 72, 136);
201 CHECK_MEMBER_AT(consumerir_device_t, reserved, 76, 144);
202
203 //Types defined in camera_common.h
204 CHECK_MEMBER_AT(vendor_tag_ops_t, get_tag_count, 0, 0);
205 CHECK_MEMBER_AT(vendor_tag_ops_t, get_all_tags, 4, 8);
206 CHECK_MEMBER_AT(vendor_tag_ops_t, get_section_name, 8, 16);
207 CHECK_MEMBER_AT(vendor_tag_ops_t, get_tag_name, 12, 24);
208 CHECK_MEMBER_AT(vendor_tag_ops_t, get_tag_type, 16, 32);
209 CHECK_MEMBER_AT(vendor_tag_ops_t, reserved, 20, 40);
210
211 CHECK_MEMBER_AT(camera_module_t, common, 0, 0);
212 CHECK_MEMBER_AT(camera_module_t, get_number_of_cameras, 128, 248);
213 CHECK_MEMBER_AT(camera_module_t, get_camera_info, 132, 256);
214 CHECK_MEMBER_AT(camera_module_t, set_callbacks, 136, 264);
215 CHECK_MEMBER_AT(camera_module_t, get_vendor_tag_ops, 140, 272);
Greg Hackmann16c19a22014-06-13 13:52:48 -0700216 CHECK_MEMBER_AT(camera_module_t, open_legacy, 144, 280);
Chien-Yu Chen30159172015-01-08 11:06:38 -0800217 CHECK_MEMBER_AT(camera_module_t, set_torch_mode, 148, 288);
Eino-Ville Talvalaaee47822015-04-07 13:47:46 -0700218 CHECK_MEMBER_AT(camera_module_t, init, 152, 296);
219 CHECK_MEMBER_AT(camera_module_t, reserved, 156, 304);
Rom Lemarchand1b22d072013-11-22 14:59:54 -0800220
221 //Types defined in camera3.h
222 CHECK_MEMBER_AT(camera3_device_ops_t, initialize, 0, 0);
223 CHECK_MEMBER_AT(camera3_device_ops_t, configure_streams, 4, 8);
224 CHECK_MEMBER_AT(camera3_device_ops_t, register_stream_buffers, 8, 16);
225 CHECK_MEMBER_AT(camera3_device_ops_t, construct_default_request_settings, 12, 24);
226 CHECK_MEMBER_AT(camera3_device_ops_t, process_capture_request, 16, 32);
227 CHECK_MEMBER_AT(camera3_device_ops_t, get_metadata_vendor_tag_ops, 20, 40);
228 CHECK_MEMBER_AT(camera3_device_ops_t, dump, 24, 48);
229 CHECK_MEMBER_AT(camera3_device_ops_t, flush, 28, 56);
230 CHECK_MEMBER_AT(camera3_device_ops_t, reserved, 32, 64);
231}
232