Example #1
0
def create_event(event_name, format, args):
    global gen_path
    global package
    global java_event_template

    param_read = {
     '1' : 'return Util.readByte(data, %u);',
     'J' : 'return Util.readByte(data, %u);',
     '2' : 'return Util.readBt16(data, %u);',
     'H' : 'return Util.readBt16(data, %u);',
     'L' : 'return Util.readBt16(data, %u);',
     '3' : 'return Util.readBt24(data, %u);',
     '4' : 'return Util.readBt32(data, %u);',
     'B' : 'return Util.readBdAddr(data, %u);',
     'X' : 'return Util.readGattService(data, %u);',
     'Y' : 'return Util.readGattCharacteristic(data, %u);',
     'Z' : 'return Util.readGattCharacteristicDescriptor(data, %u);',
     'T' : 'int offset = %u; \n        return Util.getText(data, offset, getPayloadLen()-offset);',
     'N' : 'return Util.getText(data, %u, 248);',
     'D' : 'Util.storeBytes(data, %u, 8);',
     'Q' : 'Util.storeBytes(data, %u, 32);',
     # 'E' : 'Util.storeBytes(data, %u, 240);',
     # 'P' : 'Util.storeBytes(data, %u, 16);',
     # 'A' : 'Util.storeBytes(data, %u, 31);',
     # 'S' : 'Util.storeBytes(data, %u);'
     }

    gen_event_path = '%s/event' % gen_path
    outfile = '%s/%s.java' % (gen_event_path, event_name)
    with open(outfile, 'wt') as fout:
        offset = 2
        getters = ''
        length_name = ''
        for f, arg in zip(format, args):
            # just remember name
            if f in ['L','J']:
                length_name = parser.camel_case(arg)
            if f == 'R':    
                # remaining data
                access = java_event_getter_remaining_data.format(offset)
                size = 0
            elif f == 'V':
                access = java_event_getter_data.format(length_name, offset)
                size = 0
            elif f in ['D', 'Q']:
                size = size_for_type(f)
                access = java_event_getter_data_fixed.format(size, offset)
            else: 
                access = param_read[f] % offset
                size = size_for_type(f)
            getters += java_event_getter.format(java_type_for_btstack_type(f), parser.camel_case(arg), access)
            offset += size
        to_string_args = ''
        for arg in args:
            to_string_args += '        t.append(", %s = ");\n' % arg
            to_string_args += '        t.append(get%s());\n' % parser.camel_case(arg)
        to_string_method = java_event_to_string.format(event_name, to_string_args)
        fout.write(java_event_template.format(package, event_name, getters, to_string_method))
Example #2
0
def create_event_factory(events, subevents, defines):
    global gen_path
    global package
    global java_event_factory_event
    global java_event_factory_template

    outfile = '%s/EventFactory.java' % gen_path

    cases = ''
    for event_type, event_name, format, args in events:
        event_name = parser.camel_case(event_name)
        cases += java_event_factory_event.format(event_type, event_name)
    subcases = ''
    for event_type, event_name, format, args in subevents:
        if not event_supported(event_name):
            continue
        class_name = class_name_for_event(event_name)
        print class_name
        subcases += java_event_factory_subevent.format(event_type, class_name)

    with open(outfile, 'wt') as fout:
        defines_text = java_defines_string(defines)
        fout.write(
            java_event_factory_template.format(package, defines_text, cases,
                                               subcases))
Example #3
0
def create_event_factory(events, subevents, defines):
    global gen_path
    global event_factory_event
    global event_factory_template

    outfile = '%s/event_factory.py' % gen_path

    cases = ''
    for event_type, event_name, format, args in events:
        event_name = parser.camel_case(event_name)
        cases += event_factory_event.format(event_type, event_name)
    subcases = ''
    for event_type, event_name, format, args in subevents:
        if not event_supported(event_name):
            continue
        class_name = class_name_for_event(event_name)
        subcases += event_factory_subevent.format(event_type, class_name)

    with open(outfile, 'wt') as fout:
        # header
        fout.write(event_header)
        # event classes
        create_events(fout, events)
        create_events(fout, subevents)
        #
        defines_text = ''
        # python_defines_string(,defines)
        fout.write(event_factory_template.format(defines_text, cases,
                                                 subcases))
