Bladeren bron

Merge pull request #42 from SummerGGift/add_uhttpd

Add uhttpd
朱天龙 (Armink) 8 jaren geleden
bovenliggende
commit
476597b06d
6 gewijzigde bestanden met toevoegingen van 45 en 11 verwijderingen
  1. 2 0
      port/genhdr/mpversion.h
  2. 15 10
      port/genhdr/qstrdefs.generated.h
  3. 1 0
      port/moduos.c
  4. 3 1
      port/modusocket.c
  5. 10 0
      py/mpconfig.h
  6. 14 0
      py/objgenerator.c

+ 2 - 0
port/genhdr/mpversion.h

@@ -6,3 +6,5 @@
 #define MICROPY_VERSION_MINOR (9)
 #define MICROPY_VERSION_MICRO (3)
 #define MICROPY_VERSION_STRING "1.9.3"
+#define MICROPY_PY_SYS_PLATFORM "rt-thread"
+

+ 15 - 10
port/genhdr/qstrdefs.generated.h

@@ -576,6 +576,21 @@ QDEF(MP_QSTR_io, (const byte*)"\x23\x02" "io")
 QDEF(MP_QSTR_stdin, (const byte*)"\x21\x05" "stdin")
 QDEF(MP_QSTR_stdout, (const byte*)"\x08\x06" "stdout")
 QDEF(MP_QSTR_stderr, (const byte*)"\xa3\x06" "stderr")
+QDEF(MP_QSTR_platform, (const byte*)"\x3a\x08" "platform")
+QDEF(MP_QSTR_deque, (const byte*)"\x05\x05" "deque")
+QDEF(MP_QSTR_select, (const byte*)"\x8d\x06" "select")
+QDEF(MP_QSTR_poll, (const byte*)"\x9a\x04" "poll")
+QDEF(MP_QSTR_POLLERR, (const byte*)"\xdf\x07" "POLLERR")
+QDEF(MP_QSTR_POLLHUP, (const byte*)"\x77\x07" "POLLHUP")
+QDEF(MP_QSTR_POLLIN, (const byte*)"\x7d\x06" "POLLIN")
+QDEF(MP_QSTR_POLLOUT, (const byte*)"\x74\x07" "POLLOUT")
+QDEF(MP_QSTR_ipoll, (const byte*)"\x53\x05" "ipoll")
+QDEF(MP_QSTR_register, (const byte*)"\xac\x08" "register")
+QDEF(MP_QSTR_modify, (const byte*)"\xf5\x06" "modify")
+QDEF(MP_QSTR_SOL_SOCKET, (const byte*)"\x0f\x0a" "SOL_SOCKET")
+QDEF(MP_QSTR_SO_REUSEADDR, (const byte*)"\x21\x0c" "SO_REUSEADDR")
+QDEF(MP_QSTR_pend_throw, (const byte*)"\xf3\x0a" "pend_throw")
+
 
 
 // This file was automatically generated by makeqstrdata.py
@@ -802,7 +817,6 @@ QDEF(MP_QSTR_connected, (const byte*)"\x7a\x25\x09" "connected")
 QDEF(MP_QSTR_ifconfig, (const byte*)"\xe0\x41\x08" "ifconfig")
 QDEF(MP_QSTR_patch_version, (const byte*)"\x6e\x98\x0d" "patch_version")
 QDEF(MP_QSTR_patch_program, (const byte*)"\x40\x73\x0d" "patch_program")
-QDEF(MP_QSTR_select, (const byte*)"\x8d\x41\x06" "select")
 QDEF(MP_QSTR_IPPROTO_IP, (const byte*)"\x0c\x8e\x0a" "IPPROTO_IP")
 QDEF(MP_QSTR_IPPROTO_ICMP, (const byte*)"\xa2\x87\x0c" "IPPROTO_ICMP")
 QDEF(MP_QSTR_IPPROTO_IPV4, (const byte*)"\x2e\x4b\x0c" "IPPROTO_IPV4")
@@ -1397,10 +1411,6 @@ QDEF(MP_QSTR_OC_INACTIVE, (const byte*)"\x1d\x9c\x0b" "OC_INACTIVE")
 QDEF(MP_QSTR_OC_TIMING, (const byte*)"\xe6\x28\x09" "OC_TIMING")
 QDEF(MP_QSTR_OC_TOGGLE, (const byte*)"\x64\x08\x09" "OC_TOGGLE")
 QDEF(MP_QSTR_OPEN_DRAIN, (const byte*)"\x5e\x48\x0a" "OPEN_DRAIN")
