From 8f9b230754ccd92517188715319afef4cf4a2016 Mon Sep 17 00:00:00 2001 From: Robert Fancsik Date: Tue, 2 Jan 2018 13:51:36 +0100 Subject: [PATCH] Fix random number generation on ESP8266 This patch uses the onboard RTC for generating random seed. It also improves the print handler to support float values. The rom segment is slightly increased to fit to the latest master. JerryScript-DCO-1.0-Signed-off-by: Robert Fancsik frobert@inf.u-szeged.hu --- targets/esp8266/js/main.js | 1 + targets/esp8266/ld/eagle.app.v6.ld | 2 +- targets/esp8266/user/jerry_extapi.c | 15 +++++++++++++-- targets/esp8266/user/jerry_port.c | 10 ++-------- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/targets/esp8266/js/main.js b/targets/esp8266/js/main.js index 0d06812aa4..d5189a7065 100644 --- a/targets/esp8266/js/main.js +++ b/targets/esp8266/js/main.js @@ -1,4 +1,5 @@ function sysloop(ticknow) { blink(); }; +print("Random generated number: ", Math.random()); print("main js OK"); diff --git a/targets/esp8266/ld/eagle.app.v6.ld b/targets/esp8266/ld/eagle.app.v6.ld index a25f5cc93e..07942c68ad 100644 --- a/targets/esp8266/ld/eagle.app.v6.ld +++ b/targets/esp8266/ld/eagle.app.v6.ld @@ -26,7 +26,7 @@ MEMORY dport0_0_seg : org = 0x3FF00000, len = 0x10 dram0_0_seg : org = 0x3FFE8000, len = 0x18000 iram1_0_seg : org = 0x40100000, len = 0x8000 - irom0_0_seg : org = 0x40220000, len = 0x6C000 + irom0_0_seg : org = 0x40220000, len = 0x7C000 } INCLUDE ../ld/eagle.app.v6.common.ld diff --git a/targets/esp8266/user/jerry_extapi.c b/targets/esp8266/user/jerry_extapi.c index 91643a7ced..62e61e469c 100644 --- a/targets/esp8266/user/jerry_extapi.c +++ b/targets/esp8266/user/jerry_extapi.c @@ -73,9 +73,20 @@ DELCARE_HANDLER(print) { printf("%s ", buffer); free (buffer); } - else + else if (jerry_value_is_number (args_p[cc])) { - printf ("(%d) ", args_p[cc]); + double number = jerry_get_number_value (args_p[cc]); + if ((int) number == number) + { + printf ("%d", (int) number); + } + else + { + char buff[50]; + sprintf(buff, "%.10f", number); + printf("%s", buff); + } + } } printf ("\r\n"); diff --git a/targets/esp8266/user/jerry_port.c b/targets/esp8266/user/jerry_port.c index 60219b8e52..7ba25e43ad 100644 --- a/targets/esp8266/user/jerry_port.c +++ b/targets/esp8266/user/jerry_port.c @@ -56,14 +56,8 @@ jerry_port_fatal (jerry_fatal_code_t code) double jerry_port_get_current_time (void) { - struct timeval tv; - - if (gettimeofday (&tv, NULL) != 0) - { - return 0; - } - - return ((double) tv.tv_sec) * 1000.0 + ((double) tv.tv_usec) / 1000.0; + uint32_t rtc_time = system_rtc_clock_cali_proc(); + return (double) rtc_time; } /* jerry_port_get_current_time */ /**