import init.${ro.hardware}.usb.rc
import init.${ro.hardware}.power.rc

on init
    # mount debugfs
    mount debugfs /sys/kernel/debug /sys/kernel/debug mode=755

    # disable transparent huge pages
    write /sys/kernel/mm/transparent_hugepage/enabled "never"

    # Initialize cpusets to boot-time values
    write /dev/cpuset/foreground/cpus 0-7
    write /dev/cpuset/background/cpus 0-7
    write /dev/cpuset/system-background/cpus 0-7
    write /dev/cpuset/top-app/cpus 0-7

    # Create UDS structure for base VR services
    mkdir /dev/socket/pdx 0775 system system
    mkdir /dev/socket/pdx/system 0775 system system
    mkdir /dev/socket/pdx/system/buffer_hub 0775 system system
    mkdir /dev/socket/pdx/system/performance 0775 system system
    mkdir /dev/socket/pdx/system/vr 0775 system system
    mkdir /dev/socket/pdx/system/vr/display 0775 system system
    mkdir /dev/socket/pdx/system/vr/pose 0775 system system
    mkdir /dev/socket/pdx/system/vr/sensors 0775 system system

    start watchdogd

on fs
    mount_all /vendor/etc/fstab.${ro.hardware}
    setprop ro.crypto.fuse_sdcard false

on post-fs
    # For legacy support
    # See storage config details at http://source.android.com/tech/storage/
    # since /storage is mounted on post-fs in init.rc
    symlink /sdcard /storage/sdcard0

    # BT LED sysfs entry
    write /sys/class/leds/bt_active/trigger "hci1rx"

    chmod 0666 /dev/ump
    chmod 0666 /dev/ion
    chmod 0666 /dev/graphics/fb0

# fake some battery state
    setprop status.battery.state Slow
    setprop status.battery.level 5
    setprop status.battery.level_raw  50
    setprop status.battery.level_scale 9

# Set Display density
    setprop ro.sf.lcd_density 160

# Set supported opengles version
    setprop ro.opengles.version 196608

# If an app forces screen rotation, revert it once the apps closes
    setprop persist.demo.rotationlock 1

# enable Google-specific location features,
# like NetworkLocationProvider and LocationCollector
    setprop ro.com.google.locationfeatures 1

# enable test harness
    setprop ro.test_harness true

on post-fs-data
    mkdir /data/media 0770 media_rw media_rw
    mkdir /data/misc/gatord 0700 root root
    # Set SELinux security contexts for files used by lava.
    restorecon_recursive /data/local/tmp/lava

on zygote-start
    mkdir /data/vendor/wifi 0770 wifi wifi
    mkdir /data/vendor/wifi/wpa 0770 wifi wifi
    mkdir /data/vendor/wifi/wpa/sockets 0770 wifi wifi

on property:sys.boot_completed=1
    # update cpuset now that processors are up
    # Foreground should contain most cores (7 is reserved for top-app)
    write /dev/cpuset/foreground/cpus 0-6

    # top-app gets all cpus (including reserved #7)
    write /dev/cpuset/top-app/cpus 0-7

    #background contains a small subset (generally one little core)
    write /dev/cpuset/background/cpus 0

    # add system-background cpuset, a new cpuset for system services
    # that should not run on larger cores
    # system-background is for system tasks that should only run on
    # little cores, not on bigs to be used only by init
    write /dev/cpuset/system-background/cpus 0-3

on property:usb_speed.switch=high
    write /sys/kernel/debug/f72c0000.usb/config "0"

on property:usb_speed.switch=full
    write /sys/kernel/debug/f72c0000.usb/config "1"

#userspace daemon needed for bluetooth
service uim /vendor/bin/uim
    class main
    user bluetooth
    group bluetooth net_bt_admin system
    oneshot

service wpa_supplicant /system/vendor/bin/hw/wpa_supplicant \
     -g@android:wpa_wlan0
     interface android.hardware.wifi.supplicant@1.0::ISupplicant default
     interface android.hardware.wifi.supplicant@1.1::ISupplicant default
     socket wpa_wlan0 dgram 660 wifi wifi
     class main
     disabled
     oneshot

# Set watchdog timer to 30 seconds and pet it every 10 seconds to get a 20 second margin
service watchdogd /sbin/watchdogd 10 20
    class core
    oneshot
    seclabel u:r:watchdogd:s0

service bugreport /system/bin/dumpstate -d -p -B -z \
    -o /data/user_de/0/com.android.shell/files/bugreports/bugreport
    class main
    disabled
    oneshot