Example #4
0
def create_event_factory(events, subevents, defines):
    global gen_path
    global package
    global java_event_factory_event
    global java_event_factory_template

    outfile = '%s/EventFactory.java' % gen_path

    cases = ''
    for event_type, event_name, format, args in events:
        event_name = parser.camel_case(event_name)
        cases += java_event_factory_event.format(event_type, event_name)
    subcases = ''
    for event_type, event_name, format, args in subevents:
        if not event_supported(event_name):
            continue
        class_name = class_name_for_event(event_name)
        print class_name
        subcases += java_event_factory_subevent.format(event_type, class_name)

    with open(outfile, 'wt') as fout:
        defines_text = java_defines_string(defines)
        fout.write(java_event_factory_template.format(package, defines_text, cases, subcases))
Example #5
0
def class_name_for_event(event_name):
    return parser.camel_case(event_name.replace('SUBEVENT', 'EVENT'))
Example #6
0
def create_event(event_name, format, args):
    global gen_path
    global package
    global java_event_template

    param_read = {
        '1': 'return Util.readByte(data, %u);',
        'J': 'return Util.readByte(data, %u);',
        '2': 'return Util.readBt16(data, %u);',
        'H': 'return Util.readBt16(data, %u);',
        'L': 'return Util.readBt16(data, %u);',
        '3': 'return Util.readBt24(data, %u);',
        '4': 'return Util.readBt32(data, %u);',
        'B': 'return Util.readBdAddr(data, %u);',
        'X': 'return Util.readGattService(data, %u);',
        'Y': 'return Util.readGattCharacteristic(data, %u);',
        'Z': 'return Util.readGattCharacteristicDescriptor(data, %u);',
        'T':
        'int offset = %u; \n        return Util.getText(data, offset, getPayloadLen()-offset);',
        'N': 'return Util.getText(data, %u, 248);',
        'D': 'Util.storeBytes(data, %u, 8);',
        'Q': 'Util.storeBytes(data, %u, 32);',
        # 'E' : 'Util.storeBytes(data, %u, 240);',
        # 'P' : 'Util.storeBytes(data, %u, 16);',
        # 'A' : 'Util.storeBytes(data, %u, 31);',
        # 'S' : 'Util.storeBytes(data, %u);'
    }

    gen_event_path = '%s/event' % gen_path
    outfile = '%s/%s.java' % (gen_event_path, event_name)
    with open(outfile, 'wt') as fout:
        offset = 2
        getters = ''
        length_name = ''
        for f, arg in zip(format, args):
            # just remember name
            if f in ['L', 'J']:
                length_name = parser.camel_case(arg)
            if f == 'R':
                # remaining data
                access = java_event_getter_remaining_data.format(offset)
                size = 0
            elif f == 'V':
                access = java_event_getter_data.format(length_name, offset)
                size = 0
            elif f in ['D', 'Q']:
                size = size_for_type(f)
                access = java_event_getter_data_fixed.format(size, offset)
            else:
                access = param_read[f] % offset
                size = size_for_type(f)
            getters += java_event_getter.format(java_type_for_btstack_type(f),
                                                parser.camel_case(arg), access)
            offset += size
        to_string_args = ''
        for arg in args:
            to_string_args += '        t.append(", %s = ");\n' % arg
            to_string_args += '        t.append(get%s());\n' % parser.camel_case(
                arg)
        to_string_method = java_event_to_string.format(event_name,
                                                       to_string_args)
        fout.write(
            java_event_template.format(package, event_name, getters,
                                       to_string_method))
Example #7
0
def class_name_for_event(event_name):
    return parser.camel_case(event_name.replace('SUBEVENT','EVENT'))