-QDEF(MP_QSTR_POLLERR, (const byte*)"\xdf\xc0\x07" "POLLERR")
-QDEF(MP_QSTR_POLLHUP, (const byte*)"\x77\x8a\x07" "POLLHUP")
-QDEF(MP_QSTR_POLLIN, (const byte*)"\x7d\x61\x06" "POLLIN")
-QDEF(MP_QSTR_POLLOUT, (const byte*)"\x74\x85\x07" "POLLOUT")
 QDEF(MP_QSTR_PWM, (const byte*)"\x4f\x0d\x03" "PWM")
 QDEF(MP_QSTR_PWM_INVERTED, (const byte*)"\xe3\xff\x0c" "PWM_INVERTED")
 QDEF(MP_QSTR_PinAF, (const byte*)"\x35\x58\x05" "PinAF")
@@ -1473,7 +1483,6 @@ QDEF(MP_QSTR_hid_mouse, (const byte*)"\x3e\x1e\x09" "hid_mouse")
 QDEF(MP_QSTR_initfilterbanks, (const byte*)"\x2a\x2b\x0f" "initfilterbanks")
 QDEF(MP_QSTR_intensity, (const byte*)"\xca\x3d\x09" "intensity")
 QDEF(MP_QSTR_ioctl, (const byte*)"\x78\xc2\x05" "ioctl")
-QDEF(MP_QSTR_ipoll, (const byte*)"\x53\x5d\x05" "ipoll")
 QDEF(MP_QSTR_irq, (const byte*)"\x8f\x56\x03" "irq")
 QDEF(MP_QSTR_is_ready, (const byte*)"\x0b\x00\x08" "is_ready")
 QDEF(MP_QSTR_iterable, (const byte*)"\x25\x92\x08" "iterable")
@@ -1494,7 +1503,6 @@ QDEF(MP_QSTR_mem_write, (const byte*)"\x62\x8c\x09" "mem_write")
 QDEF(MP_QSTR_memaddr, (const byte*)"\x93\xe8\x07" "memaddr")
 QDEF(MP_QSTR_miso, (const byte*)"\x9d\x98\x04" "miso")
 QDEF(MP_QSTR_mktime, (const byte*)"\x96\x2b\x06" "mktime")
-QDEF(MP_QSTR_modify, (const byte*)"\xf5\x66\x06" "modify")
 QDEF(MP_QSTR_mosi, (const byte*)"\x1d\xc2\x04" "mosi")
 QDEF(MP_QSTR_mov, (const byte*)"\xf1\x43\x03" "mov")
 QDEF(MP_QSTR_movt, (const byte*)"\x65\xc2\x04" "movt")
@@ -1513,9 +1521,7 @@ QDEF(MP_QSTR_params, (const byte*)"\x79\xe2\x06" "params")
 QDEF(MP_QSTR_parity, (const byte*)"\x42\x05\x06" "parity")
 QDEF(MP_QSTR_period, (const byte*)"\xa0\xa0\x06" "period")
 QDEF(MP_QSTR_pid, (const byte*)"\xf8\x73\x03" "pid")
-QDEF(MP_QSTR_platform, (const byte*)"\x3a\x19\x08" "platform")
 QDEF(MP_QSTR_polarity, (const byte*)"\x41\xed\x08" "polarity")
-QDEF(MP_QSTR_poll, (const byte*)"\x9a\xd9\x04" "poll")
 QDEF(MP_QSTR_port, (const byte*)"\x5c\xd8\x04" "port")
 QDEF(MP_QSTR_power, (const byte*)"\xda\xed\x05" "power")
 QDEF(MP_QSTR_prescaler, (const byte*)"\x28\x15\x09" "prescaler")
@@ -1545,7 +1551,6 @@ QDEF(MP_QSTR_readfrom_mem, (const byte*)"\x3b\x65\x0c" "readfrom_mem")
 QDEF(MP_QSTR_readfrom_mem_into, (const byte*)"\x38\x8e\x11" "readfrom_mem_into")
 QDEF(MP_QSTR_readonly, (const byte*)"\x03\x89\x08" "readonly")
 QDEF(MP_QSTR_reg, (const byte*)"\x75\x8b\x03" "reg")
-QDEF(MP_QSTR_register, (const byte*)"\xac\xa1\x08" "register")
 QDEF(MP_QSTR_regs, (const byte*)"\x66\xfa\x04" "regs")
 QDEF(MP_QSTR_release, (const byte*)"\xec\x8f\x07" "release")
 QDEF(MP_QSTR_repl_uart, (const byte*)"\x23\x58\x09" "repl_uart")

+ 1 - 0
port/moduos.c

