1453df54542b1f597b30d4f7ded66c6b161b0bc5cPaul Stewart#!/bin/sh
2c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu#
3c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu# Copyright (C) 2014 The Android Open Source Project
4c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu#
5c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu# Licensed under the Apache License, Version 2.0 (the "License");
6c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu# you may not use this file except in compliance with the License.
7c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu# You may obtain a copy of the License at
8c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu#
9c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu#      http://www.apache.org/licenses/LICENSE-2.0
10c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu#
11c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu# Unless required by applicable law or agreed to in writing, software
12c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu# distributed under the License is distributed on an "AS IS" BASIS,
13c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu# See the License for the specific language governing permissions and
15c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu# limitations under the License.
16c0beca55d290fe0b1c96d78cbbcf94b05c23f5a5Peter Qiu#
178e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart#
188e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart# Set the Wake on LAN behavior.
198e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart
208e9e41cedee1a6be89ebc027afab62c9a52cb574Paul StewartFLAGS_HELP="Usage:
218e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart
228e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart  $(basename $0)
238e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart
248e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewartor
258e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart
268e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart  $(basename $0) [true | false] "
278e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart
288e9e41cedee1a6be89ebc027afab62c9a52cb574Paul StewartFLIMFLAM=org.chromium.flimflam
298e9e41cedee1a6be89ebc027afab62c9a52cb574Paul StewartIMANAGER="${FLIMFLAM}.Manager"
308e9e41cedee1a6be89ebc027afab62c9a52cb574Paul StewartPROPERTY_NAME=WakeOnLanEnabled
318e9e41cedee1a6be89ebc027afab62c9a52cb574Paul StewartPROPERTY_DESC="Wake on LAN"
328e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart
338e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewartusage() {
348e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart  echo "Invalid invocation: $*"
358e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart  echo
368e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart  echo $FLAGS_HELP
378e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart  exit 1
388e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart}
398e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart
408e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewartdbus () {
418e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart  local obj="$1"
428e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart  local meth="$2"
438e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart  shift 2
448e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart
458e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart  dbus-send --system --print-reply --fixed --dest="${FLIMFLAM}" "${obj}" "${meth}" "$@"
468e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart}
478e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart
488e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewartget_manager_property () {
498e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart  dbus / "${IMANAGER}.GetProperties" | sed -n "/$1/s/.* //p"
508e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart}
518e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart
528e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewartdisplay_value () {
538e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart  local value=$(get_manager_property "${PROPERTY_NAME}")
548e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart
558e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart  if [ -n "${value}" ] ; then
568e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart    echo "Current ${PROPERTY_DESC} setting: " $value
578e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart    exit 0
588e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart  fi
598e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart
608e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart  echo "This connection manager instance does not support ${PROPERTY_DESC}"
618e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart  exit 0
628e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart}
638e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart
64453df54542b1f597b30d4f7ded66c6b161b0bc5cPaul Stewartif [ $# -lt 1 ]; then
658e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart    display_value
668e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewartfi
678e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart
688e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewartset_value="$1"
698e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart
708e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewartif [ "${set_value}" != "false" -a "${set_value}" != "true" ] ; then
718e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart    usage "Argument must be 'true' or 'false'"
728e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewartfi
738e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewart
748e9e41cedee1a6be89ebc027afab62c9a52cb574Paul Stewartdbus / "${IMANAGER}.SetProperty" string:"${PROPERTY_NAME}" "variant:boolean:${set_value}"
75