Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
5fd2ebbb
Commit
5fd2ebbb
authored
Mar 24, 2014
by
Damien George
Browse files
stmhal: Update help function.
parent
24ff063e
Changes
4
Hide whitespace changes
Inline
Side-by-side
stmhal/Makefile
View file @
5fd2ebbb
...
...
@@ -72,6 +72,7 @@ SRC_C = \
malloc0.c
\
gccollect.c
\
pyexec.c
\
help.c
\
input.c
\
pybmodule.c
\
osmodule.c
\
...
...
stmhal/help.c
0 → 100644
View file @
5fd2ebbb
#include
<stdio.h>
#include
"nlr.h"
#include
"misc.h"
#include
"mpconfig.h"
#include
"qstr.h"
#include
"obj.h"
#include
"map.h"
STATIC
const
char
*
help_text
=
"Welcome to Micro Python!
\n
"
"
\n
"
"For online help please visit http://micropython.org/help/.
\n
"
"
\n
"
"Specific commands for the board:
\n
"
" pyb.info() -- print some general information
\n
"
" pyb.gc() -- run the garbage collector
\n
"
" pyb.repl_info(<val>) -- enable/disable printing of info after each command
\n
"
" pyb.delay(<n>) -- wait for n milliseconds
\n
"
" pyb.udelay(<n>) -- wait for n microseconds
\n
"
" pyb.switch() -- return True/False if switch pressed or not
\n
"
" pyb.Led(<n>) -- create Led object for LED n (n=1,2,3,4)
\n
"
" Led methods: on(), off(), toggle(), intensity(<n>)
\n
"
" pyb.Servo(<n>) -- create Servo object for servo n (n=1,2,3,4)
\n
"
" Servo methods: angle(<x>)
\n
"
" pyb.Accel() -- create an Accelerometer object
\n
"
" Accelerometer methods: x(), y(), z(), tilt()
\n
"
" pyb.rng() -- get a 30-bit hardware random number
\n
"
" pyb.gpio(<port>) -- get port value (port='A4' for example)
\n
"
" pyb.gpio(<port>, <val>) -- set port value, True or False, 1 or 0
\n
"
" pyb.ADC(<port>) -- make an analog port object (port='C0' for example)
\n
"
" ADC methods: read()
\n
"
"
\n
"
"Control commands:
\n
"
" CTRL-A -- on a blank line, enter raw REPL mode
\n
"
" CTRL-B -- on a blank line, enter normal REPL mode
\n
"
" CTRL-C -- interrupt a running program
\n
"
" CTRL-D -- on a blank line, do a soft reset of the board
\n
"
;
STATIC
void
pyb_help_print_info_about_object
(
mp_obj_t
name_o
,
const
char
*
name_str
,
mp_obj_t
value
)
{
if
(
name_o
!=
MP_OBJ_NULL
)
{
printf
(
" "
);
mp_obj_print
(
name_o
,
PRINT_STR
);
printf
(
" -- "
);
}
else
{
printf
(
" %s -- "
,
name_str
);
}
mp_obj_print
(
value
,
PRINT_STR
);
printf
(
"
\n
"
);
}
STATIC
mp_obj_t
pyb_help
(
uint
n_args
,
const
mp_obj_t
*
args
)
{
if
(
n_args
==
0
)
{
// print a general help message
printf
(
"%s"
,
help_text
);
}
else
{
// try to print something sensible about the given object
printf
(
"object "
);
mp_obj_print
(
args
[
0
],
PRINT_STR
);
printf
(
" is of type %s
\n
"
,
mp_obj_get_type_str
(
args
[
0
]));
mp_obj_type_t
*
type
=
mp_obj_get_type
(
args
[
0
]);
mp_map_t
*
map
=
NULL
;
if
(
type
==
&
mp_type_module
)
{
map
=
mp_obj_module_get_globals
(
args
[
0
]);
}
else
if
(
type
->
locals_dict
!=
MP_OBJ_NULL
&&
MP_OBJ_IS_TYPE
(
type
->
locals_dict
,
&
dict_type
))
{
map
=
mp_obj_dict_get_map
(
type
->
locals_dict
);
}
if
(
map
!=
NULL
)
{
for
(
uint
i
=
0
;
i
<
map
->
alloc
;
i
++
)
{
if
(
map
->
table
[
i
].
key
!=
MP_OBJ_NULL
)
{
pyb_help_print_info_about_object
(
map
->
table
[
i
].
key
,
NULL
,
map
->
table
[
i
].
value
);
}
}
}
if
(
type
->
methods
!=
NULL
)
{
for
(
const
mp_method_t
*
meth
=
type
->
methods
;
meth
->
name
!=
NULL
;
meth
++
)
{
pyb_help_print_info_about_object
(
MP_OBJ_NULL
,
meth
->
name
,
(
mp_obj_t
)
meth
->
fun
);
}
}
}
return
mp_const_none
;
}
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN
(
mp_builtin_help_obj
,
0
,
1
,
pyb_help
);
stmhal/main.c
View file @
5fd2ebbb
...
...
@@ -121,34 +121,6 @@ static const char fresh_main_py[] =
"# main.py -- put your code here!
\n
"
;
static
const
char
*
help_text
=
"Welcome to Micro Python!
\n\n
"
"This is a *very* early version of Micro Python and has minimal functionality.
\n\n
"
"Specific commands for the board:
\n
"
" pyb.info() -- print some general information
\n
"
" pyb.gc() -- run the garbage collector
\n
"
" pyb.repl_info(<val>) -- enable/disable printing of info after each command
\n
"
" pyb.delay(<n>) -- wait for n milliseconds
\n
"
" pyb.udelay(<n>) -- wait for n microseconds
\n
"
" pyb.Led(<n>) -- create Led object for LED n (n=1,2)
\n
"
" Led methods: on(), off()
\n
"
" pyb.Servo(<n>) -- create Servo object for servo n (n=1,2,3,4)
\n
"
" Servo methods: angle(<x>)
\n
"
" pyb.switch() -- return True/False if switch pressed or not
\n
"
" pyb.accel() -- get accelerometer values
\n
"
" pyb.rand() -- get a 16-bit random number
\n
"
" pyb.gpio(<port>) -- get port value (port='A4' for example)
\n
"
" pyb.gpio(<port>, <val>) -- set port value, True or False, 1 or 0
\n
"
" pyb.ADC(<port>) -- make an analog port object (port='C0' for example)
\n
"
" ADC methods: read()
\n
"
;
// get some help about available functions
static
mp_obj_t
pyb_help
(
void
)
{
printf
(
"%s"
,
help_text
);
return
mp_const_none
;
}
int
main
(
void
)
{
// TODO disable JTAG
...
...
@@ -268,9 +240,6 @@ soft_reset:
pin_map_init
();
// add some functions to the builtin Python namespace
rt_store_name
(
MP_QSTR_help
,
rt_make_function_n
(
0
,
pyb_help
));
// we pre-import the pyb module
// probably shouldn't do this, so we are compatible with CPython
rt_store_name
(
MP_QSTR_pyb
,
(
mp_obj_t
)
&
pyb_module
);
...
...
stmhal/mpconfigport.h
View file @
5fd2ebbb
...
...
@@ -19,9 +19,11 @@
#define MICROPY_LFN_CODE_PAGE (437)
/* 1=SFN/ANSI 437=LFN/U.S.(OEM) */
// extra built in names to add to the global namespace
extern
const
struct
_mp_obj_fun_native_t
mp_builtin_help_obj
;
extern
const
struct
_mp_obj_fun_native_t
mp_builtin_input_obj
;
extern
const
struct
_mp_obj_fun_native_t
mp_builtin_open_obj
;
#define MICROPY_EXTRA_BUILTINS \
{ MP_QSTR_help, (mp_obj_t)&mp_builtin_help_obj }, \
{ MP_QSTR_input, (mp_obj_t)&mp_builtin_input_obj }, \
{ MP_QSTR_open, (mp_obj_t)&mp_builtin_open_obj },
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment