summaryrefslogtreecommitdiffstatshomepage
path: root/cc3200/mods/modnetwork.c
diff options
context:
space:
mode:
Diffstat (limited to 'cc3200/mods/modnetwork.c')
-rw-r--r--cc3200/mods/modnetwork.c53
1 files changed, 35 insertions, 18 deletions
diff --git a/cc3200/mods/modnetwork.c b/cc3200/mods/modnetwork.c
index dd91427f41..8f9ee2c6c0 100644
--- a/cc3200/mods/modnetwork.c
+++ b/cc3200/mods/modnetwork.c
@@ -37,36 +37,54 @@
/// \module network - network configuration
///
-/// This module provides network drivers and routing configuration.
+/// This module provides network drivers and server configuration.
void mod_network_init0(void) {
}
#if (MICROPY_PORT_HAS_TELNET || MICROPY_PORT_HAS_FTP)
-STATIC mp_obj_t network_server_start(void) {
- servers_start();
- return mp_const_none;
-}
-STATIC MP_DEFINE_CONST_FUN_OBJ_0(network_server_start_obj, network_server_start);
-
-STATIC mp_obj_t network_server_stop(void) {
- servers_stop();
- return mp_const_none;
+STATIC mp_obj_t network_server_running(mp_uint_t n_args, const mp_obj_t *args) {
+ if (n_args > 0) {
+ // set
+ if (mp_obj_is_true(args[0])) {
+ servers_start();
+ } else {
+ servers_stop();
+ }
+ return mp_const_none;
+ } else {
+ // get
+ return MP_BOOL(servers_are_enabled());
+ }
}
-STATIC MP_DEFINE_CONST_FUN_OBJ_0(network_server_stop_obj, network_server_stop);
-
-STATIC mp_obj_t network_server_running(void) {
- return MP_BOOL(servers_are_enabled());
-}
-STATIC MP_DEFINE_CONST_FUN_OBJ_0(network_server_running_obj, network_server_running);
+STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(network_server_running_obj, 0, 1, network_server_running);
STATIC mp_obj_t network_server_login(mp_obj_t user, mp_obj_t pass) {
const char *_user = mp_obj_str_get_str(user);
const char *_pass = mp_obj_str_get_str(pass);
+ if (strlen(user) > SERVERS_USER_PASS_LEN_MAX || strlen(pass) > SERVERS_USER_PASS_LEN_MAX) {
+ nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, mpexception_value_invalid_arguments));
+ }
servers_set_login ((char *)_user, (char *)_pass);
return mp_const_none;
}
STATIC MP_DEFINE_CONST_FUN_OBJ_2(network_server_login_obj, network_server_login);
+
+// timeout value given in seconds
+STATIC mp_obj_t network_server_timeout(mp_uint_t n_args, const mp_obj_t *args) {
+ if (n_args > 0) {
+ uint32_t _timeout = mp_obj_get_int(args[0]);
+ if (!servers_set_timeout(_timeout * 1000)) {
+ // timeout is too low
+ nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, mpexception_value_invalid_arguments));
+ }
+ return mp_const_none;
+ } else {
+ // get
+ return mp_obj_new_int(servers_get_timeout() / 1000);
+ }
+}
+STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(network_server_timeout_obj, 0, 1, network_server_timeout);
#endif
STATIC const mp_map_elem_t mp_module_network_globals_table[] = {
@@ -74,10 +92,9 @@ STATIC const mp_map_elem_t mp_module_network_globals_table[] = {
{ MP_OBJ_NEW_QSTR(MP_QSTR_WLAN), (mp_obj_t)&mod_network_nic_type_wlan },
#if (MICROPY_PORT_HAS_TELNET || MICROPY_PORT_HAS_FTP)
- { MP_OBJ_NEW_QSTR(MP_QSTR_start_server), (mp_obj_t)&network_server_start_obj },
- { MP_OBJ_NEW_QSTR(MP_QSTR_stop_server), (mp_obj_t)&network_server_stop_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_server_running), (mp_obj_t)&network_server_running_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_server_login), (mp_obj_t)&network_server_login_obj },
+ { MP_OBJ_NEW_QSTR(MP_QSTR_server_timeout), (mp_obj_t)&network_server_timeout_obj },
#endif
};