type modem_diagnostic_app, domain;

app_domain(modem_diagnostic_app)
net_domain(modem_diagnostic_app)

allow modem_diagnostic_app app_api_service:service_manager find;
allow modem_diagnostic_app radio_service:service_manager find;

userdebug_or_eng(`
  binder_call(modem_diagnostic_app, dmd)

  set_prop(modem_diagnostic_app, vendor_cbd_prop)
  set_prop(modem_diagnostic_app, vendor_rild_prop)
  set_prop(modem_diagnostic_app, vendor_modem_prop)

  allow modem_diagnostic_app sysfs_chosen:dir r_dir_perms;
  allow modem_diagnostic_app sysfs_chosen:file r_file_perms;

  allow modem_diagnostic_app vendor_fw_file:file r_file_perms;

  allow modem_diagnostic_app radio_vendor_data_file:dir create_dir_perms;
  allow modem_diagnostic_app radio_vendor_data_file:file create_file_perms;

  allow modem_diagnostic_app mnt_vendor_file:dir r_dir_perms;
  allow modem_diagnostic_app modem_img_file:dir r_dir_perms;
  allow modem_diagnostic_app modem_img_file:file r_file_perms;
  allow modem_diagnostic_app modem_img_file:lnk_file r_file_perms;

  allow modem_diagnostic_app hal_vendor_oem_hwservice:hwservice_manager find;
')
