py/modsys: Introduce sys.implementation._machine constant.
This contains a string useful for identifying the underlying machine. This string is kept consistent with the second part of the REPL banner via the new config option MICROPY_BANNER_MACHINE. This makes os.uname() more or less redundant, as all the information in os.uname() is now available in the sys module. Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
parent
59c5d41611
commit
402df833fe
@ -70,6 +70,7 @@ Constants
|
|||||||
|
|
||||||
* *name* - string "micropython"
|
* *name* - string "micropython"
|
||||||
* *version* - tuple (major, minor, micro), e.g. (1, 7, 0)
|
* *version* - tuple (major, minor, micro), e.g. (1, 7, 0)
|
||||||
|
* *_machine* - string describing the underlying machine
|
||||||
* *_mpy* - supported mpy file-format version (optional attribute)
|
* *_mpy* - supported mpy file-format version (optional attribute)
|
||||||
|
|
||||||
This object is the recommended way to distinguish MicroPython from other
|
This object is the recommended way to distinguish MicroPython from other
|
||||||
|
@ -179,8 +179,8 @@ STATIC char *strjoin(const char *s1, int sep_char, const char *s2) {
|
|||||||
|
|
||||||
STATIC int do_repl(void) {
|
STATIC int do_repl(void) {
|
||||||
mp_hal_stdout_tx_str(MICROPY_BANNER_NAME_AND_VERSION);
|
mp_hal_stdout_tx_str(MICROPY_BANNER_NAME_AND_VERSION);
|
||||||
mp_hal_stdout_tx_str("; " MICROPY_PY_SYS_PLATFORM " [" MICROPY_PLATFORM_COMPILER "] version\n"
|
mp_hal_stdout_tx_str("; " MICROPY_BANNER_MACHINE);
|
||||||
"Use Ctrl-D to exit, Ctrl-E for paste mode\n");
|
mp_hal_stdout_tx_str("\nUse Ctrl-D to exit, Ctrl-E for paste mode\n");
|
||||||
|
|
||||||
#if MICROPY_USE_READLINE == 1
|
#if MICROPY_USE_READLINE == 1
|
||||||
|
|
||||||
|
11
py/modsys.c
11
py/modsys.c
@ -36,6 +36,7 @@
|
|||||||
#include "py/smallint.h"
|
#include "py/smallint.h"
|
||||||
#include "py/runtime.h"
|
#include "py/runtime.h"
|
||||||
#include "py/persistentcode.h"
|
#include "py/persistentcode.h"
|
||||||
|
#include "extmod/moduplatform.h"
|
||||||
#include "genhdr/mpversion.h"
|
#include "genhdr/mpversion.h"
|
||||||
|
|
||||||
#if MICROPY_PY_SYS_SETTRACE
|
#if MICROPY_PY_SYS_SETTRACE
|
||||||
@ -69,20 +70,24 @@ STATIC const mp_obj_tuple_t mp_sys_implementation_version_info_obj = {
|
|||||||
3,
|
3,
|
||||||
{ I(MICROPY_VERSION_MAJOR), I(MICROPY_VERSION_MINOR), I(MICROPY_VERSION_MICRO) }
|
{ I(MICROPY_VERSION_MAJOR), I(MICROPY_VERSION_MINOR), I(MICROPY_VERSION_MICRO) }
|
||||||
};
|
};
|
||||||
|
STATIC const MP_DEFINE_STR_OBJ(mp_sys_implementation_machine_obj, MICROPY_BANNER_MACHINE);
|
||||||
#if MICROPY_PERSISTENT_CODE_LOAD
|
#if MICROPY_PERSISTENT_CODE_LOAD
|
||||||
#define SYS_IMPLEMENTATION_ELEMS \
|
#define SYS_IMPLEMENTATION_ELEMS \
|
||||||
MP_ROM_QSTR(MP_QSTR_micropython), \
|
MP_ROM_QSTR(MP_QSTR_micropython), \
|
||||||
MP_ROM_PTR(&mp_sys_implementation_version_info_obj), \
|
MP_ROM_PTR(&mp_sys_implementation_version_info_obj), \
|
||||||
|
MP_ROM_PTR(&mp_sys_implementation_machine_obj), \
|
||||||
MP_ROM_INT(MPY_FILE_HEADER_INT)
|
MP_ROM_INT(MPY_FILE_HEADER_INT)
|
||||||
#else
|
#else
|
||||||
#define SYS_IMPLEMENTATION_ELEMS \
|
#define SYS_IMPLEMENTATION_ELEMS \
|
||||||
MP_ROM_QSTR(MP_QSTR_micropython), \
|
MP_ROM_QSTR(MP_QSTR_micropython), \
|
||||||
MP_ROM_PTR(&mp_sys_implementation_version_info_obj)
|
MP_ROM_PTR(&mp_sys_implementation_version_info_obj), \
|
||||||
|
MP_ROM_PTR(&mp_sys_implementation_machine_obj)
|
||||||
#endif
|
#endif
|
||||||
#if MICROPY_PY_ATTRTUPLE
|
#if MICROPY_PY_ATTRTUPLE
|
||||||
STATIC const qstr impl_fields[] = {
|
STATIC const qstr impl_fields[] = {
|
||||||
MP_QSTR_name,
|
MP_QSTR_name,
|
||||||
MP_QSTR_version,
|
MP_QSTR_version,
|
||||||
|
MP_QSTR__machine,
|
||||||
#if MICROPY_PERSISTENT_CODE_LOAD
|
#if MICROPY_PERSISTENT_CODE_LOAD
|
||||||
MP_QSTR__mpy,
|
MP_QSTR__mpy,
|
||||||
#endif
|
#endif
|
||||||
@ -90,13 +95,13 @@ STATIC const qstr impl_fields[] = {
|
|||||||
STATIC MP_DEFINE_ATTRTUPLE(
|
STATIC MP_DEFINE_ATTRTUPLE(
|
||||||
mp_sys_implementation_obj,
|
mp_sys_implementation_obj,
|
||||||
impl_fields,
|
impl_fields,
|
||||||
2 + MICROPY_PERSISTENT_CODE_LOAD,
|
3 + MICROPY_PERSISTENT_CODE_LOAD,
|
||||||
SYS_IMPLEMENTATION_ELEMS
|
SYS_IMPLEMENTATION_ELEMS
|
||||||
);
|
);
|
||||||
#else
|
#else
|
||||||
STATIC const mp_rom_obj_tuple_t mp_sys_implementation_obj = {
|
STATIC const mp_rom_obj_tuple_t mp_sys_implementation_obj = {
|
||||||
{&mp_type_tuple},
|
{&mp_type_tuple},
|
||||||
2 + MICROPY_PERSISTENT_CODE_LOAD,
|
3 + MICROPY_PERSISTENT_CODE_LOAD,
|
||||||
{
|
{
|
||||||
SYS_IMPLEMENTATION_ELEMS
|
SYS_IMPLEMENTATION_ELEMS
|
||||||
}
|
}
|
||||||
|
@ -1719,6 +1719,15 @@ typedef double mp_float_t;
|
|||||||
#define MICROPY_BANNER_NAME_AND_VERSION "MicroPython " MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE
|
#define MICROPY_BANNER_NAME_AND_VERSION "MicroPython " MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// String used for the second part of the banner, and sys.implementation._machine
|
||||||
|
#ifndef MICROPY_BANNER_MACHINE
|
||||||
|
#ifdef MICROPY_HW_BOARD_NAME
|
||||||
|
#define MICROPY_BANNER_MACHINE MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME
|
||||||
|
#else
|
||||||
|
#define MICROPY_BANNER_MACHINE MICROPY_PY_SYS_PLATFORM " [" MICROPY_PLATFORM_COMPILER "] version"
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
// On embedded platforms, these will typically enable/disable irqs.
|
// On embedded platforms, these will typically enable/disable irqs.
|
||||||
#ifndef MICROPY_BEGIN_ATOMIC_SECTION
|
#ifndef MICROPY_BEGIN_ATOMIC_SECTION
|
||||||
#define MICROPY_BEGIN_ATOMIC_SECTION() (0)
|
#define MICROPY_BEGIN_ATOMIC_SECTION() (0)
|
||||||
|
@ -402,7 +402,8 @@ STATIC int pyexec_friendly_repl_process_char(int c) {
|
|||||||
// reset friendly REPL
|
// reset friendly REPL
|
||||||
mp_hal_stdout_tx_str("\r\n");
|
mp_hal_stdout_tx_str("\r\n");
|
||||||
mp_hal_stdout_tx_str(MICROPY_BANNER_NAME_AND_VERSION);
|
mp_hal_stdout_tx_str(MICROPY_BANNER_NAME_AND_VERSION);
|
||||||
mp_hal_stdout_tx_str("; " MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME "\r\n");
|
mp_hal_stdout_tx_str("; " MICROPY_BANNER_MACHINE);
|
||||||
|
mp_hal_stdout_tx_str("\r\n");
|
||||||
#if MICROPY_PY_BUILTINS_HELP
|
#if MICROPY_PY_BUILTINS_HELP
|
||||||
mp_hal_stdout_tx_str("Type \"help()\" for more information.\r\n");
|
mp_hal_stdout_tx_str("Type \"help()\" for more information.\r\n");
|
||||||
#endif
|
#endif
|
||||||
@ -554,7 +555,8 @@ int pyexec_friendly_repl(void) {
|
|||||||
|
|
||||||
friendly_repl_reset:
|
friendly_repl_reset:
|
||||||
mp_hal_stdout_tx_str(MICROPY_BANNER_NAME_AND_VERSION);
|
mp_hal_stdout_tx_str(MICROPY_BANNER_NAME_AND_VERSION);
|
||||||
mp_hal_stdout_tx_str("; " MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME "\r\n");
|
mp_hal_stdout_tx_str("; " MICROPY_BANNER_MACHINE);
|
||||||
|
mp_hal_stdout_tx_str("\r\n");
|
||||||
#if MICROPY_PY_BUILTINS_HELP
|
#if MICROPY_PY_BUILTINS_HELP
|
||||||
mp_hal_stdout_tx_str("Type \"help()\" for more information.\r\n");
|
mp_hal_stdout_tx_str("Type \"help()\" for more information.\r\n");
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user