def make_methods():
    method0 = """
    # {4}
    def {0}
      send_request(FUNCTION_{1}, [], '', {2}, '{3}')
    end
"""
    method1 = """
    # {6}
    def {0}({1})
      send_request(FUNCTION_{2}, [{1}], '{3}', {4}, '{5}')
    end
"""
    methods = ''

    for packet in device.get_packets('function'):
        name = packet.get_underscore_name()
        fid = packet.get_upper_case_name()
        parms = ruby_common.make_parameter_list(packet)
        doc = format_doc(packet)

        in_format, _ = make_format_list(packet, 'in')
        out_format, out_size = make_format_list(packet, 'out')

        if len(parms) > 0:
            methods += method1.format(name, parms, fid, in_format, out_size, out_format, doc)
        else:
            methods += method0.format(name, fid, out_size, out_format, doc)

    return methods
def make_methods(typ):
    methods = ''
    func_start = '.. rb:function:: '
    cls = device.get_category() + device.get_camel_case_name()
    for packet in device.get_packets('function'):
        if packet.get_doc()[0] != typ:
            continue
        name = packet.get_underscore_name()
        params = ruby_common.make_parameter_list(packet)
        if len(params) > 0:
            params = '(' + params + ')'
        pd = make_parameter_desc(packet, 'in')
        r = make_return_desc(packet)
        d = format_doc(packet)
        obj_desc = make_object_desc(packet)
        desc = '{0}{1}{2}'.format(pd, d, obj_desc)
        func = '{0}{1}#{2}{3}{5}\n{4}'.format(func_start,
                                              cls,
                                              name,
                                              params,
                                              desc,
                                              r)
        methods += func + '\n'

    return methods