# Modem helper service. Spawns kickstart.
type mdm_helper, domain, device_domain_deprecated;
type mdm_helper_exec, file_type, exec_type;

init_daemon_domain(mdm_helper)

# access /sys/power/wakelock
allow mdm_helper self:capability dac_override;

# Spawn /system/bin/efsks and /system/bin/ks
allow mdm_helper mdm_helper_exec:file rx_file_perms;

# Access USB host ks bridge drivers
allow mdm_helper mdm_helper_device:chr_file rw_file_perms;

# Read and write for EFS
allow mdm_helper efs_block_device:blk_file rw_file_perms;
allow mdm_helper block_device:dir { getattr write search };

# Let qcks access /dev/mdm node (modem driver)??
allow mdm_helper radio_device:chr_file r_file_perms;
# Access the modem Hand Over Block (HOB)
allow mdm_helper modem_hob_block_device:blk_file rw_file_perms;
# ks checks the writeback path (dir) for the EFS block devices to make sure it is valid
allow mdm_helper block_device:dir getattr;

allow mdm_helper firmware_file:dir r_dir_perms;
allow mdm_helper firmware_file:file r_file_perms;

allow mdm_helper fsg_file:dir r_dir_perms;
allow mdm_helper fsg_file:file r_file_perms;

allow mdm_helper persist_file:dir r_dir_perms;
allow mdm_helper persist_modem_file:dir rw_dir_perms;
allow mdm_helper persist_modem_file:file create_file_perms;

# Runs commands via sh.
allow mdm_helper shell_exec:file rx_file_perms;
# TODO remove once the modem team removes system() calls to toolbox functions
allow mdm_helper toolbox_exec:file rx_file_perms;
allow mdm_helper system_file:file x_file_perms;

allow mdm_helper sysfs_xhci_msm_hsic:dir r_dir_perms;
allow mdm_helper sysfs_xhci_msm_hsic:file rw_file_perms;
allow mdm_helper sysfs_msm_hsic_host:file write;

# host_ready not labeled correctly
allow mdm_helper sysfs:file write;
allow mdm_helper sysfs_usb:file write;

wakelock_use(mdm_helper)

# change ownership of modem log files
allow mdm_helper self:capability { fowner chown fsetid };

# Write ram dump logs
allow mdm_helper ram_dump_logs:dir create_dir_perms;
allow mdm_helper ram_dump_logs:file create_file_perms;

# write modem logs to dropbox
allow mdm_helper dropbox_data_file:dir rw_dir_perms;
allow mdm_helper dropbox_data_file:file create_file_perms;

# write radio properties
set_prop(mdm_helper, radio_prop)
