/*
 * Copyright (C) 2012 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include <cstddef>
#include <system/window.h>
#include <hardware/hardware.h>
#include <hardware/sensors.h>
#include <hardware/fb.h>
#include <hardware/hwcomposer.h>
#include <hardware/gralloc.h>
#include <hardware/consumerir.h>
#include <hardware/camera_common.h>
#include <hardware/camera3.h>

//Ideally this would print type.member instead we need to rely on the line number from the output
template <size_t actual, size_t expected> void check_member(void) {
    static_assert(actual == expected, "");
}

#ifdef __LP64__
#define CHECK_MEMBER_AT(type, member, off32, off64) \
    check_member<offsetof(type, member), off64>()
#else
#define CHECK_MEMBER_AT(type, member, off32, off64) \
    check_member<offsetof(type, member), off32>()
#endif

void CheckOffsets(void) {
    //Types defined in hardware.h
    CHECK_MEMBER_AT(hw_module_t, tag, 0, 0);
    CHECK_MEMBER_AT(hw_module_t, module_api_version, 4, 4);
    CHECK_MEMBER_AT(hw_module_t, hal_api_version, 6, 6);
    CHECK_MEMBER_AT(hw_module_t, id, 8, 8);
    CHECK_MEMBER_AT(hw_module_t, name, 12, 16);
    CHECK_MEMBER_AT(hw_module_t, author, 16, 24);
    CHECK_MEMBER_AT(hw_module_t, methods, 20, 32);
    CHECK_MEMBER_AT(hw_module_t, dso, 24, 40);
    CHECK_MEMBER_AT(hw_module_t, reserved, 28, 48);

    CHECK_MEMBER_AT(hw_device_t, tag, 0, 0);
    CHECK_MEMBER_AT(hw_device_t, version, 4, 4);
    CHECK_MEMBER_AT(hw_device_t, module, 8, 8);
    CHECK_MEMBER_AT(hw_device_t, reserved, 12, 16);
    CHECK_MEMBER_AT(hw_device_t, close, 60, 112);

    //Types defined in sensors.h
    CHECK_MEMBER_AT(sensors_vec_t, v, 0, 0);
    CHECK_MEMBER_AT(sensors_vec_t, x, 0, 0);
    CHECK_MEMBER_AT(sensors_vec_t, y, 4, 4);
    CHECK_MEMBER_AT(sensors_vec_t, z, 8, 8);
    CHECK_MEMBER_AT(sensors_vec_t, azimuth, 0, 0);
    CHECK_MEMBER_AT(sensors_vec_t, pitch, 4, 4);
    CHECK_MEMBER_AT(sensors_vec_t, roll, 8, 8);
    CHECK_MEMBER_AT(sensors_vec_t, status, 12, 12);
    CHECK_MEMBER_AT(sensors_vec_t, reserved, 13, 13);

    CHECK_MEMBER_AT(sensors_event_t, version, 0, 0);
    CHECK_MEMBER_AT(sensors_event_t, sensor, 4, 4);
    CHECK_MEMBER_AT(sensors_event_t, type, 8, 8);
    CHECK_MEMBER_AT(sensors_event_t, reserved0, 12, 12);
    CHECK_MEMBER_AT(sensors_event_t, timestamp, 16, 16);
    CHECK_MEMBER_AT(sensors_event_t, data, 24, 24);
    CHECK_MEMBER_AT(sensors_event_t, acceleration, 24, 24);
    CHECK_MEMBER_AT(sensors_event_t, magnetic, 24, 24);
    CHECK_MEMBER_AT(sensors_event_t, orientation, 24, 24);
    CHECK_MEMBER_AT(sensors_event_t, gyro, 24, 24);
    CHECK_MEMBER_AT(sensors_event_t, temperature, 24, 24);
    CHECK_MEMBER_AT(sensors_event_t, distance, 24, 24);
    CHECK_MEMBER_AT(sensors_event_t, light, 24, 24);
    CHECK_MEMBER_AT(sensors_event_t, pressure, 24, 24);
    CHECK_MEMBER_AT(sensors_event_t, relative_humidity, 24, 24);
    CHECK_MEMBER_AT(sensors_event_t, uncalibrated_gyro, 24, 24);
    CHECK_MEMBER_AT(sensors_event_t, uncalibrated_magnetic, 24, 24);
    CHECK_MEMBER_AT(sensors_event_t, meta_data, 24, 24);
    CHECK_MEMBER_AT(sensors_event_t, u64, 24, 24);
    CHECK_MEMBER_AT(sensors_event_t, u64.data, 24, 24);
    CHECK_MEMBER_AT(sensors_event_t, u64.step_counter, 24, 24);
    CHECK_MEMBER_AT(sensors_event_t, reserved1, 88, 88);

    CHECK_MEMBER_AT(struct sensor_t, name, 0, 0);
    CHECK_MEMBER_AT(struct sensor_t, vendor, 4, 8);
    CHECK_MEMBER_AT(struct sensor_t, version, 8, 16);
    CHECK_MEMBER_AT(struct sensor_t, handle, 12, 20);
    CHECK_MEMBER_AT(struct sensor_t, type, 16, 24);
    CHECK_MEMBER_AT(struct sensor_t, maxRange, 20, 28);
    CHECK_MEMBER_AT(struct sensor_t, resolution, 24, 32);
    CHECK_MEMBER_AT(struct sensor_t, power, 28, 36);
    CHECK_MEMBER_AT(struct sensor_t, minDelay, 32, 40);
    CHECK_MEMBER_AT(struct sensor_t, fifoReservedEventCount, 36, 44);
    CHECK_MEMBER_AT(struct sensor_t, fifoMaxEventCount, 40, 48);
    CHECK_MEMBER_AT(struct sensor_t, reserved, 44, 56);

    CHECK_MEMBER_AT(sensors_poll_device_1_t, v0, 0, 0);
    CHECK_MEMBER_AT(sensors_poll_device_1_t, common, 0, 0);
    CHECK_MEMBER_AT(sensors_poll_device_1_t, activate, 64, 120);
    CHECK_MEMBER_AT(sensors_poll_device_1_t, setDelay, 68, 128);
    CHECK_MEMBER_AT(sensors_poll_device_1_t, poll, 72, 136);
    CHECK_MEMBER_AT(sensors_poll_device_1_t, batch, 76, 144);
    CHECK_MEMBER_AT(sensors_poll_device_1_t, flush, 80, 152);
    CHECK_MEMBER_AT(sensors_poll_device_1_t, reserved_procs, 84, 160);

    //Types defined in fb.h
    CHECK_MEMBER_AT(framebuffer_device_t, common, 0, 0);
    CHECK_MEMBER_AT(framebuffer_device_t, flags, 64, 120);
    CHECK_MEMBER_AT(framebuffer_device_t, width, 68, 124);
    CHECK_MEMBER_AT(framebuffer_device_t, height, 72, 128);
    CHECK_MEMBER_AT(framebuffer_device_t, stride, 76, 132);
    CHECK_MEMBER_AT(framebuffer_device_t, format, 80, 136);
    CHECK_MEMBER_AT(framebuffer_device_t, xdpi, 84, 140);
    CHECK_MEMBER_AT(framebuffer_device_t, ydpi, 88, 144);
    CHECK_MEMBER_AT(framebuffer_device_t, fps, 92, 148);
    CHECK_MEMBER_AT(framebuffer_device_t, minSwapInterval, 96, 152);
    CHECK_MEMBER_AT(framebuffer_device_t, maxSwapInterval, 100, 156);
    CHECK_MEMBER_AT(framebuffer_device_t, numFramebuffers, 104, 160);
    CHECK_MEMBER_AT(framebuffer_device_t, reserved, 108, 164);
    CHECK_MEMBER_AT(framebuffer_device_t, setSwapInterval, 136, 192);
    CHECK_MEMBER_AT(framebuffer_device_t, setUpdateRect, 140, 200);
    CHECK_MEMBER_AT(framebuffer_device_t, post, 144, 208);
    CHECK_MEMBER_AT(framebuffer_device_t, compositionComplete, 148, 216);
    CHECK_MEMBER_AT(framebuffer_device_t, dump, 152, 224);
    CHECK_MEMBER_AT(framebuffer_device_t, enableScreen, 156, 232);
    CHECK_MEMBER_AT(framebuffer_device_t, reserved_proc, 160, 240);

    //Types defined in hwcomposer.h
    CHECK_MEMBER_AT(hwc_layer_1_t, compositionType, 0, 0);
    CHECK_MEMBER_AT(hwc_layer_1_t, hints, 4, 4);
    CHECK_MEMBER_AT(hwc_layer_1_t, flags, 8, 8);
    CHECK_MEMBER_AT(hwc_layer_1_t, backgroundColor, 12, 16);
    CHECK_MEMBER_AT(hwc_layer_1_t, handle, 12, 16);
    CHECK_MEMBER_AT(hwc_layer_1_t, transform, 16, 24);
    CHECK_MEMBER_AT(hwc_layer_1_t, blending, 20, 28);
    CHECK_MEMBER_AT(hwc_layer_1_t, sourceCropi, 24, 32);
    CHECK_MEMBER_AT(hwc_layer_1_t, sourceCrop, 24, 32);
    CHECK_MEMBER_AT(hwc_layer_1_t, sourceCropf, 24, 32);
    CHECK_MEMBER_AT(hwc_layer_1_t, displayFrame, 40, 48);
    CHECK_MEMBER_AT(hwc_layer_1_t, visibleRegionScreen, 56, 64);
    CHECK_MEMBER_AT(hwc_layer_1_t, acquireFenceFd, 64, 80);
    CHECK_MEMBER_AT(hwc_layer_1_t, releaseFenceFd, 68, 84);
    CHECK_MEMBER_AT(hwc_layer_1_t, planeAlpha, 72, 88);
    CHECK_MEMBER_AT(hwc_layer_1_t, _pad, 73, 89);

    CHECK_MEMBER_AT(hwc_composer_device_1_t, common, 0, 0);
    CHECK_MEMBER_AT(hwc_composer_device_1_t, prepare, 64, 120);
    CHECK_MEMBER_AT(hwc_composer_device_1_t, set, 68, 128);
    CHECK_MEMBER_AT(hwc_composer_device_1_t, eventControl, 72, 136);
    CHECK_MEMBER_AT(hwc_composer_device_1_t, blank, 76, 144);
    CHECK_MEMBER_AT(hwc_composer_device_1_t, query, 80, 152);
    CHECK_MEMBER_AT(hwc_composer_device_1_t, registerProcs, 84, 160);
    CHECK_MEMBER_AT(hwc_composer_device_1_t, dump, 88, 168);
    CHECK_MEMBER_AT(hwc_composer_device_1_t, getDisplayConfigs, 92, 176);
    CHECK_MEMBER_AT(hwc_composer_device_1_t, getDisplayAttributes, 96, 184);
    CHECK_MEMBER_AT(hwc_composer_device_1_t, reserved_proc, 100, 192);

    //Types defined in gralloc.h
    CHECK_MEMBER_AT(gralloc_module_t, common, 0, 0);
    CHECK_MEMBER_AT(gralloc_module_t, registerBuffer, 128, 248);
    CHECK_MEMBER_AT(gralloc_module_t, unregisterBuffer, 132, 256);
    CHECK_MEMBER_AT(gralloc_module_t, lock, 136, 264);
    CHECK_MEMBER_AT(gralloc_module_t, unlock, 140, 272);
    CHECK_MEMBER_AT(gralloc_module_t, perform, 144, 280);
    CHECK_MEMBER_AT(gralloc_module_t, lock_ycbcr, 148, 288);
    CHECK_MEMBER_AT(gralloc_module_t, reserved_proc, 152, 296);

    CHECK_MEMBER_AT(alloc_device_t, common, 0, 0);
    CHECK_MEMBER_AT(alloc_device_t, alloc, 64, 120);
    CHECK_MEMBER_AT(alloc_device_t, free, 68, 128);
    CHECK_MEMBER_AT(alloc_device_t, dump, 72, 136);
    CHECK_MEMBER_AT(alloc_device_t, reserved_proc, 76, 144);

    //Types defined in consumerir.h
    CHECK_MEMBER_AT(consumerir_device_t, common, 0, 0);
    CHECK_MEMBER_AT(consumerir_device_t, transmit, 64, 120);
    CHECK_MEMBER_AT(consumerir_device_t, get_num_carrier_freqs, 68, 128);
    CHECK_MEMBER_AT(consumerir_device_t, get_carrier_freqs, 72, 136);
    CHECK_MEMBER_AT(consumerir_device_t, reserved, 76, 144);

    //Types defined in camera_common.h
    CHECK_MEMBER_AT(vendor_tag_ops_t, get_tag_count, 0, 0);
    CHECK_MEMBER_AT(vendor_tag_ops_t, get_all_tags, 4, 8);
    CHECK_MEMBER_AT(vendor_tag_ops_t, get_section_name, 8, 16);
    CHECK_MEMBER_AT(vendor_tag_ops_t, get_tag_name, 12, 24);
    CHECK_MEMBER_AT(vendor_tag_ops_t, get_tag_type, 16, 32);
    CHECK_MEMBER_AT(vendor_tag_ops_t, reserved, 20, 40);

    CHECK_MEMBER_AT(camera_module_t, common, 0, 0);
    CHECK_MEMBER_AT(camera_module_t, get_number_of_cameras, 128, 248);
    CHECK_MEMBER_AT(camera_module_t, get_camera_info, 132, 256);
    CHECK_MEMBER_AT(camera_module_t, set_callbacks, 136, 264);
    CHECK_MEMBER_AT(camera_module_t, get_vendor_tag_ops, 140, 272);
    CHECK_MEMBER_AT(camera_module_t, reserved, 144, 280);

    //Types defined in camera3.h
    CHECK_MEMBER_AT(camera3_device_ops_t, initialize, 0, 0);
    CHECK_MEMBER_AT(camera3_device_ops_t, configure_streams, 4, 8);
    CHECK_MEMBER_AT(camera3_device_ops_t, register_stream_buffers, 8, 16);
    CHECK_MEMBER_AT(camera3_device_ops_t, construct_default_request_settings, 12, 24);
    CHECK_MEMBER_AT(camera3_device_ops_t, process_capture_request, 16, 32);
    CHECK_MEMBER_AT(camera3_device_ops_t, get_metadata_vendor_tag_ops, 20, 40);
    CHECK_MEMBER_AT(camera3_device_ops_t, dump, 24, 48);
    CHECK_MEMBER_AT(camera3_device_ops_t, flush, 28, 56);
    CHECK_MEMBER_AT(camera3_device_ops_t, reserved, 32, 64);
}

