From 7fce954580ed49649e8185555c29cf58a6b5e7dd Mon Sep 17 00:00:00 2001 From: Levente Orban Date: Fri, 1 Apr 2016 11:45:32 +0200 Subject: [PATCH] Fix mbedk64f Delete DECLARE_HANDLER(print) & double newlines. Set some separator to the include types for good differentiation. Fix the { usage. Check the err_obj_p & released. JerryScript-DCO-1.0-Signed-off-by: Levente Orban orbanl@inf.u-szeged.hu --- targets/mbedk64f/.yotta.json | 3 +- .../{jerry_extapi.c => jerry_extapi.cpp} | 55 +++---------------- targets/mbedk64f/source/jerry_extapi.h | 8 +-- .../source/{jerry_port.c => jerry_port.cpp} | 0 .../source/{jerry_run.c => jerry_run.cpp} | 19 ++++--- targets/mbedk64f/source/jerry_run.h | 2 - targets/mbedk64f/source/{main.c => main.cpp} | 16 ++++-- targets/mbedk64f/source/makejerry.cmake | 6 +- ...{native_mbedk64f.c => native_mbedk64f.cpp} | 5 +- targets/mbedk64f/source/native_mbedk64f.h | 2 - 10 files changed, 38 insertions(+), 78 deletions(-) rename targets/mbedk64f/source/{jerry_extapi.c => jerry_extapi.cpp} (75%) rename targets/mbedk64f/source/{jerry_port.c => jerry_port.cpp} (100%) rename targets/mbedk64f/source/{jerry_run.c => jerry_run.cpp} (89%) rename targets/mbedk64f/source/{main.c => main.cpp} (91%) rename targets/mbedk64f/source/{native_mbedk64f.c => native_mbedk64f.cpp} (95%) diff --git a/targets/mbedk64f/.yotta.json b/targets/mbedk64f/.yotta.json index 19a297dbee..e855059faa 100644 --- a/targets/mbedk64f/.yotta.json +++ b/targets/mbedk64f/.yotta.json @@ -1,5 +1,6 @@ { "build": { - "target": "frdm-k64f-gcc,*" + "target": "frdm-k64f-gcc,*", + "targetSetExplicitly": true } } diff --git a/targets/mbedk64f/source/jerry_extapi.c b/targets/mbedk64f/source/jerry_extapi.cpp similarity index 75% rename from targets/mbedk64f/source/jerry_extapi.c rename to targets/mbedk64f/source/jerry_extapi.cpp index 32b12ea720..280a34cc4d 100644 --- a/targets/mbedk64f/source/jerry_extapi.c +++ b/targets/mbedk64f/source/jerry_extapi.cpp @@ -13,20 +13,17 @@ * limitations under the License. */ -#include "jerry-core/jerry.h" - #include #include +#include "jerry-core/jerry.h" #include "jerry_extapi.h" #include "native_mbedk64f.h" - #ifndef MIN #define MIN(A,B) ((A)<(B)?(A):(B)) #endif - //----------------------------------------------------------------------------- #define __UNSED__ __attribute__((unused)) @@ -40,8 +37,7 @@ NAME ## _handler (const jerry_api_object_t * function_obj_p __UNSED__, \ const jerry_api_length_t args_cnt) #define REGISTER_HANDLER(NAME) \ - register_native_function ( # NAME, NAME ## _handler) - + register_native_function ( # NAME, NAME ## _handler); //----------------------------------------------------------------------------- @@ -49,7 +45,7 @@ DELCARE_HANDLER(assert) { if (args_cnt == 1 && args_p[0].type == JERRY_API_DATA_TYPE_BOOLEAN - && args_p[0].v_bool == true) + && args_p[0].u.v_bool == true) { printf (">> Jerry assert true\r\n"); return true; @@ -59,39 +55,6 @@ DELCARE_HANDLER(assert) return false; } - -DELCARE_HANDLER(print) -{ - jerry_api_length_t cc; - - if (args_cnt) - { - printf(">> print(%d) :", (int)args_cnt); - for (cc=0; cctype = JERRY_API_DATA_TYPE_BOOLEAN; - if (port >=0 && port <= 3) { + if (port >=0 && port <= 3) + { native_led(port, value); - ret_val_p->v_bool = true; + ret_val_p->u.v_bool = true; } else { - ret_val_p->v_bool = false; + ret_val_p->u.v_bool = false; } return true; } - //----------------------------------------------------------------------------- static bool @@ -140,7 +103,7 @@ register_native_function (const char* name, jerry_api_acquire_object (reg_func_p); reg_value.type = JERRY_API_DATA_TYPE_OBJECT; - reg_value.v_object = reg_func_p; + reg_value.u.v_object = reg_func_p; bok = jerry_api_set_object_field_value (global_obj_p, (jerry_api_char_t *)name, @@ -158,10 +121,8 @@ register_native_function (const char* name, return bok; } - void js_register_functions (void) { REGISTER_HANDLER (assert); - REGISTER_HANDLER (print); REGISTER_HANDLER (led); } diff --git a/targets/mbedk64f/source/jerry_extapi.h b/targets/mbedk64f/source/jerry_extapi.h index faa9218123..9d2e5ce3bc 100644 --- a/targets/mbedk64f/source/jerry_extapi.h +++ b/targets/mbedk64f/source/jerry_extapi.h @@ -26,14 +26,14 @@ #define API_DATA_IS_FUNCTION(val_p) \ (API_DATA_IS_OBJECT(val_p) && \ - jerry_api_is_function((val_p)->v_object)) + jerry_api_is_function((val_p)->u.v_object)) #define JS_VALUE_TO_NUMBER(val_p) \ ((val_p)->type == JERRY_API_DATA_TYPE_FLOAT32 ? \ - (double) ((val_p)->v_float32) : \ + (double) ((val_p)->u.v_float32) : \ (val_p)->type == JERRY_API_DATA_TYPE_FLOAT64 ? \ - (double) ((val_p)->v_float64) : \ - (double) ((val_p)->v_uint32)) + (double) ((val_p)->u.v_float64) : \ + (double) ((val_p)->u.v_uint32)) void js_register_functions (void); diff --git a/targets/mbedk64f/source/jerry_port.c b/targets/mbedk64f/source/jerry_port.cpp similarity index 100% rename from targets/mbedk64f/source/jerry_port.c rename to targets/mbedk64f/source/jerry_port.cpp diff --git a/targets/mbedk64f/source/jerry_run.c b/targets/mbedk64f/source/jerry_run.cpp similarity index 89% rename from targets/mbedk64f/source/jerry_run.c rename to targets/mbedk64f/source/jerry_run.cpp index d992db48b5..681ad5d59b 100644 --- a/targets/mbedk64f/source/jerry_run.c +++ b/targets/mbedk64f/source/jerry_run.cpp @@ -13,11 +13,10 @@ * limitations under the License. */ -#include "jerry-core/jerry.h" - #include #include +#include "jerry-core/jerry.h" #include "jerry_run.h" #include "jerry_extapi.h" @@ -27,6 +26,7 @@ static const char* fn_sys_loop_name = "sysloop"; int js_entry (const char *source_p, const size_t source_size) { + jerry_api_object_t *err_obj_p = NULL; const jerry_api_char_t *jerry_src = (const jerry_api_char_t *) source_p; jerry_completion_code_t ret_code = JERRY_COMPLETION_CODE_OK; jerry_flag_t flags = JERRY_FLAG_EMPTY; @@ -35,19 +35,23 @@ int js_entry (const char *source_p, const size_t source_size) js_register_functions (); - if (!jerry_parse (jerry_src, source_size)) + if (!jerry_parse (jerry_src, source_size, &err_obj_p)) { printf ("Error: jerry_parse failed\r\n"); ret_code = JERRY_COMPLETION_CODE_UNHANDLED_EXCEPTION; + jerry_api_release_object (err_obj_p); } else { if ((flags & JERRY_FLAG_PARSE_ONLY) == 0) { - ret_code = jerry_run (); + ret_code = jerry_run (&err_obj_p); + if (err_obj_p != NULL) + { + jerry_api_release_object (err_obj_p); + } } } - return ret_code; } @@ -98,10 +102,10 @@ int js_loop (uint32_t ticknow) val_argv = 1; val_args = (jerry_api_value_t*)malloc (sizeof (jerry_api_value_t) * val_argv); val_args[0].type = JERRY_API_DATA_TYPE_UINT32; - val_args[0].v_uint32 = ticknow; + val_args[0].u.v_uint32 = ticknow; jerry_api_value_t res; - is_ok = jerry_api_call_function (sysloop_func.v_object, + is_ok = jerry_api_call_function (sysloop_func.u.v_object, global_obj_p, &res, val_args, @@ -119,4 +123,3 @@ void js_exit (void) { jerry_cleanup (); } - diff --git a/targets/mbedk64f/source/jerry_run.h b/targets/mbedk64f/source/jerry_run.h index 0f83e07fc8..f595b0e9a5 100644 --- a/targets/mbedk64f/source/jerry_run.h +++ b/targets/mbedk64f/source/jerry_run.h @@ -16,11 +16,9 @@ #ifndef __JERRY_RUN_H__ #define __JERRY_RUN_H__ - int js_entry (const char *source_p, const size_t source_size); int js_eval (const char *source_p, const size_t source_size); int js_loop (uint32_t ticknow); void js_exit (void); - #endif diff --git a/targets/mbedk64f/source/main.c b/targets/mbedk64f/source/main.cpp similarity index 91% rename from targets/mbedk64f/source/main.c rename to targets/mbedk64f/source/main.cpp index 62bc1d3290..8156d81f2a 100644 --- a/targets/mbedk64f/source/main.c +++ b/targets/mbedk64f/source/main.cpp @@ -22,7 +22,8 @@ #include "jerry_targetjs.h" -static int jerry_init(void) { +static int jerry_init(void) +{ int retcode; int src; @@ -36,7 +37,8 @@ static int jerry_init(void) { return -1; } /* run rest of the js files */ - for (src=1; js_codes[src].source; src++) { + for (src=1; js_codes[src].source; src++) + { retcode = js_eval(js_codes[src].source, js_codes[src].length); if (retcode != 0) { printf("js_eval failed code(%d) [%s]\r\n", retcode, js_codes[src].name); @@ -47,14 +49,15 @@ static int jerry_init(void) { return 0; } -static void jerry_loop(void) { +static void jerry_loop(void) +{ static uint32_t _jcount = 0; js_loop(_jcount++); } - -void app_start(int, char**){ +void app_start(int, char**) +{ // set 115200 baud rate for stdout static Serial pc(USBTX, USBRX); pc.baud(115200); @@ -64,7 +67,8 @@ void app_start(int, char**){ printf (" hash %s\r\n", jerry_commit_hash); printf (" branch %s\r\n", jerry_branch_name); - if (jerry_init() == 0) { + if (jerry_init() == 0) + { minar::Scheduler::postCallback(jerry_loop) .period(minar::milliseconds(100)) ; diff --git a/targets/mbedk64f/source/makejerry.cmake b/targets/mbedk64f/source/makejerry.cmake index c8f20f8f85..90a9efe56a 100644 --- a/targets/mbedk64f/source/makejerry.cmake +++ b/targets/mbedk64f/source/makejerry.cmake @@ -20,11 +20,7 @@ set(LJCORE ${CMAKE_CURRENT_LIST_DIR}/../../../) include_directories(${LJCORE}) # compile flags -set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} - -mlittle-endian - -mthumb - -mcpu=cortex-m4 - ) +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mlittle-endian -mthumb -mcpu=cortex-m4") # link jerryscript set(LJPATH ${CMAKE_CURRENT_LIST_DIR}/../libjerry) diff --git a/targets/mbedk64f/source/native_mbedk64f.c b/targets/mbedk64f/source/native_mbedk64f.cpp similarity index 95% rename from targets/mbedk64f/source/native_mbedk64f.c rename to targets/mbedk64f/source/native_mbedk64f.cpp index 5dc122cb61..ae61749935 100644 --- a/targets/mbedk64f/source/native_mbedk64f.c +++ b/targets/mbedk64f/source/native_mbedk64f.cpp @@ -14,11 +14,10 @@ */ #include "mbed-drivers/mbed.h" - #include "native_mbedk64f.h" - -void native_led(int port, int val) { +void native_led(int port, int val) +{ static const PinName portmap[] = { LED1, LED2, LED3, LED4 }; DigitalOut led(portmap[port]); led = val; diff --git a/targets/mbedk64f/source/native_mbedk64f.h b/targets/mbedk64f/source/native_mbedk64f.h index ed453d01cf..28fee2ba62 100644 --- a/targets/mbedk64f/source/native_mbedk64f.h +++ b/targets/mbedk64f/source/native_mbedk64f.h @@ -16,8 +16,6 @@ #ifndef __NATIVE_MBEDK64F_H__ #define __NATIVE_MBEDK64F_H__ - void native_led(int port, int val); - #endif