# Copyright (C) 2012 The Android Open Source Project
#
# IMPORTANT: Do not create world writable files or directories.
# This is a common source of Android security bugs.
#

# service can not be overwritten except SPRINT
# Thus, rilcarrier is imported before common rc, like init.rilchip.rc
import /init.rilcarrier.rc
import /init.rilchip.rc
import /init.rilepdg.rc

on boot

# AT Distributor for factory test
service at_distributor /system/bin/logwrapper /system/bin/at_distributor
    class late_start
    user root
    group radio misc log

service DR-daemon /system/bin/logwrapper /system/bin/ddexe
    class main
    user root
    group system radio inet net_raw

service SMD-daemon /system/bin/logwrapper /system/bin/smdexe
    class main
    user root
    group system radio inet net_raw

service BCS-daemon /system/bin/logwrapper /system/bin/connfwexe
    class main
    user root
    group system radio inet net_raw

# for ethernet
service dhcpcd_eth0 /system/bin/dhcpcd -ABKL
    class main
    disabled
    oneshot

# for Wi-Fi only models
on property:ro.radio.noril=yes
stop ril-daemon
