simulator: add geolocation support
This commit is contained in:
parent
79b037b4fb
commit
108b9991d2
@ -33,6 +33,10 @@
|
|||||||
#include "watch_utility.h"
|
#include "watch_utility.h"
|
||||||
#include "sunriset.h"
|
#include "sunriset.h"
|
||||||
|
|
||||||
|
#if __EMSCRIPTEN__
|
||||||
|
#include <emscripten.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
static void _sunrise_sunset_set_expiration(sunrise_sunset_state_t *state, watch_date_time next_rise_set) {
|
static void _sunrise_sunset_set_expiration(sunrise_sunset_state_t *state, watch_date_time next_rise_set) {
|
||||||
uint32_t timestamp = watch_utility_date_time_to_unix_time(next_rise_set, 0);
|
uint32_t timestamp = watch_utility_date_time_to_unix_time(next_rise_set, 0);
|
||||||
state->rise_set_expires = watch_utility_date_time_from_unix_time(timestamp + 60, 0);
|
state->rise_set_expires = watch_utility_date_time_from_unix_time(timestamp + 60, 0);
|
||||||
@ -279,6 +283,23 @@ void sunrise_sunset_face_setup(movement_settings_t *settings, uint8_t watch_face
|
|||||||
void sunrise_sunset_face_activate(movement_settings_t *settings, void *context) {
|
void sunrise_sunset_face_activate(movement_settings_t *settings, void *context) {
|
||||||
(void) settings;
|
(void) settings;
|
||||||
if (watch_tick_animation_is_running()) watch_stop_tick_animation();
|
if (watch_tick_animation_is_running()) watch_stop_tick_animation();
|
||||||
|
|
||||||
|
#if __EMSCRIPTEN__
|
||||||
|
int16_t browser_lat = EM_ASM_INT({
|
||||||
|
return lat;
|
||||||
|
});
|
||||||
|
int16_t browser_lon = EM_ASM_INT({
|
||||||
|
return lon;
|
||||||
|
});
|
||||||
|
if ((watch_get_backup_data(1) == 0) && (browser_lat || browser_lon)) {
|
||||||
|
movement_location_t browser_loc;
|
||||||
|
browser_loc.bit.latitude = browser_lat;
|
||||||
|
browser_loc.bit.longitude = browser_lon;
|
||||||
|
watch_store_backup_data(browser_loc.reg, 1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
sunrise_sunset_state_t *state = (sunrise_sunset_state_t *)context;
|
sunrise_sunset_state_t *state = (sunrise_sunset_state_t *)context;
|
||||||
movement_location_t movement_location = (movement_location_t) watch_get_backup_data(1);
|
movement_location_t movement_location = (movement_location_t) watch_get_backup_data(1);
|
||||||
state->working_latitude = _sunrise_sunset_face_struct_from_latlon(movement_location.bit.latitude);
|
state->working_latitude = _sunrise_sunset_face_struct_from_latlon(movement_location.bit.latitude);
|
||||||
|
@ -321,6 +321,8 @@
|
|||||||
<p style="text-align: center;"><a href="https://github.com/alexisphilip/Casio-F-91W">Original F-91W SVG</a> is © 2020 Alexis Philip, and is used here under the terms of the MIT license.</p>
|
<p style="text-align: center;"><a href="https://github.com/alexisphilip/Casio-F-91W">Original F-91W SVG</a> is © 2020 Alexis Philip, and is used here under the terms of the MIT license.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<button onclick="getLocation()">Set location register (will prompt for access)</button>
|
||||||
|
<br>
|
||||||
<textarea id="output" rows="8" style="width: 100%"></textarea>
|
<textarea id="output" rows="8" style="width: 100%"></textarea>
|
||||||
|
|
||||||
<script type='text/javascript'>
|
<script type='text/javascript'>
|
||||||
@ -361,6 +363,33 @@
|
|||||||
if (text) Module.printErr('[post-exception status] ' + text);
|
if (text) Module.printErr('[post-exception status] ' + text);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
lat = 0;
|
||||||
|
lon = 0;
|
||||||
|
function updateLocation(location) {
|
||||||
|
lat = Math.round(location.coords.latitude * 100);
|
||||||
|
lon = Math.round(location.coords.longitude * 100);
|
||||||
|
}
|
||||||
|
function showError(error) {
|
||||||
|
switch(error.code) {
|
||||||
|
case error.PERMISSION_DENIED:
|
||||||
|
alert("Permission denied");
|
||||||
|
break;
|
||||||
|
case error.POSITION_UNAVAILABLE:
|
||||||
|
alert("Location unavailable");
|
||||||
|
break;
|
||||||
|
case error.TIMEOUT:
|
||||||
|
alert("Request timed out");
|
||||||
|
break;
|
||||||
|
case error.UNKNOWN_ERROR:
|
||||||
|
alert("Unknown error");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function getLocation() {
|
||||||
|
if (navigator.geolocation) {
|
||||||
|
navigator.geolocation.getCurrentPosition(updateLocation, showError);
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
{{{ SCRIPT }}}
|
{{{ SCRIPT }}}
|
||||||
</body>
|
</body>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user