/usr/sbin/smbios-lcd-brightness is in smbios-utils 2.3.0-0ubuntu1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | #! /usr/bin/python
# vim:expandtab:autoindent:tabstop=4:shiftwidth=4:filetype=python:tw=0
#############################################################################
#
# Copyright (c) 2005 Dell Computer Corporation
# Dual Licenced under GNU GPL and OSL
#
#############################################################################
"""smbios-lcd-brightness"""
from __future__ import generators
# import arranged alphabetically
import ctypes
import gettext
import locale
import os
import sys
import traceback
# the following vars are all substituted on install
# this bin isnt byte-compiled, so this is ok
__VERSION__="2.3.0"
pythondir="/usr/lib/python2.7/dist-packages"
clidir="/usr/share/smbios-utils"
# end vars
# import all local modules after this.
sys.path.insert(0,pythondir)
sys.path.insert(0,clidir)
import cli
from libsmbios_c import smi, token, localedir, GETTEXT_PACKAGE
from libsmbios_c.trace_decorator import decorate, traceLog, getLog
locale.setlocale(locale.LC_ALL, '')
gettext.install(GETTEXT_PACKAGE, localedir, unicode=1)
moduleLog = getLog()
verboseLog = getLog(prefix="verbose.")
def command_parse():
parser = cli.OptionParser(usage=__doc__, version=__VERSION__)
cli.addStdOptions(parser, passwordOpts=True, securityKeyOpt=True)
parser.add_option('--value', action="store", type="int", default=None, help= _("Set new value"))
parser.add_option('--battery', '-b', action="store_const", dest="which", const="battery", default="battery", help= _("Set new value to be used while running on battery power"))
parser.add_option('--ac', '-a', action="store_const", dest="which", const="ac", help= _("Set new value to be used while running on AC power"))
return parser.parse_args()
def printCurrent(readFn, tok, mode):
(current, minval, maxval) = readFn(tok.getPtr().location)
print _("Reading current %s mode setting") % mode
print _(" current: %s") % current
print _(" min: %s") % minval
print _(" max: %s") % maxval
return (current, minval, maxval)
def setValue(writeFn, tok, mode, options, minval, maxval):
print _("Write new %s mode setting") % mode
securitykey = cli.getSecurityKey(options)
ret = ctypes.c_uint32(-3)
writeFn(securitykey, tok.getPtr().location, options.value, ctypes.byref(ret))
if ret.value != 0:
raise Exception( "smi failed: %s" % ret.value )
def main():
exit_code = 0
(options, args) = command_parse()
cli.setup_std_options(options)
mode = _("Battery")
readFn = smi.read_battery_mode_setting
writeFn = smi.write_battery_mode_setting
if options.which=="ac":
mode = _("AC")
readFn = smi.read_ac_mode_setting
writeFn = smi.write_ac_mode_setting
DELL_LCD_BRIGHNESS_TOKEN = 0x007d;
class OutOfBounds(Exception): pass
try:
table = token.TokenTable()
tok = table[DELL_LCD_BRIGHNESS_TOKEN]
(current, minval, maxval) = printCurrent(readFn, tok, mode)
if options.value is not None:
if options.value < minval or options.value > maxval:
raise OutOfBounds()
setValue(writeFn, tok, mode, options, minval, maxval)
printCurrent(readFn, tok, mode)
except (IndexError,), e:
exit_code = 10
print _("LCD Brightness is not settable on this machine using this utility.")
except (smi.BadPassword,), e:
exit_code = 5
print _("Could not set value because the password was incorrect")
except (OutOfBounds,), e:
exit_code = 6
print _("value outside legal bounds")
except (smi.SMIExecutionError, ), e:
exit_code=3
moduleLog.info( _("ERROR: Could not execute SMI.") )
verboseLog.info( _("The smi library returned this error:") )
verboseLog.info( str(e) )
moduleLog.info( cli.standardFailMessage )
except (token.TokenTableParseError,), e:
exit_code=3
moduleLog.info( _("ERROR: Could not parse system SMBIOS table.") )
verboseLog.info( _("The smbios library returned this error:") )
verboseLog.info( str(e) )
moduleLog.info( cli.standardFailMessage )
except (token.TokenManipulationFailure,), e:
exit_code=4
moduleLog.info( _("ERROR: Could not manipulate system token.") )
verboseLog.info( _("The token library returned this error:") )
verboseLog.info( str(e) )
moduleLog.info( cli.standardFailMessage )
return exit_code
if __name__ == "__main__":
sys.exit( main() )
|