From 37ed82437beba238f30a3eb37a2afdd862f66fd4 Mon Sep 17 00:00:00 2001 From: Jan Jongboom Date: Tue, 30 May 2017 09:09:09 +0200 Subject: [PATCH] target: mbedos5: Update to mbed OS 5.4.5 (#1853) Also ignore the default jerry-port - see also #1847. Re-implement the `print()` function, as it's no longer part of core Jerry, but our programs still depend on it. JerryScript-DCO-1.0-Signed-off-by: Jan Jongboom janjongboom@gmail.com --- targets/mbedos5/Makefile | 6 ++-- .../jerryscript-mbed-drivers/lib_drivers.h | 2 ++ .../jerryscript-mbed-drivers/print-js.h | 22 ++++++++++++ .../source/print-js.cpp | 36 +++++++++++++++++++ .../jerryscript-mbed-util/logging.h | 2 ++ targets/mbedos5/mbed-os.lib | 2 +- targets/mbedos5/template-mbedignore.txt | 1 + 7 files changed, 67 insertions(+), 4 deletions(-) create mode 100644 targets/mbedos5/jerryscript-mbed/jerryscript-mbed-drivers/print-js.h create mode 100644 targets/mbedos5/jerryscript-mbed/jerryscript-mbed-drivers/source/print-js.cpp diff --git a/targets/mbedos5/Makefile b/targets/mbedos5/Makefile index 341e2068e..faf130c96 100644 --- a/targets/mbedos5/Makefile +++ b/targets/mbedos5/Makefile @@ -19,9 +19,9 @@ BOARD=$(subst [mbed] ,,$(shell mbed target)) HEAPSIZE=16 -DEBUG=0 -NO_JS=0 -MBED_VERBOSE=0 +DEBUG?=0 +NO_JS?=0 +MBED_VERBOSE?=0 MBED_CLI_FLAGS=-j0 --source . --source ../../ diff --git a/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-drivers/lib_drivers.h b/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-drivers/lib_drivers.h index 8fbfa87fa..e95e12224 100644 --- a/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-drivers/lib_drivers.h +++ b/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-drivers/lib_drivers.h @@ -19,6 +19,7 @@ #include "jerryscript-mbed-drivers/DigitalOut-js.h" #include "jerryscript-mbed-drivers/setInterval-js.h" #include "jerryscript-mbed-drivers/setTimeout-js.h" +#include "jerryscript-mbed-drivers/print-js.h" #include "jerryscript-mbed-drivers/assert-js.h" #include "jerryscript-mbed-drivers/I2C-js.h" #include "jerryscript-mbed-drivers/gc-js.h" @@ -32,6 +33,7 @@ DECLARE_JS_WRAPPER_REGISTRATION (base) { REGISTER_GLOBAL_FUNCTION(setTimeout); REGISTER_GLOBAL_FUNCTION(clearInterval); REGISTER_GLOBAL_FUNCTION(clearTimeout); + REGISTER_GLOBAL_FUNCTION(print); REGISTER_CLASS_CONSTRUCTOR(DigitalOut); REGISTER_CLASS_CONSTRUCTOR(I2C); REGISTER_CLASS_CONSTRUCTOR(InterruptIn); diff --git a/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-drivers/print-js.h b/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-drivers/print-js.h new file mode 100644 index 000000000..43aba07f2 --- /dev/null +++ b/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-drivers/print-js.h @@ -0,0 +1,22 @@ +/* Copyright JS Foundation and other contributors, http://js.foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef _JERRYSCRIPT_MBED_DRIVERS_PRINT_H +#define _JERRYSCRIPT_MBED_DRIVERS_PRINT_H + +#include "jerryscript-mbed-library-registry/wrap_tools.h" + +DECLARE_GLOBAL_FUNCTION(print); + +#endif // _JERRYSCRIPT_MBED_DRIVERS_PRINT_H diff --git a/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-drivers/source/print-js.cpp b/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-drivers/source/print-js.cpp new file mode 100644 index 000000000..a11af8a2c --- /dev/null +++ b/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-drivers/source/print-js.cpp @@ -0,0 +1,36 @@ +/* Copyright JS Foundation and other contributors, http://js.foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "mbed.h" +#include "jerryscript-mbed-drivers/print-js.h" + +/** + * print (native JavaScript function) + * + * Print a string over serial (baud rate 115,200) + * + * @param string String to print + */ +DECLARE_GLOBAL_FUNCTION(print) { + CHECK_ARGUMENT_COUNT(global, print, (args_count == 1)); + CHECK_ARGUMENT_TYPE_ALWAYS(global, print, 0, string); + + jerry_size_t szArg0 = jerry_get_string_size(args[0]); + jerry_char_t *sArg0 = (jerry_char_t*) calloc(szArg0 + 1, sizeof(jerry_char_t)); + jerry_string_to_char_buffer(args[0], sArg0, szArg0); + + printf("%s\n", (const char*)sArg0); + + return jerry_create_undefined(); +} diff --git a/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-util/logging.h b/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-util/logging.h index e88e2deb4..12803e34c 100644 --- a/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-util/logging.h +++ b/targets/mbedos5/jerryscript-mbed/jerryscript-mbed-util/logging.h @@ -15,6 +15,8 @@ #ifndef _JERRYSCRIPT_MBED_UTIL_LOGGING_H #define _JERRYSCRIPT_MBED_UTIL_LOGGING_H +#include "mbed.h" + #ifdef DEBUG_WRAPPER #define LOG_PRINT(...) printf(__VA_ARGS__) #else diff --git a/targets/mbedos5/mbed-os.lib b/targets/mbedos5/mbed-os.lib index bb3917586..3a2efff6b 100644 --- a/targets/mbedos5/mbed-os.lib +++ b/targets/mbedos5/mbed-os.lib @@ -1 +1 @@ -https://github.com/ARMmbed/mbed-os/#d5de476f74dd4de27012eb74ede078f6330dfc3f +https://github.com/ARMmbed/mbed-os/#8d21974ba35e04c4854e5090c0f8283171664175 diff --git a/targets/mbedos5/template-mbedignore.txt b/targets/mbedos5/template-mbedignore.txt index d60ed0996..520bc71b5 100644 --- a/targets/mbedos5/template-mbedignore.txt +++ b/targets/mbedos5/template-mbedignore.txt @@ -9,3 +9,4 @@ targets/* tests/* third-party/* tools/* +jerry-port/default/*