From 543f75a6c323d564ec1659d1b02c13a916996ccd 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 0d06812aa..d5189a706 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 a25f5cc93..07942c68a 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 91643a7ce..62e61e469 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 60219b8e5..7ba25e43a 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 */ /**