typeattribute radio system_writes_vendor_properties_violators;

get_prop(radio, ims_prop)
get_prop(radio, vendor_radio_prop)

allow radio qmuxd_socket:dir search;
allow radio qmuxd_socket:sock_file write;

allow radio vendor_file:lnk_file r_file_perms;
allow radio vendor_framework_file:file r_file_perms;
allow radio vendor_framework_file:dir search;

hwbinder_use(radio)
allow radio vnd_ims_radio_hwservice:hwservice_manager find;
allow radio vnd_qcrilhook_hwservice:hwservice_manager find;
allow radio hal_imsrtp_hwservice:hwservice_manager find;

add_service(radio, radio_service)
allow radio {
  mediaextractor_service
  mediacodec_service
}:service_manager find;

r_dir_file(radio, sysfs_msm_subsys)

# IMS needs permission to use avtimer
allow radio avtimer_device:chr_file r_file_perms;

binder_call(radio, hal_imsrtp)
