diff options
author | Julian Murgia <the.straton@gmail.com> | 2016-07-23 13:15:55 +0200 |
---|---|---|
committer | RĂ©mi Verschelde <rverschelde@gmail.com> | 2017-03-04 18:04:29 +0100 |
commit | 94103c0c025f04e75d5e163d9f0bdde27bb0c848 (patch) | |
tree | d5bb55acd30270cace54dae5537b009887de1e68 /platform/javascript | |
parent | ef174abf6d640e69c402b5e9628743173c313439 (diff) |
Add API to access battery power state
Done:
- X11, server (tested)
- Windows (developed, would be nice to retest)
- OSX (not tested)
Prepared (not developed):
- Android (code is here, but may not compile)
- iphone
- winrt
- bb10
- haiku
- javascript
Diffstat (limited to 'platform/javascript')
-rw-r--r-- | platform/javascript/os_javascript.cpp | 15 | ||||
-rw-r--r-- | platform/javascript/os_javascript.h | 7 | ||||
-rw-r--r-- | platform/javascript/power_javascript.cpp | 76 | ||||
-rw-r--r-- | platform/javascript/power_javascript.h | 51 |
4 files changed, 148 insertions, 1 deletions
diff --git a/platform/javascript/os_javascript.cpp b/platform/javascript/os_javascript.cpp index 201008b1db..d570d64acf 100644 --- a/platform/javascript/os_javascript.cpp +++ b/platform/javascript/os_javascript.cpp @@ -259,6 +259,8 @@ void OS_JavaScript::initialize(const VideoMode& p_desired,int p_video_driver,int physics_2d_server->init(); input = memnew( InputDefault ); + + power_manager = memnew( PowerJavascript ); #define EM_CHECK(ev) if (result!=EMSCRIPTEN_RESULT_SUCCESS)\ ERR_PRINTS("Error while setting " #ev " callback: Code " + itos(result)) @@ -853,8 +855,19 @@ String OS_JavaScript::get_joy_guid(int p_device) const { return input->get_joy_guid_remapped(p_device); } -OS_JavaScript::OS_JavaScript(GFXInitFunc p_gfx_init_func,void*p_gfx_init_ud, GetDataDirFunc p_get_data_dir_func) { +PowerState OS_JavaScript::get_power_state() { + return power_manager->get_power_state(); +} + +int OS_JavaScript::get_power_seconds_left() { + return power_manager->get_power_seconds_left(); +} +int OS_JavaScript::get_power_percent_left() { + return power_manager->get_power_percent_left(); +} + +OS_JavaScript::OS_JavaScript(GFXInitFunc p_gfx_init_func,void*p_gfx_init_ud, GetDataDirFunc p_get_data_dir_func) { gfx_init_func=p_gfx_init_func; gfx_init_ud=p_gfx_init_ud; last_button_mask=0; diff --git a/platform/javascript/os_javascript.h b/platform/javascript/os_javascript.h index 582f128ce8..5f6051bedb 100644 --- a/platform/javascript/os_javascript.h +++ b/platform/javascript/os_javascript.h @@ -32,6 +32,7 @@ #include "os/input.h" #include "drivers/unix/os_unix.h" #include "os/main_loop.h" +#include "power_javascript.h" #include "servers/physics/physics_server_sw.h" #include "servers/audio_server.h" #include "servers/physics_2d/physics_2d_server_sw.h" @@ -81,6 +82,8 @@ private: GetDataDirFunc get_data_dir_func; + PowerJavascript *power_manager; + #ifdef JAVASCRIPT_EVAL_ENABLED JavaScript* javascript_eval; #endif @@ -174,6 +177,10 @@ public: virtual bool is_joy_known(int p_device); virtual String get_joy_guid(int p_device) const; bool joy_connection_changed(int p_type, const EmscriptenGamepadEvent *p_event); + + virtual PowerState get_power_state(); + virtual int get_power_seconds_left(); + virtual int get_power_percent_left(); OS_JavaScript(GFXInitFunc p_gfx_init_func,void*p_gfx_init_ud, GetDataDirFunc p_get_data_dir_func); ~OS_JavaScript(); diff --git a/platform/javascript/power_javascript.cpp b/platform/javascript/power_javascript.cpp new file mode 100644 index 0000000000..d535ea4a5a --- /dev/null +++ b/platform/javascript/power_javascript.cpp @@ -0,0 +1,76 @@ +/*************************************************************************/ +/* power_javascript.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + + +#include "core/error_macros.h" +#include "power_javascript.h" + + +bool PowerJavascript::UpdatePowerInfo() { + // TODO Javascript implementation + return false; +} + +PowerState PowerJavascript::get_power_state() { + if (UpdatePowerInfo()) { + return power_state; + } + else { + WARN_PRINT("Power management is not implemented on this platform, defaulting to POWERSTATE_UNKNOWN"); + return POWERSTATE_UNKNOWN; + } +} + +int PowerJavascript::get_power_seconds_left() { + if (UpdatePowerInfo()) { + return nsecs_left; + } + else { + WARN_PRINT("Power management is not implemented on this platform, defaulting to -1"); + return -1; + } +} + +int PowerJavascript::get_power_percent_left() { + if (UpdatePowerInfo()) { + return percent_left; + } + else { + WARN_PRINT("Power management is not implemented on this platform, defaulting to -1"); + return -1; + } +} + + +PowerJavascript::PowerJavascript() : nsecs_left(-1), percent_left(-1), power_state(POWERSTATE_UNKNOWN) { + +} + +PowerJavascript::~PowerJavascript() { +}
\ No newline at end of file diff --git a/platform/javascript/power_javascript.h b/platform/javascript/power_javascript.h new file mode 100644 index 0000000000..e93737f98a --- /dev/null +++ b/platform/javascript/power_javascript.h @@ -0,0 +1,51 @@ +/*************************************************************************/ +/* power_javascript.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + + +#ifndef PLATFORM_JAVASCRIPT_POWER_JAVASCRIPT_H_ +#define PLATFORM_JAVASCRIPT_POWER_JAVASCRIPT_H_ + +class PowerJavascript { +private: + int nsecs_left; + int percent_left; + PowerState power_state; + + bool UpdatePowerInfo(); + +public: + PowerJavascript(); + virtual ~PowerJavascript(); + + PowerState get_power_state(); + int get_power_seconds_left(); + int get_power_percent_left(); +}; + +#endif /* PLATFORM_JAVASCRIPT_POWER_JAVASCRIPT_H_ */
\ No newline at end of file |