@@ -101,6 +101,7 @@ STATIC const mp_rom_map_elem_t os_module_globals_table[] = {
     { MP_ROM_QSTR(MP_QSTR_chdir), MP_ROM_PTR(&mp_posix_chdir_obj) },
     { MP_ROM_QSTR(MP_QSTR_getcwd), MP_ROM_PTR(&mp_posix_getcwd_obj) },
     { MP_ROM_QSTR(MP_QSTR_listdir), MP_ROM_PTR(&mp_posix_listdir_obj) },
+    { MP_ROM_QSTR(MP_QSTR_ilistdir), MP_ROM_PTR(&mp_posix_listdir_obj) },
     { MP_ROM_QSTR(MP_QSTR_mkdir), MP_ROM_PTR(&mp_posix_mkdir_obj) },
     { MP_ROM_QSTR(MP_QSTR_remove), MP_ROM_PTR(&mp_posix_remove_obj) },
     { MP_ROM_QSTR(MP_QSTR_rename),MP_ROM_PTR(&mp_posix_rename_obj)},

+ 3 - 1
port/modusocket.c

@@ -496,7 +496,9 @@ STATIC const mp_rom_map_elem_t mp_module_usocket_globals_table[] = {
     { MP_ROM_QSTR(MP_QSTR_SOCK_STREAM), MP_ROM_INT(MOD_NETWORK_SOCK_STREAM) },
     { MP_ROM_QSTR(MP_QSTR_SOCK_DGRAM), MP_ROM_INT(MOD_NETWORK_SOCK_DGRAM) },
     { MP_ROM_QSTR(MP_QSTR_SOCK_RAW), MP_ROM_INT(MOD_NETWORK_SOCK_RAW) },
-
+    { MP_ROM_QSTR(MP_QSTR_SOL_SOCKET), MP_ROM_INT(SOL_SOCKET) },
+    { MP_ROM_QSTR(MP_QSTR_SO_REUSEADDR), MP_ROM_INT(SO_REUSEADDR) },
+    	
     /*
     { MP_ROM_QSTR(MP_QSTR_IPPROTO_IP), MP_ROM_INT(MOD_NETWORK_IPPROTO_IP) },
     { MP_ROM_QSTR(MP_QSTR_IPPROTO_ICMP), MP_ROM_INT(MOD_NETWORK_IPPROTO_ICMP) },

+ 10 - 0
py/mpconfig.h

@@ -1153,6 +1153,16 @@ typedef double mp_float_t;
 #define MICROPY_PORT_ROOT_POINTERS
 #endif
 
+// Non-standard .pend_throw() method for generators, allowing for
+// Future-like behavior with respect to exception handling: an
+// exception set with .pend_throw() will activate on the next call
+// to generator's .send() or .__next__(). (This is useful to implement
+// async schedulers.)
+#ifndef MICROPY_PY_GENERATOR_PEND_THROW
+#define MICROPY_PY_GENERATOR_PEND_THROW (1)
+#endif
+
+
 /*****************************************************************************/
 /* Miscellaneous settings                                                    */
 

+ 14 - 0
py/objgenerator.c

@@ -222,10 +222,24 @@ STATIC mp_obj_t gen_instance_close(mp_obj_t self_in) {
 
 STATIC MP_DEFINE_CONST_FUN_OBJ_1(gen_instance_close_obj, gen_instance_close);
 
+STATIC mp_obj_t gen_instance_pend_throw(mp_obj_t self_in, mp_obj_t exc_in) {
+    mp_obj_gen_instance_t *self = MP_OBJ_TO_PTR(self_in);
+    if (self->code_state.sp == self->code_state.state - 1) {
+        mp_raise_TypeError("can't pend throw to just-started generator");
+    }
+    mp_obj_t prev = *self->code_state.sp;
+    *self->code_state.sp = exc_in;
+    return prev;
+}
+STATIC MP_DEFINE_CONST_FUN_OBJ_2(gen_instance_pend_throw_obj, gen_instance_pend_throw);
+
 STATIC const mp_rom_map_elem_t gen_instance_locals_dict_table[] = {
     { MP_ROM_QSTR(MP_QSTR_close), MP_ROM_PTR(&gen_instance_close_obj) },
     { MP_ROM_QSTR(MP_QSTR_send), MP_ROM_PTR(&gen_instance_send_obj) },
     { MP_ROM_QSTR(MP_QSTR_throw), MP_ROM_PTR(&gen_instance_throw_obj) },
+    #if MICROPY_PY_GENERATOR_PEND_THROW
+    { MP_ROM_QSTR(MP_QSTR_pend_throw), MP_ROM_PTR(&gen_instance_pend_throw_obj) },
+    #endif
 };
 
 STATIC MP_DEFINE_CONST_DICT(gen_instance_locals_dict, gen_instance_locals_dict_table);