11
11
#include "zjs_modules.h"
12
12
#include "zjs_util.h"
13
13
14
- struct modItem {
14
+ #ifndef ZJS_LINUX_BUILD
15
+ // ZJS includes
16
+ #include "zjs_aio.h"
17
+ #include "zjs_ble.h"
18
+ #include "zjs_gpio.h"
19
+ #include "zjs_grove_lcd.h"
20
+ #include "zjs_pwm.h"
21
+ #include "zjs_i2c.h"
22
+ #ifdef CONFIG_BOARD_ARDUINO_101
23
+ #include "zjs_a101_pins.h"
24
+ #endif // ZJS_LINUX_BUILD
25
+ #ifdef CONFIG_BOARD_FRDM_K64F
26
+ #include "zjs_k64f_pins.h"
27
+ #endif
28
+ #endif
29
+
30
+ typedef struct module {
15
31
const char * name ;
16
- InitCB init ;
17
- struct modItem * next ;
18
- };
32
+ initcb_t init ;
33
+ } module_t ;
19
34
20
- static struct modItem * modList ;
35
+ module_t zjs_modules_array [] = {
36
+ #ifndef ZJS_LINUX_BUILD
37
+ #ifndef QEMU_BUILD
38
+ #ifndef CONFIG_BOARD_FRDM_K64F
39
+ #ifdef BUILD_MODULE_AIO
40
+ { "aio" , zjs_aio_init },
41
+ #endif
42
+ #endif
43
+ #ifdef BUILD_MODULE_BLE
44
+ { "ble" , zjs_ble_init },
45
+ #endif
46
+ #ifdef BUILD_MODULE_GPIO
47
+ { "gpio" , zjs_gpio_init },
48
+ #endif
49
+ #ifdef BUILD_MODULE_GROVE_LCD
50
+ { "grove_lcd" , zjs_grove_lcd_init },
51
+ #endif
52
+ #ifdef BUILD_MODULE_PWM
53
+ { "pwm" , zjs_pwm_init },
54
+ #endif
55
+ #ifdef BUILD_MODULE_I2C
56
+ { "i2c" , zjs_i2c_init },
57
+ #endif
58
+ #ifdef CONFIG_BOARD_ARDUINO_101
59
+ #ifdef BUILD_MODULE_A101
60
+ { "arduino101_pins" , zjs_a101_init },
61
+ #endif
62
+ #endif
63
+ #ifdef CONFIG_BOARD_FRDM_K64F
64
+ { "k64f_pins" , zjs_k64f_init },
65
+ #endif
66
+ #endif // QEMU_BUILD
67
+ #endif // ZJS_LINUX_BUILD
68
+
69
+ #ifdef BUILD_MODULE_EVENTS
70
+ { "events" , zjs_event_init },
71
+ #endif
72
+ };
21
73
22
74
static jerry_value_t native_require_handler (const jerry_value_t function_obj ,
23
75
const jerry_value_t this ,
@@ -38,18 +90,14 @@ static jerry_value_t native_require_handler(const jerry_value_t function_obj,
38
90
int len = jerry_string_to_char_buffer (arg , (jerry_char_t * )module , sz );
39
91
module [len ] = '\0' ;
40
92
41
- if (modList ) {
42
- struct modItem * t = modList ;
43
- while (t ) {
44
- if (!strcmp (t -> name , module )) {
45
- jerry_value_t obj = jerry_acquire_value (t -> init ());
46
- return obj ;
47
- }
48
- t = t -> next ;
93
+ int modcount = sizeof (zjs_modules_array ) / sizeof (module_t );
94
+ for (int i = 0 ; i < modcount ; i ++ ) {
95
+ module_t * mod = & zjs_modules_array [i ];
96
+ if (!strcmp (mod -> name , module )) {
97
+ return jerry_acquire_value (mod -> init ());
49
98
}
50
99
}
51
100
52
- // Module is not in our list if it gets to this point.
53
101
PRINT ("MODULE: `%s'\n" , module );
54
102
return zjs_error ("native_require_handler: module not found" );
55
103
}
@@ -61,27 +109,3 @@ void zjs_modules_init()
61
109
// create the C handler for require JS call
62
110
zjs_obj_add_function (global_obj , native_require_handler , "require" );
63
111
}
64
-
65
- void zjs_modules_add (const char * name , InitCB cb )
66
- {
67
- struct modItem * item = (struct modItem * )zjs_malloc (sizeof (struct modItem ));
68
- if (!item ) {
69
- PRINT ("Error: out of memory!\n" );
70
- exit (1 );
71
- }
72
-
73
- item -> name = name ;
74
- item -> init = cb ;
75
- item -> next = NULL ;
76
-
77
- if (!modList ) {
78
- modList = item ;
79
- return ;
80
- }
81
-
82
- struct modItem * t = modList ;
83
- while (t -> next )
84
- t = t -> next ;
85
-
86
- t -> next = item ;
87
- }
0 commit comments