summaryrefslogblamecommitdiffstats
path: root/obacklight/obacklight.ml
blob: 8edb3818e7dfff04f63668a8350b1425ab331f3a (plain) (tree)
1
2
3
4
5
6
7
8
9
10




                              
                                                     



                                                                                                                                              


                                                                                                                                                                                 


















                                                                                         
































                                                                          

           
    






                                                              

                          
                                                        

                                                                                       
    






                   
open Arg

(*
    Sett default path to sysfs
 *)
let default_sysfs_dir                    = ref "/sys"
let default_backlight_path               = ref (String.concat "" (List.append [!default_sysfs_dir]      ["/class/backlight/intel_backlight"]))
let default_backlight_maxbrightness_path = ref (String.concat "" (List.append [!default_backlight_path] ["/max_brightness"]))
let default_backlight_brightness_path    = ref (String.concat "" (List.append [!default_backlight_path] ["/brightness"]))

let set_backlight_path ()                 = default_backlight_path             := (String.concat "" (List.append [!default_sysfs_dir]      ["/class/backlight/intel_backlight"]))
let set_backlight_maxbrightness_path () = default_backlight_maxbrightness_path := (String.concat "" (List.append [!default_backlight_path] ["/max_brightness"]))
let set_backlight_brightness_path    () = default_backlight_brightness_path    := (String.concat "" (List.append [!default_backlight_path] ["/brightness"]))


let print_debug () = 
begin
    let _ = Printf.printf "sysfs:          %s\n" !default_sysfs_dir in
    let _ = Printf.printf "backlight:      %s\n" !default_backlight_path in
    let _ = Printf.printf "max_brightness: %s\n" !default_backlight_maxbrightness_path in
            Printf.printf "brightness:     %s\n" !default_backlight_brightness_path 
end

let set_sysfs_dir dir = 
begin
    (Printf.printf "Setting value of sysfs to %s\n" dir);
    default_sysfs_dir := dir;
    set_backlight_path ();
    set_backlight_maxbrightness_path ();
    set_backlight_brightness_path ()
end

let read_data filename = 
    let ic = open_in filename in 
    try
        let line = input_line ic in 
        close_in ic;
        (line)
    with e ->
        close_in_noerr ic;
        raise e

let show_brightness () = 
    let b = read_data !default_backlight_brightness_path in
    let mb = read_data !default_backlight_maxbrightness_path in
    let _  = Printf.printf "Brightness:     %s\n" b in
             Printf.printf "Max Brightness: %s\n" mb

(* Set brightness from 0-100% *)
let write_data filename a = 
    let oc = open_out filename in
    output_string oc a;
    close_out oc;;

let set_brightness brightness_path nv = 
    let mb = read_data !default_backlight_maxbrightness_path in
    let i_mb = int_of_string mb in
    let nv_percent =((float_of_int nv) /. 100.0) *. (float_of_int i_mb) in
    let _ = Printf.printf "%f\n" nv_percent in
    write_data brightness_path (string_of_int (int_of_float nv_percent))



let arg_num = Array.length Sys.argv

let main = 
begin
    
    let speclist = 
    [
        ("-s",Arg.String (set_sysfs_dir),"Sysfs directory")
    ] in 
    let usage_msg = "set backlight value" in
    let _ = Arg.parse speclist print_endline usage_msg in
    (* If there is not argument print value of default path *)
    if arg_num == 1 then
        show_brightness();
    (* If there is 1 argument set value to brigthness *)
    if arg_num == 2 then
        set_brightness !default_backlight_brightness_path (int_of_string Sys.argv.(1));
    
    print_debug ();
end

let () = main;;