#
# USF sensor HAL SELinux type enforcements.
#

# Allow access to the AoC communication driver.
allow hal_sensors_default aoc_device:chr_file rw_file_perms;

# Allow access to CHRE socket to connect to nanoapps.
allow hal_sensors_default chre:unix_stream_socket connectto;
allow hal_sensors_default chre_socket:sock_file write;

# Allow create thread to watch AOC's device.
allow hal_sensors_default device:dir r_dir_perms;

# Allow SensorSuez to connect AIDL stats.
allow hal_sensors_default fwk_stats_service:service_manager find;

# Allow reading of sensor registry persist files and camera persist files.
allow hal_sensors_default mnt_vendor_file:dir search;
allow hal_sensors_default persist_file:dir search;
allow hal_sensors_default persist_file:file r_file_perms;
allow hal_sensors_default persist_sensor_reg_file:dir r_dir_perms;
allow hal_sensors_default persist_sensor_reg_file:file r_file_perms;
r_dir_file(hal_sensors_default, persist_camera_file)

# Allow creation and writing of sensor registry data files.
allow hal_sensors_default sensor_reg_data_file:dir r_dir_perms;
allow hal_sensors_default sensor_reg_data_file:file r_file_perms;

# Allow access to the display info for ALS.
allow hal_sensors_default sysfs_display:file rw_file_perms;

# Allow access to the AoC clock and kernel boot time sys FS node. This is needed
# to synchronize the AP and AoC clock timestamps.
allow hal_sensors_default sysfs_aoc:dir search;
allow hal_sensors_default sysfs_aoc_boottime:file r_file_perms;

# Allow access to the files of CDT information.
allow hal_sensors_default sysfs_chosen:dir search;
allow hal_sensors_default sysfs_chosen:file r_file_perms;

# Allow access to sensor service for sensor_listener.
binder_call(hal_sensors_default, system_server);

# Allow sensor HAL to access the display service HAL
allow hal_sensors_default hal_pixel_display_service:service_manager find;

# Allow display_info_service access to the backlight driver.
allow hal_sensors_default sysfs_leds:dir search;
allow hal_sensors_default sysfs_leds:file r_file_perms;
