summaryrefslogtreecommitdiff
path: root/zephyr/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'zephyr/main.c')
-rw-r--r--zephyr/main.c51
1 files changed, 37 insertions, 14 deletions
diff --git a/zephyr/main.c b/zephyr/main.c
index 2c7f3fc47..a4301629f 100644
--- a/zephyr/main.c
+++ b/zephyr/main.c
@@ -28,6 +28,11 @@
#include <stdio.h>
#include <string.h>
+#include <zephyr.h>
+#ifdef CONFIG_NETWORKING
+#include <net/net_context.h>
+#endif
+
#include "py/nlr.h"
#include "py/compile.h"
#include "py/runtime.h"
@@ -38,14 +43,9 @@
#include "lib/mp-readline/readline.h"
void do_str(const char *src, mp_parse_input_kind_t input_kind) {
- mp_lexer_t *lex = mp_lexer_new_from_str_len(MP_QSTR__lt_stdin_gt_, src, strlen(src), 0);
- if (lex == NULL) {
- printf("MemoryError: lexer could not allocate memory\n");
- return;
- }
-
nlr_buf_t nlr;
if (nlr_push(&nlr) == 0) {
+ mp_lexer_t *lex = mp_lexer_new_from_str_len(MP_QSTR__lt_stdin_gt_, src, strlen(src), 0);
qstr source_name = lex->source_name;
mp_parse_tree_t parse_tree = mp_parse(lex, input_kind);
mp_obj_t module_fun = mp_compile(&parse_tree, source_name, MP_EMIT_OPT_NONE, true);
@@ -60,12 +60,38 @@ void do_str(const char *src, mp_parse_input_kind_t input_kind) {
static char *stack_top;
static char heap[MICROPY_HEAP_SIZE];
+void init_zephyr(void) {
+ // TODO: Make addresses configurable
+ #ifdef CONFIG_NETWORKING
+ if (net_if_get_default() == NULL) {
+ // If there's no default networking interface,
+ // there's nothing to configure.
+ return;
+ }
+ #endif
+ #ifdef CONFIG_NET_IPV4
+ static struct in_addr in4addr_my = {{{192, 0, 2, 1}}};
+ net_if_ipv4_addr_add(net_if_get_default(), &in4addr_my, NET_ADDR_MANUAL, 0);
+ static struct in_addr in4netmask_my = {{{255, 255, 255, 0}}};
+ net_if_ipv4_set_netmask(net_if_get_default(), &in4netmask_my);
+ static struct in_addr in4gw_my = {{{192, 0, 2, 2}}};
+ net_if_ipv4_set_gw(net_if_get_default(), &in4gw_my);
+ #endif
+ #ifdef CONFIG_NET_IPV6
+ // 2001:db8::1
+ static struct in6_addr in6addr_my = {{{0x20, 0x01, 0x0d, 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}}};
+ net_if_ipv6_addr_add(net_if_get_default(), &in6addr_my, NET_ADDR_MANUAL, 0);
+ #endif
+}
+
int real_main(void) {
int stack_dummy;
stack_top = (char*)&stack_dummy;
mp_stack_set_top(stack_top);
- // Should be set to stack size in prj.mdef minus fuzz factor
- mp_stack_set_limit(3584);
+ // Make MicroPython's stack limit somewhat smaller than full stack available
+ mp_stack_set_limit(CONFIG_MAIN_STACK_SIZE - 512);
+
+ init_zephyr();
soft_reset:
#if MICROPY_ENABLE_GC
@@ -105,11 +131,11 @@ void gc_collect(void) {
gc_collect_start();
gc_collect_root(&dummy, ((mp_uint_t)stack_top - (mp_uint_t)&dummy) / sizeof(mp_uint_t));
gc_collect_end();
- gc_dump_info();
+ //gc_dump_info();
}
mp_lexer_t *mp_lexer_new_from_file(const char *filename) {
- return NULL;
+ mp_raise_OSError(ENOENT);
}
mp_import_stat_t mp_import_stat(const char *path) {
@@ -121,10 +147,7 @@ mp_obj_t mp_builtin_open(size_t n_args, const mp_obj_t *args, mp_map_t *kwargs)
}
MP_DEFINE_CONST_FUN_OBJ_KW(mp_builtin_open_obj, 1, mp_builtin_open);
-void nlr_jump_fail(void *val) {
-}
-
-void NORETURN __fatal_error(const char *msg) {
+NORETURN void nlr_jump_fail(void *val) {
while (1);
}