1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283(*
* uPower_policy.ml
* ----------------
* Copyright : (c) 2010, Jeremie Dimino <jeremie@dimino.org>
* Licence : BSD3
*
* This file is a part of obus, an ocaml implementation of D-Bus.
*)openLwttypecookie=inttypelatency=[`Cpu_dma|`Network]letstring_of_latency=function|`Cpu_dma->"cpu_dma"|`Network->"network"letlatency_of_string=function|"cpu_dma"->`Cpu_dma|"network"->`Network|latency->Printf.ksprintffailwith"unknown latency type (%S)"latencytypelatency_request={lr_cookie:cookie;lr_uid:int;lr_pid:int;lr_exec:string;lr_timespec:int64;lr_persistent:bool;lr_typ:latency;lr_reserved:string;lr_value:int;}openUPower_interfaces.Org_freedesktop_UPower_QoSletproxydaemon=OBus_proxy.make(UPower.to_peerdaemon)["org";"freedesktop";"UPower";"Policy"]letset_minimum_latencydaemon~latency~value=OBus_method.callm_SetMinimumLatency(proxydaemon)(string_of_latencylatency,Int32.of_intvalue)letrequest_latencydaemon~latency~value~persistent=letvalue=Int32.of_intvalueinlet%lwtcookie=OBus_method.callm_RequestLatency(proxydaemon)(string_of_latencylatency,value,persistent)inletcookie=Int32.to_intcookieinreturncookieletcancel_requestdaemon~latency~cookie=letcookie=Int32.of_intcookieinOBus_method.callm_CancelRequest(proxydaemon)(string_of_latencylatency,cookie)letget_latencydaemon~latency=let%lwtvalue=OBus_method.callm_GetLatency(proxydaemon)(string_of_latencylatency)inletvalue=Int32.to_intvalueinreturnvalueletlatency_changeddaemon=OBus_signal.map(fun(latency,value)->(latency_of_stringlatency,Int32.to_intvalue))(OBus_signal.makes_LatencyChanged(proxydaemon))letget_latency_requestsdaemon=let%lwtrequests=OBus_method.callm_GetLatencyRequests(proxydaemon)()inreturn(List.map(fun(cookie,uid,pid,exec,timespec,persistent,typ,reserved,value)->{lr_cookie=Int32.to_intcookie;lr_uid=Int32.to_intuid;lr_pid=Int32.to_intpid;lr_exec=exec;lr_timespec=timespec;lr_persistent=persistent;lr_typ=latency_of_stringtyp;lr_reserved=reserved;lr_value=Int32.to_intvalue;})requests)letrequests_changeddaemon=OBus_signal.makes_RequestsChanged(proxydaemon)