Skip to content

Commit d8837ce

Browse files
committed
stmhal: Implement os.uname() to get details of OS and hardware.
1 parent c3184ae commit d8837ce

3 files changed

Lines changed: 36 additions & 0 deletions

File tree

py/py-version.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,5 @@ cat <<EOF
3535
#define MICROPY_VERSION_MAJOR (${ver_major})
3636
#define MICROPY_VERSION_MINOR (${ver_minor})
3737
#define MICROPY_VERSION_MICRO (${ver_micro})
38+
#define MICROPY_VERSION_STRING "${ver_major}.${ver_minor}.${ver_micro}"
3839
EOF

stmhal/moduos.c

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
#include "py/nlr.h"
3131
#include "py/obj.h"
3232
#include "py/objtuple.h"
33+
#include "py/objstr.h"
34+
#include "genhdr/py-version.h"
3335
#include "lib/fatfs/ff.h"
3436
#include "lib/fatfs/diskio.h"
3537
#include "rng.h"
@@ -64,6 +66,31 @@ STATIC bool sd_in_root(void) {
6466
#endif
6567
}
6668

69+
STATIC const qstr os_uname_info_fields[] = {
70+
MP_QSTR_sysname, MP_QSTR_nodename,
71+
MP_QSTR_release, MP_QSTR_version, MP_QSTR_machine
72+
};
73+
STATIC const MP_DEFINE_STR_OBJ(os_uname_info_sysname_obj, "pyboard");
74+
STATIC const MP_DEFINE_STR_OBJ(os_uname_info_nodename_obj, "pyboard");
75+
STATIC const MP_DEFINE_STR_OBJ(os_uname_info_release_obj, MICROPY_VERSION_STRING);
76+
STATIC const MP_DEFINE_STR_OBJ(os_uname_info_version_obj, MICROPY_GIT_TAG " on " MICROPY_BUILD_DATE);
77+
STATIC const MP_DEFINE_STR_OBJ(os_uname_info_machine_obj, MICROPY_HW_BOARD_NAME " with " MICROPY_HW_MCU_NAME);
78+
STATIC MP_DEFINE_ATTRTUPLE(
79+
os_uname_info_obj,
80+
os_uname_info_fields,
81+
5,
82+
(mp_obj_t)&os_uname_info_sysname_obj,
83+
(mp_obj_t)&os_uname_info_nodename_obj,
84+
(mp_obj_t)&os_uname_info_release_obj,
85+
(mp_obj_t)&os_uname_info_version_obj,
86+
(mp_obj_t)&os_uname_info_machine_obj
87+
);
88+
89+
STATIC mp_obj_t os_uname(void) {
90+
return (mp_obj_t)&os_uname_info_obj;
91+
}
92+
STATIC MP_DEFINE_CONST_FUN_OBJ_0(os_uname_obj, os_uname);
93+
6794
/// \function chdir(path)
6895
/// Change current directory.
6996
STATIC mp_obj_t os_chdir(mp_obj_t path_in) {
@@ -334,6 +361,8 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(os_urandom_obj, os_urandom);
334361
STATIC const mp_map_elem_t os_module_globals_table[] = {
335362
{ MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_uos) },
336363

364+
{ MP_OBJ_NEW_QSTR(MP_QSTR_uname), (mp_obj_t)&os_uname_obj },
365+
337366
{ MP_OBJ_NEW_QSTR(MP_QSTR_chdir), (mp_obj_t)&os_chdir_obj },
338367
{ MP_OBJ_NEW_QSTR(MP_QSTR_getcwd), (mp_obj_t)&os_getcwd_obj },
339368
{ MP_OBJ_NEW_QSTR(MP_QSTR_listdir), (mp_obj_t)&os_listdir_obj },

stmhal/qstrdefsport.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,12 @@ Q(os)
368368
Q(/)
369369
Q(flash)
370370
Q(sd)
371+
Q(sysname)
372+
Q(nodename)
373+
Q(release)
374+
Q(version)
375+
Q(machine)
376+
Q(uname)
371377
Q(chdir)
372378
Q(getcwd)
373379
Q(listdir)

0 commit comments

Comments
 (0)