diff options
| author | Daniel Campora | 2015-09-13 15:59:45 +0200 |
|---|---|---|
| committer | Daniel Campora | 2015-09-16 10:10:26 +0200 |
| commit | 8332044f754aa0743fb38404dae55508a0550e6a (patch) | |
| tree | 2159aedfa602c2c4335b2f4ea5eabaa5647ed7bc /cc3200 | |
| parent | d5ec336eefc8d892a1182da747d825155fcecb15 (diff) | |
cc3200: Add UART.ODD and UART.EVEN to select parity.
Diffstat (limited to 'cc3200')
| -rw-r--r-- | cc3200/mods/pybuart.c | 10 | ||||
| -rw-r--r-- | cc3200/qstrdefsport.h | 2 |
2 files changed, 10 insertions, 2 deletions
diff --git a/cc3200/mods/pybuart.c b/cc3200/mods/pybuart.c index 7fd647c1d..5c4aa1923 100644 --- a/cc3200/mods/pybuart.c +++ b/cc3200/mods/pybuart.c @@ -343,7 +343,7 @@ STATIC void pyb_uart_print(const mp_print_t *print, mp_obj_t self_in, mp_print_k if ((self->config & UART_CONFIG_PAR_MASK) == UART_CONFIG_PAR_NONE) { mp_print_str(print, ", parity=None"); } else { - mp_printf(print, ", parity=%u", (self->config & UART_CONFIG_PAR_MASK) == UART_CONFIG_PAR_EVEN ? 0 : 1); + mp_printf(print, ", parity=UART.%q", (self->config & UART_CONFIG_PAR_MASK) == UART_CONFIG_PAR_EVEN ? MP_QSTR_EVEN : MP_QSTR_ODD); } mp_printf(print, ", stop=%u)", (self->config & UART_CONFIG_STOP_MASK) == UART_CONFIG_STOP_ONE ? 1 : 2); } @@ -380,7 +380,11 @@ STATIC mp_obj_t pyb_uart_init_helper(pyb_uart_obj_t *self, mp_arg_val_t *args) { if (args[2].u_obj == mp_const_none) { config |= UART_CONFIG_PAR_NONE; } else { - config |= ((mp_obj_get_int(args[2].u_obj) & 1) ? UART_CONFIG_PAR_ODD : UART_CONFIG_PAR_EVEN); + uint parity = mp_obj_get_int(args[2].u_obj); + if (parity != UART_CONFIG_PAR_ODD && parity != UART_CONFIG_PAR_EVEN) { + goto error; + } + config |= parity; } // stop bits config |= (args[3].u_int == 1 ? UART_CONFIG_STOP_ONE : UART_CONFIG_STOP_TWO); @@ -575,6 +579,8 @@ STATIC const mp_map_elem_t pyb_uart_locals_dict_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR_write), (mp_obj_t)&mp_stream_write_obj }, // class constants + { MP_OBJ_NEW_QSTR(MP_QSTR_EVEN), MP_OBJ_NEW_SMALL_INT(UART_CONFIG_PAR_EVEN) }, + { MP_OBJ_NEW_QSTR(MP_QSTR_ODD), MP_OBJ_NEW_SMALL_INT(UART_CONFIG_PAR_ODD) }, { MP_OBJ_NEW_QSTR(MP_QSTR_RX_ANY), MP_OBJ_NEW_SMALL_INT(E_UART_TRIGGER_RX_ANY) }, }; diff --git a/cc3200/qstrdefsport.h b/cc3200/qstrdefsport.h index c0c8069b3..337ea9b06 100644 --- a/cc3200/qstrdefsport.h +++ b/cc3200/qstrdefsport.h @@ -148,6 +148,8 @@ Q(bits) Q(stop) Q(parity) Q(pins) +Q(EVEN) +Q(ODD) Q(RX_ANY) // for I2C class |
