typeattribute radio coredomain, mlstrustedsubject;

app_domain(radio)

read_runtime_log_tags(radio)

# Property service
set_prop(radio, radio_control_prop)
set_prop(radio, radio_prop)
set_prop(radio, net_radio_prop)
set_prop(radio, telephony_status_prop)

# ctl interface
set_prop(radio, ctl_rildaemon_prop)

# Telephony code contains time / time zone detection logic so it reads the associated properties.
get_prop(radio, time_prop)

# allow telephony to access platform compat to log permission denials
allow radio platform_compat_service:service_manager find;

allow radio uce_service:service_manager find;

# Manage /data/misc/emergencynumberdb
allow radio emergency_data_file:dir r_dir_perms;
allow radio emergency_data_file:file r_file_perms;

# allow telephony to access related cache properties
set_prop(radio, binder_cache_telephony_server_prop);
neverallow { domain -radio -init }
    binder_cache_telephony_server_prop:property_service set;

# allow sending pulled atoms to statsd
binder_call(radio, statsd)

