Power Status (was Re: Because LC can't do two things at once.)

Peter M. Brigham pmbrig at gmail.com
Sat Mar 7 08:55:06 EST 2015


Both the constant declarations are identical -- the second should be for BAT1. You're competing with me for multiple postings with bugs, but I've still go you beat.   :-)

-- Peter

Peter M. Brigham
pmbrig at gmail.com
http://home.comcast.net/~pmbrig


On Mar 7, 2015, at 8:46 AM, Michael Doub wrote:

> ok, a new day and another attempt.  I hope we have it this time. ;-)
> 
> on mouseup
>  put __getPowerSource()
> end mouseup
> 
> function __caseSwitch
>   /* __caseSwitch Misc
>   Syntax:
>   __caseSwitch (var_to_Match,<matchValue>=<returnValue>,[<matchValue>=<returnValue>]...
>   Examples:
>   put caseSwitch(len(tZip),"5=zip","10=zip+4","*=not a zip code") into zipCodeType
>   Description:
>   Does a quick inline switch/case but supports a default for a non-match.
>   .    Also see __Switch
> 
>   param 1 is checkValue
>   params 2+ are in the form matchValue(s)>=<returnValue
>   .    separate multiple matcheValues with commas
>   .    and enclose each matchValue=returnValue pair in quotes
>   if checkValue matches one or more items in matchValue(s),
>   .    returns returnValue
> 
>   Note that checkValue should NOT be enclosed in quotes'
> 
>   Use a matchValue of "*" to specify a default value,
>   .    to be returned if no matches found in the list
>   .    if the default is "*=*" then no match returns the original <checkValue>
>   .    if no match and no default value specified, then returns empty
> 
>   Source:
>   Peter M. Brigham   from Ken Ray, use-LC list, originally named stsSwitch()
>   __caseSwitch */
>    put param(1) into tCheckValue
>   set the itemDel to "="
>   put "" into tDefault
>   repeat with x = 2 to the paramCount
>      put param(x) into tCheck
>      put item 1 of tCheck into tMatch
>      put item 2 of tCheck into tRetVal
>      replace "," with "=" in tMatch
>      if tCheckValue = empty and tMatch = empty then return tRetVal
>      if tCheckValue is among the items of tMatch then return tRetVal
>      if tMatch = "*" then
>         if tRetVal = "*" then
>            put tCheckValue into tDefault
>         else
>            put tRetVal into tDefault
>         end if
>      end if
>   end repeat
>   return tDefault
> end __caseSwitch
> 
> 
> function __getPowerSource
>   /* __getPowerSource Under Test - System
>   Syntax:
>   __getPowerSource()
>   Examples:
>   __getPowerSource()
>   Description:
>   -- returns the current power source for a laptop
>   --    "AC" or "Battery"
>   --    or "no battery" if there is no battery (Unix)
>   Source:
>   Peter M. Brigham with help from Martin Koob, Bob Sneidar, Richard Gaskin
>   __getPowerSource */
>   /* Include
>   __caseSwitch
>   */
> 
>   switch the platform
>      case "MacOS"
>         -- thanks to Martin Koob, use-LC list
>         put shell ("pmset -g batt") into tStatus
>         -- returns something like:
>         --    Currently drawing from 'AC Power'
>         --     -InternalBattery-0    99%; finishing charge; 0:00 remaining
>         return char 2 to -1 of word -2 of line 1 of tStatus
>         break
>      case "Win32"
>         -- thanks to Bob Sneidar, use-LC list
>         put shell("WMIC Path Win32_Battery GetAvailability") into tStatus
>         -- Line 3 will contain 2 if the battery is charging, 3 if running on battery
>         put line 3 of tStatus into tStatus
>         return __caseSwitch(tStatus,"3=Battery","*=AC")
>         break
>      default
>         -- Unix, thanks to Mark Wieder
>         constant kBatteryStatus0 = "/sys/class/power_supply/BAT0/status"
>         constant kBatteryStatus1 = "/sys/class/power_supply/BAT0/status"
>         if there is a file (kBatteryStatus0) then
>            open file (kBatteryStatus0) for read
>            read from file (kBatteryStatus0) until eof
>            put it into tStatus
>            close file  (kBatteryStatus0)
>         else if there is a file (kBatteryStatus1) then
>            open file (kBatteryStatus1) for read
>            read from file (kBatteryStatus1) until eof
>            put it into tStatus
>            close file  (kBatteryStatus1)
>         else
>            return "AC"
>            -- no battery, must be running off external power
>         end if
>         put word 1 of tStatus into tStatus
>         if tStatus = empty then return empty
>         return __caseSwitch(tStatus,"discharging=Battery","charging,unknown,full=AC","*=*")
>         -- if tStatus = empty, returns empty --
>         --    Unix users please test: should this return some value??
>         -- if tStatus is not in "discharging,charging,unknown,full" then
>         --    just returns whatever "/sys/class/power_supply/BATx" reports
>   end switch
> end __getPowerSource
> 
> 
> 
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode





More information about the use-livecode mailing list