def make_methods(typ): version_changed = { 'en': """ .. versionchanged:: 1.1.0~(Bindings) Result is returned. Previously it was passed as ``out`` parameter. """, 'de': """ .. versionchanged:: 1.1.0~(Bindings) Das Ergebnis wird zurückgegeben. In vorherigen Versionen wurde es als ``out`` Parameter übergeben. """ } methods = '' func_start = '.. csharp:function:: ' cls = device.get_category() + device.get_camel_case_name() for packet in device.get_packets('function'): if packet.get_doc()[0] != typ: continue signature = csharp_common.make_method_signature(packet, True, device, True) desc = format_doc(packet, 1) func = '{0}{1}\n{2}'.format(func_start, signature, desc) methods += func + '\n' if len(packet.get_elements('out')) == 1: methods += common.select_lang(version_changed) + '\n' return methods
def make_methods(typ): method_version = { 'en': """ .. csharp:function:: public void {0}::GetVersion(out string name, out byte[] firmwareVersion, out byte[] bindingVersion) Returns the name (including the hardware version), the firmware version and the binding version of the device. The firmware and binding versions are given in arrays of size 3 with the syntax [major, minor, revision]. """, 'de': """ .. csharp:function:: public void {0}::GetVersion(out string name, out byte[] firmwareVersion, out byte[] bindingVersion) Gibt den Namen (inklusive Hardwareversion), die Firmwareversion und die Bindingsversion des Gerätes zurück. Die Firmware- und Bindingsversionen werden als Array der Größe 3 mit der Syntax [Major, Minor, Revision] zurückgegeben. """ } version_changed = { 'en': """ .. versionchanged:: 1.1.0 Result is returned. Previously it was passed as ``out`` parameter. """, 'de': """ .. versionchanged:: 1.1.0 Das Ergebnis wird zurückgegeben. In vorherigen Versionen wurde es als ``out`` Parameter übergeben. """ } methods = '' func_start = '.. csharp:function:: ' cls = device.get_category() + device.get_camel_case_name() for packet in device.get_packets('function'): if packet.get_doc()[0] != typ: continue signature = csharp_common.make_method_signature(packet, True, device) desc = fix_links(common.shift_right(packet.get_doc()[1][lang], 1)) func = '{0}{1}\n{2}'.format(func_start, signature, desc) methods += func + '\n' if len(packet.get_elements('out')) == 1: methods += version_changed[lang] + '\n' if typ == 'af': methods += method_version[lang].format(cls) return methods
def make_methods(typ): method_version = { 'en': """ .. csharp:function:: public short[] {0}::GetVersion() Returns API version [major, minor, revision] used for this device. """, 'de': """ .. csharp:function:: public short[] {0}::GetVersion() Gibt die API Version [major, minor, revision] die benutzt wird zurück. """ } version_changed = { 'en': """ .. versionchanged:: 1.1.0~(Bindings) Result is returned. Previously it was passed as ``out`` parameter. """, 'de': """ .. versionchanged:: 1.1.0~(Bindings) Das Ergebnis wird zurückgegeben. In vorherigen Versionen wurde es als ``out`` Parameter übergeben. """ } methods = '' func_start = '.. csharp:function:: ' cls = device.get_category() + device.get_camel_case_name() for packet in device.get_packets('function'): if packet.get_doc()[0] != typ: continue signature = csharp_common.make_method_signature(packet, True, device) desc = format_doc(packet, 1) func = '{0}{1}\n{2}'.format(func_start, signature, desc) methods += func + '\n' if len(packet.get_elements('out')) == 1: methods += common.select_lang(version_changed) + '\n' if typ == 'af': methods += common.select_lang(method_version).format(cls) return methods
def make_methods(): methods = '' method = """ \t\t/// <summary> \t\t/// {5} \t\t/// </summary> \t\t{0} \t\t{{ \t\t\tbyte[] data_ = MakePacketHeader({1}, FUNCTION_{2}); {3} {4} \t\t}} """ method_oneway = """\t\t\tif(responseExpected[FUNCTION_{0}] == ResponseExpectedFlag.ALWAYS_TRUE || responseExpected[FUNCTION_{0}] == ResponseExpectedFlag.TRUE) \t\t\t{{ \t\t\t\tbyte[] response; \t\t\t\tSendRequestExpectResponse(data_, FUNCTION_{0}, out response); \t\t\t}} \t\t\telse \t\t\t{{ \t\t\t\tSendRequestNoResponse(data_); \t\t\t}}""" method_response = """\t\t\tbyte[] response; \t\t\tSendRequestExpectResponse(data_, FUNCTION_{0}, out response); {1}""" cls = device.get_camel_case_name() for packet in device.get_packets('function'): ret_count = len(packet.get_elements('out')) size = str(get_data_size(packet)) name_upper = packet.get_upper_case_name() doc = format_doc(packet) write_convs = '' write_conv = '\t\t\tLEConverter.To(({2}){0}, {1}, data_);\n' write_conv_length = '\t\t\tLEConverter.To(({3}){0}, {1}, {2}, data_);\n' pos = 8 for element in packet.get_elements('in'): wname = common.underscore_to_headless_camel_case(element[0]) csharp_type = csharp_common.get_csharp_type_for_to_convert(element) if element[2] > 1: write_convs += write_conv_length.format(wname, pos, element[2], csharp_type) else: write_convs += write_conv.format(wname, pos, csharp_type) pos += common.get_element_size(element) method_tail = '' read_convs = '' read_conv = '\n\t\t\t{0} = LEConverter.{1}({2}, response{3});' pos = 8 for element in packet.get_elements('out'): aname = common.underscore_to_headless_camel_case(element[0]) from_type = get_from_type(element) length = '' if element[2] > 1: length = ', ' + str(element[2]) if ret_count == 1: read_convs = '\n\t\t\treturn LEConverter.{0}({1}, response{2});'.format(from_type, pos, length) else: read_convs += read_conv.format(aname, from_type, pos, length) pos += common.get_element_size(element) if ret_count > 0: method_tail = method_response.format(name_upper, read_convs) else: method_tail = method_oneway.format(name_upper) signature = csharp_common.make_method_signature(packet) methods += method.format(signature, size, name_upper, write_convs, method_tail, doc) return methods
def make_methods(): methods = '' method = """ \t\t/// <summary> \t\t/// {5} \t\t/// </summary> \t\t{0} \t\t{{ \t\t\tbyte[] data_ = new byte[{1}]; \t\t\tLEConverter.To(stackID, 0, data_); \t\t\tLEConverter.To(FUNCTION_{2}, 1, data_); \t\t\tLEConverter.To((ushort){1}, 2, data_); {3} {4} \t\t}} """ method_oneway = "\t\t\tSendRequestNoResponse(data_);" method_response = """\t\t\tbyte[] response; \t\t\tSendRequestExpectResponse(data_, FUNCTION_{0}, out response); {1}""" cls = device.get_camel_case_name() for packet in device.get_packets('function'): ret_count = len(packet.get_elements('out')) size = str(get_data_size(packet)) name_upper = packet.get_upper_case_name() doc = '\n\t\t/// '.join(fix_links(packet.get_doc()[1][lang]).strip().split('\n')) write_convs = '' write_conv = '\t\t\tLEConverter.To({0}, {1}, data_);\n' write_conv_length = '\t\t\tLEConverter.To({0}, {1}, {2}, data_);\n' pos = 4 for element in packet.get_elements('in'): wname = common.underscore_to_headless_camel_case(element[0]) if element[2] > 1: write_convs += write_conv_length.format(wname, pos, element[2]) else: write_convs += write_conv.format(wname, pos) pos += common.get_element_size(element) method_tail = '' if ret_count > 0: read_convs = '' read_conv = '\n\t\t\t{0} = LEConverter.{1}({2}, response{3});' pos = 4 for element in packet.get_elements('out'): aname = common.underscore_to_headless_camel_case(element[0]) from_type = get_from_type(element) length = '' if element[2] > 1: length = ', ' + str(element[2]) if ret_count == 1: read_convs = '\n\t\t\treturn LEConverter.{0}({1}, response{2});'.format(from_type, pos, length) else: read_convs += read_conv.format(aname, from_type, pos, length) pos += common.get_element_size(element) method_tail = method_response.format(name_upper, read_convs) else: method_tail = method_oneway signature = csharp_common.make_method_signature(packet) methods += method.format(signature, size, name_upper, write_convs, method_tail, doc) return methods