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))
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))
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))
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))
def class_name_for_event(event_name): return parser.camel_case(event_name.replace('SUBEVENT', 'EVENT'))
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))
def class_name_for_event(event_name): return parser.camel_case(event_name.replace('SUBEVENT','EVENT'))