src/power/emscripten/SDL_syspower.c
author Sam Lantinga <slouken@libsdl.org>
Wed, 03 Jan 2018 10:03:25 -0800
changeset 11811 5d94cb6b24d3
parent 10737 3406a0f8b041
child 12503 806492103856
permissions -rw-r--r--
Updated copyright for 2018
icculus@9278
     1
/*
icculus@9278
     2
  Simple DirectMedia Layer
slouken@11811
     3
  Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
icculus@9278
     4
icculus@9278
     5
  This software is provided 'as-is', without any express or implied
icculus@9278
     6
  warranty.  In no event will the authors be held liable for any damages
icculus@9278
     7
  arising from the use of this software.
icculus@9278
     8
icculus@9278
     9
  Permission is granted to anyone to use this software for any purpose,
icculus@9278
    10
  including commercial applications, and to alter it and redistribute it
icculus@9278
    11
  freely, subject to the following restrictions:
icculus@9278
    12
icculus@9278
    13
  1. The origin of this software must not be misrepresented; you must not
icculus@9278
    14
     claim that you wrote the original software. If you use this software
icculus@9278
    15
     in a product, an acknowledgment in the product documentation would be
icculus@9278
    16
     appreciated but is not required.
icculus@9278
    17
  2. Altered source versions must be plainly marked as such, and must not be
icculus@9278
    18
     misrepresented as being the original software.
icculus@9278
    19
  3. This notice may not be removed or altered from any source distribution.
icculus@9278
    20
*/
icculus@9278
    21
#include "../../SDL_internal.h"
icculus@9278
    22
icculus@9278
    23
#ifndef SDL_POWER_DISABLED
icculus@9278
    24
#if SDL_POWER_EMSCRIPTEN
icculus@9278
    25
icculus@9278
    26
#include <emscripten/html5.h>
icculus@9278
    27
icculus@9278
    28
#include "SDL_power.h"
icculus@9278
    29
icculus@9278
    30
SDL_bool
icculus@9278
    31
SDL_GetPowerInfo_Emscripten(SDL_PowerState *state, int *seconds, int *percent)
icculus@9278
    32
{
icculus@9278
    33
    EmscriptenBatteryEvent batteryState;
icculus@9278
    34
    int haveBattery = 0;
icculus@9278
    35
icculus@9278
    36
    if (emscripten_get_battery_status(&batteryState) == EMSCRIPTEN_RESULT_NOT_SUPPORTED)
icculus@9278
    37
        return SDL_FALSE;
icculus@9278
    38
icculus@9278
    39
    haveBattery = batteryState.level != 1.0 || !batteryState.charging || batteryState.chargingTime != 0.0;
icculus@9278
    40
icculus@9278
    41
    if (!haveBattery) {
icculus@9278
    42
        *state = SDL_POWERSTATE_NO_BATTERY;
icculus@9278
    43
        *seconds = -1;
icculus@9278
    44
        *percent = -1;
icculus@9278
    45
        return SDL_TRUE;
icculus@9278
    46
    }
icculus@9278
    47
icculus@9278
    48
    if (batteryState.charging)
icculus@9278
    49
        *state = batteryState.chargingTime == 0.0 ? SDL_POWERSTATE_CHARGED : SDL_POWERSTATE_CHARGING;
icculus@9278
    50
    else
icculus@9278
    51
        *state = SDL_POWERSTATE_ON_BATTERY;
icculus@9278
    52
icculus@9278
    53
    *seconds = batteryState.dischargingTime;
icculus@9278
    54
    *percent = batteryState.level * 100;
icculus@9278
    55
icculus@9278
    56
    return SDL_TRUE;
icculus@9278
    57
}
icculus@9278
    58
icculus@9278
    59
#endif /* SDL_POWER_EMSCRIPTEN */
icculus@9278
    60
#endif /* SDL_POWER_DISABLED */
icculus@9278
    61
icculus@9278
    62
/* vi: set ts=4 sw=4 expandtab: */