From 18030bd85d77367162162496ee025b7d98ad3c41 Mon Sep 17 00:00:00 2001 From: Daniel Campora Date: Fri, 22 May 2015 09:54:10 +0200 Subject: [PATCH] cc3200: Add own ubinascii module. The reason to have our owm ubinascii module is so that later we can add crc32 support using the hardware engine. --- cc3200/application.mk | 1 + cc3200/mods/modubinascii.c | 62 ++++++++++++++++++++++++++++++++++++++ cc3200/mods/modubinascii.h | 31 +++++++++++++++++++ cc3200/mpconfigport.h | 8 +++-- cc3200/qstrdefsport.h | 6 ++++ 5 files changed, 105 insertions(+), 3 deletions(-) create mode 100644 cc3200/mods/modubinascii.c create mode 100644 cc3200/mods/modubinascii.h diff --git a/cc3200/application.mk b/cc3200/application.mk index aacc82a3e6..da34413c04 100644 --- a/cc3200/application.mk +++ b/cc3200/application.mk @@ -87,6 +87,7 @@ APP_MISC_SRC_C = $(addprefix misc/,\ APP_MODS_SRC_C = $(addprefix mods/,\ modnetwork.c \ moduhashlib.c \ + modubinascii.c \ modpyb.c \ moduos.c \ modusocket.c \ diff --git a/cc3200/mods/modubinascii.c b/cc3200/mods/modubinascii.c new file mode 100644 index 0000000000..a112145168 --- /dev/null +++ b/cc3200/mods/modubinascii.c @@ -0,0 +1,62 @@ +/* + * This file is part of the Micro Python project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2014 Paul Sokolovsky + * Copyright (c) 2015 Daniel Campora + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "py/mpconfig.h" +#include MICROPY_HAL_H +#include "py/nlr.h" +#include "py/runtime.h" +#include "py/binary.h" +#include "extmod/modubinascii.h" +#include "modubinascii.h" +#include "inc/hw_types.h" +#include "inc/hw_ints.h" +#include "inc/hw_nvic.h" +#include "inc/hw_dthe.h" +#include "hw_memmap.h" +#include "rom_map.h" +#include "prcm.h" +#include "crc.h" +#include "cryptohash.h" +#include "mpexception.h" + + +/******************************************************************************/ +// Micro Python bindings + +STATIC const mp_map_elem_t mp_module_binascii_globals_table[] = { + { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_ubinascii) }, + { MP_OBJ_NEW_QSTR(MP_QSTR_hexlify), (mp_obj_t)&mod_binascii_hexlify_obj }, + { MP_OBJ_NEW_QSTR(MP_QSTR_unhexlify), (mp_obj_t)&mod_binascii_unhexlify_obj }, +}; + +STATIC MP_DEFINE_CONST_DICT(mp_module_binascii_globals, mp_module_binascii_globals_table); + +const mp_obj_module_t mp_module_ubinascii = { + .base = { &mp_type_module }, + .name = MP_QSTR_ubinascii, + .globals = (mp_obj_dict_t*)&mp_module_binascii_globals, +}; diff --git a/cc3200/mods/modubinascii.h b/cc3200/mods/modubinascii.h new file mode 100644 index 0000000000..c04b70021f --- /dev/null +++ b/cc3200/mods/modubinascii.h @@ -0,0 +1,31 @@ +/* + * This file is part of the Micro Python project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2014 Paul Sokolovsky + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef MODUBINASCII_H_ +#define MODUBINASCII_H_ + + +#endif /* MODUBINASCII_H_ */ diff --git a/cc3200/mpconfigport.h b/cc3200/mpconfigport.h index 21a479d014..5bf6477ea4 100644 --- a/cc3200/mpconfigport.h +++ b/cc3200/mpconfigport.h @@ -75,7 +75,7 @@ #define MICROPY_PY_CMATH (0) #define MICROPY_PY_IO (1) #define MICROPY_PY_IO_FILEIO (1) -#define MICROPY_PY_UBINASCII (1) +#define MICROPY_PY_UBINASCII (0) #define MICROPY_PY_UCTYPES (0) #define MICROPY_PY_UZLIB (0) #define MICROPY_PY_UJSON (1) @@ -97,7 +97,6 @@ extern const struct _mp_obj_fun_builtin_t mp_builtin_open_obj; // extra built in modules to add to the list of known ones extern const struct _mp_obj_module_t pyb_module; -extern const struct _mp_obj_module_t mp_module_ubinascii; extern const struct _mp_obj_module_t mp_module_ure; extern const struct _mp_obj_module_t mp_module_ujson; extern const struct _mp_obj_module_t mp_module_uheapq; @@ -106,6 +105,8 @@ extern const struct _mp_obj_module_t mp_module_utime; extern const struct _mp_obj_module_t mp_module_uselect; extern const struct _mp_obj_module_t mp_module_usocket; extern const struct _mp_obj_module_t mp_module_network; +extern const struct _mp_obj_module_t mp_module_uhashlib; +extern const struct _mp_obj_module_t mp_module_ubinascii; #define MICROPY_PORT_BUILTIN_MODULES \ { MP_OBJ_NEW_QSTR(MP_QSTR_pyb), (mp_obj_t)&pyb_module }, \ @@ -115,9 +116,9 @@ extern const struct _mp_obj_module_t mp_module_network; { MP_OBJ_NEW_QSTR(MP_QSTR_usocket), (mp_obj_t)&mp_module_usocket }, \ { MP_OBJ_NEW_QSTR(MP_QSTR_network), (mp_obj_t)&mp_module_network }, \ { MP_OBJ_NEW_QSTR(MP_QSTR_uhashlib), (mp_obj_t)&mp_module_uhashlib }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_ubinascii), (mp_obj_t)&mp_module_ubinascii }, \ #define MICROPY_PORT_BUILTIN_MODULE_WEAK_LINKS \ - { MP_OBJ_NEW_QSTR(MP_QSTR_binascii), (mp_obj_t)&mp_module_ubinascii }, \ { MP_OBJ_NEW_QSTR(MP_QSTR_re), (mp_obj_t)&mp_module_ure }, \ { MP_OBJ_NEW_QSTR(MP_QSTR_json), (mp_obj_t)&mp_module_ujson }, \ { MP_OBJ_NEW_QSTR(MP_QSTR_heapq), (mp_obj_t)&mp_module_uheapq }, \ @@ -126,6 +127,7 @@ extern const struct _mp_obj_module_t mp_module_network; { MP_OBJ_NEW_QSTR(MP_QSTR_select), (mp_obj_t)&mp_module_uselect }, \ { MP_OBJ_NEW_QSTR(MP_QSTR_socket), (mp_obj_t)&mp_module_usocket }, \ { MP_OBJ_NEW_QSTR(MP_QSTR_hashlib), (mp_obj_t)&mp_module_uhashlib }, \ + { MP_OBJ_NEW_QSTR(MP_QSTR_binascii), (mp_obj_t)&mp_module_ubinascii }, \ // extra constants #define MICROPY_PORT_CONSTANTS \ diff --git a/cc3200/qstrdefsport.h b/cc3200/qstrdefsport.h index 63d469d441..ee07fb5ed3 100644 --- a/cc3200/qstrdefsport.h +++ b/cc3200/qstrdefsport.h @@ -357,3 +357,9 @@ Q(digest) //Q(md5) Q(sha1) Q(sha256) + +// for ubinascii module +Q(ubinascii) +Q(hexlify) +Q(unhexlify) +