X-Git-Url: https://code.kerkeslager.com/?p=sandbox;a=blobdiff_plain;f=serial%2Fserial%2Fbinary.py;h=55fe8c3fc91a8f73534e3d2d678038dc1a20890f;hp=fabcd472f5d2060809f3ea26497b6b2a4d280b8e;hb=dfa64d16cb61f7820b2ce021ba0925a20de7e157;hpb=6b21bc4cb9e04752ff73beac0d706b6c6b5094e4 diff --git a/serial/serial/binary.py b/serial/serial/binary.py index fabcd47..55fe8c3 100644 --- a/serial/serial/binary.py +++ b/serial/serial/binary.py @@ -3,22 +3,7 @@ import functools import io import struct -TAG_NULL = 0x00 -TAG_TRUE = 0x01 -TAG_FALSE = 0x02 -TAG_UINT8 = 0x03 -TAG_UINT16 = 0x04 -TAG_UINT32 = 0x05 -TAG_UINT64 = 0x06 -TAG_INT8 = 0x10 -TAG_INT16 = 0x11 -TAG_INT32 = 0x12 -TAG_INT64 = 0x13 -TAG_BINARY = 0x20 -TAG_UTF8 = 0x21 -TAG_UTF16 = 0x22 -TAG_UTF32 = 0x23 -TAG_TUPLE = 0x30 +from . import tag TaggedObject = collections.namedtuple( 'TaggedObject', @@ -62,26 +47,26 @@ def _serialize_tuple(to): fmt = '!BI' - return struct.pack('!BI', TAG_TUPLE, len(payload)) + payload + return struct.pack('!BI', tag.TUPLE, len(payload)) + payload _TAGS_TO_SERIALIZERS = { - TAG_NULL: _make_tag_only_serializer(TAG_NULL, None), - TAG_TRUE: _make_tag_only_serializer(TAG_TRUE, True), - TAG_FALSE: _make_tag_only_serializer(TAG_FALSE, False), - TAG_UINT8: _make_struct_serializer('B'), - TAG_UINT16: _make_struct_serializer('H'), - TAG_UINT32: _make_struct_serializer('I'), - TAG_UINT64: _make_struct_serializer('Q'), - TAG_INT8: _make_struct_serializer('b'), - TAG_INT16: _make_struct_serializer('h'), - TAG_INT32: _make_struct_serializer('i'), - TAG_INT64: _make_struct_serializer('q'), - TAG_BINARY: _make_string_serializer(lambda s: s), - TAG_UTF8: _make_string_serializer(lambda s: s.encode('utf-8')), - TAG_UTF16: _make_string_serializer(lambda s: s.encode('utf-16')), - TAG_UTF32: _make_string_serializer(lambda s: s.encode('utf-32')), - TAG_TUPLE: _serialize_tuple, + tag.NULL: _make_tag_only_serializer(tag.NULL, None), + tag.TRUE: _make_tag_only_serializer(tag.TRUE, True), + tag.FALSE: _make_tag_only_serializer(tag.FALSE, False), + tag.UINT8: _make_struct_serializer('B'), + tag.UINT16: _make_struct_serializer('H'), + tag.UINT32: _make_struct_serializer('I'), + tag.UINT64: _make_struct_serializer('Q'), + tag.INT8: _make_struct_serializer('b'), + tag.INT16: _make_struct_serializer('h'), + tag.INT32: _make_struct_serializer('i'), + tag.INT64: _make_struct_serializer('q'), + tag.BINARY: _make_string_serializer(lambda s: s), + tag.UTF8: _make_string_serializer(lambda s: s.encode('utf-8')), + tag.UTF16: _make_string_serializer(lambda s: s.encode('utf-16')), + tag.UTF32: _make_string_serializer(lambda s: s.encode('utf-32')), + tag.TUPLE: _serialize_tuple, } def serialize(to): @@ -141,25 +126,25 @@ def _deserialize_tuple(b): total_bytes_read += partial_bytes_read instance.append(item) - return bytes_read, TaggedObject(tag = TAG_TUPLE, instance = tuple(instance)) + return bytes_read, TaggedObject(tag = tag.TUPLE, instance = tuple(instance)) _TAGS_TO_PARSERS = { - TAG_NULL: _make_tag_only_parser(TAG_NULL, None), - TAG_TRUE: _make_tag_only_parser(TAG_TRUE, True), - TAG_FALSE: _make_tag_only_parser(TAG_FALSE, False), - TAG_UINT8: _make_struct_deserializer(TAG_UINT8, 'B'), - TAG_UINT16: _make_struct_deserializer(TAG_UINT16, 'H'), - TAG_UINT32: _make_struct_deserializer(TAG_UINT32, 'I'), - TAG_UINT64: _make_struct_deserializer(TAG_UINT64, 'Q'), - TAG_INT8: _make_struct_deserializer(TAG_INT8, 'b'), - TAG_INT16: _make_struct_deserializer(TAG_INT16, 'h'), - TAG_INT32: _make_struct_deserializer(TAG_INT32, 'i'), - TAG_INT64: _make_struct_deserializer(TAG_INT64, 'q'), - TAG_BINARY: _make_string_deserializer(TAG_BINARY, lambda b: b), - TAG_UTF8: _make_string_deserializer(TAG_UTF8, lambda b: b.decode('utf-8')), - TAG_UTF16: _make_string_deserializer(TAG_UTF16, lambda b: b.decode('utf-16')), - TAG_UTF32: _make_string_deserializer(TAG_UTF32, lambda b: b.decode('utf-32')), - TAG_TUPLE: _deserialize_tuple, + tag.NULL: _make_tag_only_parser(tag.NULL, None), + tag.TRUE: _make_tag_only_parser(tag.TRUE, True), + tag.FALSE: _make_tag_only_parser(tag.FALSE, False), + tag.UINT8: _make_struct_deserializer(tag.UINT8, 'B'), + tag.UINT16: _make_struct_deserializer(tag.UINT16, 'H'), + tag.UINT32: _make_struct_deserializer(tag.UINT32, 'I'), + tag.UINT64: _make_struct_deserializer(tag.UINT64, 'Q'), + tag.INT8: _make_struct_deserializer(tag.INT8, 'b'), + tag.INT16: _make_struct_deserializer(tag.INT16, 'h'), + tag.INT32: _make_struct_deserializer(tag.INT32, 'i'), + tag.INT64: _make_struct_deserializer(tag.INT64, 'q'), + tag.BINARY: _make_string_deserializer(tag.BINARY, lambda b: b), + tag.UTF8: _make_string_deserializer(tag.UTF8, lambda b: b.decode('utf-8')), + tag.UTF16: _make_string_deserializer(tag.UTF16, lambda b: b.decode('utf-16')), + tag.UTF32: _make_string_deserializer(tag.UTF32, lambda b: b.decode('utf-32')), + tag.TUPLE: _deserialize_tuple, } def _deserialize_partial(b):