| #!/bin/sh /etc/rc.common |
| # Copyright (C) 2008-2011 OpenWrt.org |
| |
| START=50 |
| STOP=10 |
| |
| USE_PROCD=1 |
| |
| validate_section_hdidle() |
| { |
| uci_load_validate hd-idle hd-idle "$1" "$2" \ |
| 'disk:string' \ |
| 'enabled:bool' \ |
| 'idle_time_interval:uinteger:10' \ |
| 'idle_time_unit:string:minutes' |
| } |
| |
| compute_seconds() { |
| local interval="$1" |
| local unit="$2" |
| |
| # compute interval in seconds |
| case "$unit" in |
| "days" ) |
| interval_seconds=$(($interval*60*60*24)) |
| ;; |
| "hours" ) |
| interval_seconds=$(($interval*60*60)) |
| ;; |
| "minutes" ) |
| interval_seconds=$(($interval*60)) |
| ;; |
| "seconds" ) |
| interval_seconds=$interval |
| ;; |
| * ) |
| # default is minutes |
| interval_seconds=$(($interval*60)) |
| ;; |
| esac |
| |
| echo $interval_seconds |
| } |
| |
| hdidle_append() { |
| [ "$2" = 0 ] || return |
| |
| [ "$enabled" -gt 0 ] || return |
| |
| if [ "$numdisks" = "0" ]; then |
| procd_open_instance |
| procd_set_param command /usr/bin/hd-idle |
| procd_append_param command -d -i 0 |
| fi |
| procd_append_param command -a $disk |
| procd_append_param command -i "$(compute_seconds $idle_time_interval $idle_time_unit)" |
| numdisks=$(( numdisks + 1 )) |
| } |
| |
| start_service() { |
| config_load "hd-idle" |
| |
| numdisks="0" |
| config_foreach validate_section_hdidle "hd-idle" hdidle_append |
| |
| if [ "$numdisks" -gt 0 ]; then |
| procd_set_param respawn |
| procd_close_instance |
| fi |
| } |
| |
| service_triggers() { |
| procd_add_reload_trigger "hd-idle" |
| procd_add_validation validate_section_hdidle |
| } |