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
Example #2
0
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