Skip to content

Commit 2097c8b

Browse files
committed
moductypes: Add symbolic constants to specify bitfield position/length.
1 parent 8215847 commit 2097c8b

4 files changed

Lines changed: 18 additions & 12 deletions

File tree

extmod/moductypes.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -606,6 +606,9 @@ STATIC const mp_map_elem_t mp_module_uctypes_globals_table[] = {
606606
{ MP_OBJ_NEW_QSTR(MP_QSTR_BFUINT32), MP_OBJ_NEW_SMALL_INT(TYPE2SMALLINT(BFUINT32, 4)) },
607607
{ MP_OBJ_NEW_QSTR(MP_QSTR_BFINT32), MP_OBJ_NEW_SMALL_INT(TYPE2SMALLINT(BFINT32, 4)) },
608608

609+
{ MP_OBJ_NEW_QSTR(MP_QSTR_BF_POS), MP_OBJ_NEW_SMALL_INT(17) },
610+
{ MP_OBJ_NEW_QSTR(MP_QSTR_BF_LEN), MP_OBJ_NEW_SMALL_INT(22) },
611+
609612
{ MP_OBJ_NEW_QSTR(MP_QSTR_PTR), MP_OBJ_NEW_SMALL_INT(TYPE2SMALLINT(PTR, AGG_TYPE_BITS)) },
610613
{ MP_OBJ_NEW_QSTR(MP_QSTR_ARRAY), MP_OBJ_NEW_SMALL_INT(TYPE2SMALLINT(ARRAY, AGG_TYPE_BITS)) },
611614
};

py/qstrdefs.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,9 @@ Q(FLOAT64)
398398
Q(ARRAY)
399399
Q(PTR)
400400
//Q(BITFIELD)
401+
402+
Q(BF_POS)
403+
Q(BF_LEN)
401404
#endif
402405

403406
#if MICROPY_PY_IO

tests/extmod/uctypes_le.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
}),
99
"arr": (uctypes.ARRAY | 0, uctypes.UINT8 | 2),
1010
"arr2": (uctypes.ARRAY | 0, 2, {"b": uctypes.UINT8 | 0}),
11-
"bitf0": uctypes.BFUINT16 | 0 | 0 << 17 | 8 << 22,
12-
"bitf1": uctypes.BFUINT16 | 0 | 8 << 17 | 8 << 22,
11+
"bitf0": uctypes.BFUINT16 | 0 | 0 << uctypes.BF_POS | 8 << uctypes.BF_LEN,
12+
"bitf1": uctypes.BFUINT16 | 0 | 8 << uctypes.BF_POS | 8 << uctypes.BF_LEN,
1313

14-
"bf0": uctypes.BFUINT16 | 0 | 0 << 17 | 4 << 22,
15-
"bf1": uctypes.BFUINT16 | 0 | 4 << 17 | 4 << 22,
16-
"bf2": uctypes.BFUINT16 | 0 | 8 << 17 | 4 << 22,
17-
"bf3": uctypes.BFUINT16 | 0 | 12 << 17 | 4 << 22,
14+
"bf0": uctypes.BFUINT16 | 0 | 0 << uctypes.BF_POS | 4 << uctypes.BF_LEN,
15+
"bf1": uctypes.BFUINT16 | 0 | 4 << uctypes.BF_POS | 4 << uctypes.BF_LEN,
16+
"bf2": uctypes.BFUINT16 | 0 | 8 << uctypes.BF_POS | 4 << uctypes.BF_LEN,
17+
"bf3": uctypes.BFUINT16 | 0 | 12 << uctypes.BF_POS | 4 << uctypes.BF_LEN,
1818

1919
"ptr": (uctypes.PTR | 0, uctypes.UINT8),
2020
"ptr2": (uctypes.PTR | 0, {"b": uctypes.UINT8 | 0}),

tests/extmod/uctypes_native_le.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@
1717
}),
1818
"arr": (uctypes.ARRAY | 0, uctypes.UINT8 | 2),
1919
"arr2": (uctypes.ARRAY | 0, 2, {"b": uctypes.UINT8 | 0}),
20-
"bitf0": uctypes.BFUINT16 | 0 | 0 << 17 | 8 << 22,
21-
"bitf1": uctypes.BFUINT16 | 0 | 8 << 17 | 8 << 22,
20+
"bitf0": uctypes.BFUINT16 | 0 | 0 << uctypes.BF_POS | 8 << uctypes.BF_LEN,
21+
"bitf1": uctypes.BFUINT16 | 0 | 8 << uctypes.BF_POS | 8 << uctypes.BF_LEN,
2222

23-
"bf0": uctypes.BFUINT16 | 0 | 0 << 17 | 4 << 22,
24-
"bf1": uctypes.BFUINT16 | 0 | 4 << 17 | 4 << 22,
25-
"bf2": uctypes.BFUINT16 | 0 | 8 << 17 | 4 << 22,
26-
"bf3": uctypes.BFUINT16 | 0 | 12 << 17 | 4 << 22,
23+
"bf0": uctypes.BFUINT16 | 0 | 0 << uctypes.BF_POS | 4 << uctypes.BF_LEN,
24+
"bf1": uctypes.BFUINT16 | 0 | 4 << uctypes.BF_POS | 4 << uctypes.BF_LEN,
25+
"bf2": uctypes.BFUINT16 | 0 | 8 << uctypes.BF_POS | 4 << uctypes.BF_LEN,
26+
"bf3": uctypes.BFUINT16 | 0 | 12 << uctypes.BF_POS | 4 << uctypes.BF_LEN,
2727

2828
"ptr": (uctypes.PTR | 0, uctypes.UINT8),
2929
"ptr2": (uctypes.PTR | 0, {"b": uctypes.UINT8 | 0}),

0 commit comments

Comments
 (0)