qrio: Split QRInfo & PixelPolicy to their own .c/.h files
This commit is contained in:
parent
8e201d519e
commit
67551c1ac0
@ -445,6 +445,8 @@ $(filter $(SRC_PATTERNS), \
|
|||||||
_eve/__init__.c \
|
_eve/__init__.c \
|
||||||
camera/ImageFormat.c \
|
camera/ImageFormat.c \
|
||||||
canio/Match.c \
|
canio/Match.c \
|
||||||
|
qrio/PixelPolicy.c \
|
||||||
|
qrio/QRInfo.c \
|
||||||
digitalio/Direction.c \
|
digitalio/Direction.c \
|
||||||
digitalio/DriveMode.c \
|
digitalio/DriveMode.c \
|
||||||
digitalio/Pull.c \
|
digitalio/Pull.c \
|
||||||
@ -672,7 +674,6 @@ SRC_CIRCUITPY_COMMON = \
|
|||||||
ifeq ($(CIRCUITPY_QRIO),1)
|
ifeq ($(CIRCUITPY_QRIO),1)
|
||||||
SRC_CIRCUITPY_COMMON += lib/quirc/lib/decode.c lib/quirc/lib/identify.c lib/quirc/lib/quirc.c lib/quirc/lib/version_db.c
|
SRC_CIRCUITPY_COMMON += lib/quirc/lib/decode.c lib/quirc/lib/identify.c lib/quirc/lib/quirc.c lib/quirc/lib/version_db.c
|
||||||
$(BUILD)/lib/quirc/lib/%.o: CFLAGS += -Wno-shadow -Wno-sign-compare -include shared-module/qrio/quirc_alloc.h
|
$(BUILD)/lib/quirc/lib/%.o: CFLAGS += -Wno-shadow -Wno-sign-compare -include shared-module/qrio/quirc_alloc.h
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef LD_TEMPLATE_FILE
|
ifdef LD_TEMPLATE_FILE
|
||||||
|
56
shared-bindings/qrio/PixelPolicy.c
Normal file
56
shared-bindings/qrio/PixelPolicy.c
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2021 Jeff Epler
|
||||||
|
*
|
||||||
|
* 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 "shared-bindings/qrio/__init__.h"
|
||||||
|
#include "shared-bindings/qrio/PixelPolicy.h"
|
||||||
|
#include "py/obj.h"
|
||||||
|
#include "py/enum.h"
|
||||||
|
|
||||||
|
//| class PixelPolicy:
|
||||||
|
//| EVERY_BYTE: PixelPolicy
|
||||||
|
//| """The input buffer to `QRDecoder.decode` consists of greyscale values in every byte"""
|
||||||
|
//|
|
||||||
|
//| EVEN_BYTES: PixelPolicy
|
||||||
|
//| """The input buffer to `QRDecoder.decode` consists of greyscale values in positions 0, 2, …, and ignored bytes in positions 1, 3, …. This can decode directly from YUV images where the even bytes hold the Y (luminance) data."""
|
||||||
|
//|
|
||||||
|
//| ODD_BYTES: PixelPolicy
|
||||||
|
//| """The input buffer to `QRDecoder.decode` consists of greyscale values in positions 1, 3, …, and ignored bytes in positions 0, 2, …. This can decode directly from YUV images where the odd bytes hold the Y (luminance) data"""
|
||||||
|
//|
|
||||||
|
|
||||||
|
MAKE_ENUM_VALUE(qrio_pixel_policy_type, qrio_pixel_policy, EVERY_BYTE, QRIO_EVERY_BYTE);
|
||||||
|
MAKE_ENUM_VALUE(qrio_pixel_policy_type, qrio_pixel_policy, EVEN_BYTES, QRIO_EVEN_BYTES);
|
||||||
|
MAKE_ENUM_VALUE(qrio_pixel_policy_type, qrio_pixel_policy, ODD_BYTES, QRIO_EVEN_BYTES);
|
||||||
|
|
||||||
|
MAKE_ENUM_MAP(qrio_pixel_policy) {
|
||||||
|
MAKE_ENUM_MAP_ENTRY(qrio_pixel_policy, EVERY_BYTE),
|
||||||
|
MAKE_ENUM_MAP_ENTRY(qrio_pixel_policy, EVEN_BYTES),
|
||||||
|
MAKE_ENUM_MAP_ENTRY(qrio_pixel_policy, ODD_BYTES),
|
||||||
|
};
|
||||||
|
STATIC MP_DEFINE_CONST_DICT(qrio_pixel_policy_locals_dict, qrio_pixel_policy_locals_table);
|
||||||
|
|
||||||
|
MAKE_PRINTER(qrio, qrio_pixel_policy);
|
||||||
|
|
||||||
|
MAKE_ENUM_TYPE(qrio, PixelPolicy, qrio_pixel_policy);
|
39
shared-bindings/qrio/PixelPolicy.h
Normal file
39
shared-bindings/qrio/PixelPolicy.h
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the Micro Python project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2021 Jeff Epler for Adafruit Industries
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "py/enum.h"
|
||||||
|
#include "py/obj.h"
|
||||||
|
#include "py/objnamedtuple.h"
|
||||||
|
|
||||||
|
extern const mp_obj_type_t qrio_pixel_policy_type;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
QRIO_EVERY_BYTE, QRIO_EVEN_BYTES, QRIO_ODD_BYTES
|
||||||
|
} qrio_pixel_policy_t;
|
||||||
|
|
||||||
|
extern const cp_enum_obj_t qrio_pixel_policy_EVERY_BYTE_obj;
|
64
shared-bindings/qrio/QRInfo.c
Normal file
64
shared-bindings/qrio/QRInfo.c
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the CircuitPython project, https://github.com/adafruit/circuitpython
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2021 Jeff Epler
|
||||||
|
*
|
||||||
|
* 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 "shared-bindings/qrio/__init__.h"
|
||||||
|
#include "shared-bindings/qrio/QRInfo.h"
|
||||||
|
#include "py/obj.h"
|
||||||
|
#include "py/enum.h"
|
||||||
|
|
||||||
|
//| class QRInfo:
|
||||||
|
//| """Information about a decoded QR code"""
|
||||||
|
//|
|
||||||
|
//| payload: bytes
|
||||||
|
//| """The content of the QR code"""
|
||||||
|
//|
|
||||||
|
//| data_type: Union[str, int]
|
||||||
|
//| """The encoding of the payload as a string (if a standard encoding) or int (if not standard)"""
|
||||||
|
|
||||||
|
const mp_obj_namedtuple_type_t qrio_qrinfo_type_obj = {
|
||||||
|
.base = {
|
||||||
|
.base = {
|
||||||
|
.type = &mp_type_type
|
||||||
|
},
|
||||||
|
.flags = MP_TYPE_FLAG_EXTENDED,
|
||||||
|
.name = MP_QSTR_QRInfo,
|
||||||
|
.print = namedtuple_print,
|
||||||
|
.parent = &mp_type_tuple,
|
||||||
|
.make_new = namedtuple_make_new,
|
||||||
|
.attr = namedtuple_attr,
|
||||||
|
MP_TYPE_EXTENDED_FIELDS(
|
||||||
|
.unary_op = mp_obj_tuple_unary_op,
|
||||||
|
.binary_op = mp_obj_tuple_binary_op,
|
||||||
|
.subscr = mp_obj_tuple_subscr,
|
||||||
|
.getiter = mp_obj_tuple_getiter,
|
||||||
|
),
|
||||||
|
},
|
||||||
|
.n_fields = 2,
|
||||||
|
.fields = {
|
||||||
|
MP_QSTR_payload,
|
||||||
|
MP_QSTR_data_type,
|
||||||
|
},
|
||||||
|
};
|
31
shared-bindings/qrio/QRInfo.h
Normal file
31
shared-bindings/qrio/QRInfo.h
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the Micro Python project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2021 Jeff Epler for Adafruit Industries
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "py/objnamedtuple.h"
|
||||||
|
|
||||||
|
extern const mp_obj_namedtuple_type_t qrio_qrinfo_type_obj;
|
@ -26,6 +26,8 @@
|
|||||||
|
|
||||||
#include "shared-bindings/qrio/__init__.h"
|
#include "shared-bindings/qrio/__init__.h"
|
||||||
#include "shared-bindings/qrio/QRDecoder.h"
|
#include "shared-bindings/qrio/QRDecoder.h"
|
||||||
|
#include "shared-bindings/qrio/QRInfo.h"
|
||||||
|
#include "shared-bindings/qrio/PixelPolicy.h"
|
||||||
#include "py/obj.h"
|
#include "py/obj.h"
|
||||||
#include "py/enum.h"
|
#include "py/enum.h"
|
||||||
|
|
||||||
@ -34,66 +36,6 @@
|
|||||||
//| Provides the `QRDecoder` object."""
|
//| Provides the `QRDecoder` object."""
|
||||||
//|
|
//|
|
||||||
|
|
||||||
//| class PixelPolicy:
|
|
||||||
//| EVERY_BYTE: PixelPolicy
|
|
||||||
//| """The input buffer to `QRDecoder.decode` consists of greyscale values in every byte"""
|
|
||||||
//|
|
|
||||||
//| EVEN_BYTES: PixelPolicy
|
|
||||||
//| """The input buffer to `QRDecoder.decode` consists of greyscale values in positions 0, 2, …, and ignored bytes in positions 1, 3, …. This can decode directly from YUV images where the even bytes hold the Y (luminance) data."""
|
|
||||||
//|
|
|
||||||
//| ODD_BYTES: PixelPolicy
|
|
||||||
//| """The input buffer to `QRDecoder.decode` consists of greyscale values in positions 1, 3, …, and ignored bytes in positions 0, 2, …. This can decode directly from YUV images where the odd bytes hold the Y (luminance) data"""
|
|
||||||
//|
|
|
||||||
|
|
||||||
MAKE_ENUM_VALUE(qrio_pixel_policy_type, qrio_pixel_policy, EVERY_BYTE, QRIO_EVERY_BYTE);
|
|
||||||
MAKE_ENUM_VALUE(qrio_pixel_policy_type, qrio_pixel_policy, EVEN_BYTES, QRIO_EVEN_BYTES);
|
|
||||||
MAKE_ENUM_VALUE(qrio_pixel_policy_type, qrio_pixel_policy, ODD_BYTES, QRIO_EVEN_BYTES);
|
|
||||||
|
|
||||||
MAKE_ENUM_MAP(qrio_pixel_policy) {
|
|
||||||
MAKE_ENUM_MAP_ENTRY(qrio_pixel_policy, EVERY_BYTE),
|
|
||||||
MAKE_ENUM_MAP_ENTRY(qrio_pixel_policy, EVEN_BYTES),
|
|
||||||
MAKE_ENUM_MAP_ENTRY(qrio_pixel_policy, ODD_BYTES),
|
|
||||||
};
|
|
||||||
STATIC MP_DEFINE_CONST_DICT(qrio_pixel_policy_locals_dict, qrio_pixel_policy_locals_table);
|
|
||||||
|
|
||||||
MAKE_PRINTER(qrio, qrio_pixel_policy);
|
|
||||||
|
|
||||||
MAKE_ENUM_TYPE(qrio, PixelPolicy, qrio_pixel_policy);
|
|
||||||
|
|
||||||
//| class QRInfo:
|
|
||||||
//| """Information about a decoded QR code"""
|
|
||||||
//|
|
|
||||||
//| payload: bytes
|
|
||||||
//| """The content of the QR code"""
|
|
||||||
//|
|
|
||||||
//| data_type: Union[str, int]
|
|
||||||
//| """The encoding of the payload as a string (if a standard encoding) or int (if not standard)"""
|
|
||||||
|
|
||||||
const mp_obj_namedtuple_type_t qrio_qrinfo_type_obj = {
|
|
||||||
.base = {
|
|
||||||
.base = {
|
|
||||||
.type = &mp_type_type
|
|
||||||
},
|
|
||||||
.flags = MP_TYPE_FLAG_EXTENDED,
|
|
||||||
.name = MP_QSTR_QRInfo,
|
|
||||||
.print = namedtuple_print,
|
|
||||||
.parent = &mp_type_tuple,
|
|
||||||
.make_new = namedtuple_make_new,
|
|
||||||
.attr = namedtuple_attr,
|
|
||||||
MP_TYPE_EXTENDED_FIELDS(
|
|
||||||
.unary_op = mp_obj_tuple_unary_op,
|
|
||||||
.binary_op = mp_obj_tuple_binary_op,
|
|
||||||
.subscr = mp_obj_tuple_subscr,
|
|
||||||
.getiter = mp_obj_tuple_getiter,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
.n_fields = 2,
|
|
||||||
.fields = {
|
|
||||||
MP_QSTR_payload,
|
|
||||||
MP_QSTR_data_type,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
STATIC const mp_rom_map_elem_t qrio_module_globals_table[] = {
|
STATIC const mp_rom_map_elem_t qrio_module_globals_table[] = {
|
||||||
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_qrio) },
|
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_qrio) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_QRInfo), MP_ROM_PTR(&qrio_qrinfo_type_obj) },
|
{ MP_ROM_QSTR(MP_QSTR_QRInfo), MP_ROM_PTR(&qrio_qrinfo_type_obj) },
|
||||||
|
@ -25,17 +25,3 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "py/enum.h"
|
|
||||||
#include "py/obj.h"
|
|
||||||
#include "py/objnamedtuple.h"
|
|
||||||
|
|
||||||
extern const mp_obj_namedtuple_type_t qrio_qrinfo_type_obj;
|
|
||||||
|
|
||||||
extern const mp_obj_type_t qrio_pixel_policy_type;
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
QRIO_EVERY_BYTE, QRIO_EVEN_BYTES, QRIO_ODD_BYTES
|
|
||||||
} qrio_pixel_policy_t;
|
|
||||||
|
|
||||||
extern const cp_enum_obj_t qrio_pixel_policy_EVERY_BYTE_obj;
|
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
#include "py/gc.h"
|
#include "py/gc.h"
|
||||||
#include "py/objnamedtuple.h"
|
#include "py/objnamedtuple.h"
|
||||||
#include "shared-bindings/qrio/__init__.h"
|
#include "shared-bindings/qrio/__init__.h"
|
||||||
|
#include "shared-bindings/qrio/QRInfo.h"
|
||||||
#include "shared-module/qrio/QRDecoder.h"
|
#include "shared-module/qrio/QRDecoder.h"
|
||||||
|
|
||||||
void shared_module_qrio_qrdecoder_construct(qrdecoder_qrdecoder_obj_t *self, int width, int height) {
|
void shared_module_qrio_qrdecoder_construct(qrdecoder_qrdecoder_obj_t *self, int width, int height) {
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
|
|
||||||
#include "py/obj.h"
|
#include "py/obj.h"
|
||||||
#include "lib/quirc/lib/quirc.h"
|
#include "lib/quirc/lib/quirc.h"
|
||||||
|
#include "shared-bindings/qrio/PixelPolicy.h"
|
||||||
|
|
||||||
typedef struct qrio_qrdecoder_obj {
|
typedef struct qrio_qrdecoder_obj {
|
||||||
mp_obj_base_t base;
|
mp_obj_base_t base;
|
||||||
|
Loading…
Reference in New Issue
Block a user