def make_return_objects(): objs = '' obj = """ \tpublic class {0} {{ {1} \t\tpublic String toString() {{ \t\t\treturn "[" + {2} "]"; \t\t}} \t}} """ param = '\t\tpublic {0}{1} {2}{3};' for packet in device.get_packets('function'): if packet.has_prototype_in_device(): continue if len(packet.get_elements('out')) < 2: continue name = java_common.get_object_name(packet) params = [] tostr = [] for element in packet.get_elements(): typ = java_common.get_java_type(element[1]) ele_name = common.underscore_to_headless_camel_case(element[0]) if element[2] > 1 and element[1] != 'string': arr = '[]' new = ' = new {0}[{1}]'.format(typ, element[2]) to = '"{0} = " + Arrays.toString({0}) +'.format(ele_name) else: arr = '' new = '' to = '"{0} = " + {0} +'.format(ele_name) tostr.append(to) params.append(param.format(typ, arr, ele_name, new)) objs += obj.format(name, '\n'.join(params), ' ", " + '.join(tostr)) return objs
def make_methods(): methods = '' method = """ \t/** \t * {8} \t */ \tpublic {0} {1}({2}) {3} {{ \t\tByteBuffer bb = ipcon.createRequestPacket((byte){4}, FUNCTION_{5}, this); {6} {7} \t}} """ method_response = """\t\tbyte[] response = sendRequest(bb.array()); \t\tbb = ByteBuffer.wrap(response, 8, response.length - 8); \t\tbb.order(ByteOrder.LITTLE_ENDIAN); {1} \t\treturn {2};""" method_noresponse = """\t\tsendRequest(bb.array());""" loop = """\t\tfor(int i = 0; i < {0}; i++) {{ {1} \t\t}} """ string_loop = """\t\ttry {{ \t\t{0} \t\t\t}} catch(Exception e) {{ \t\t\t\tbb.put((byte)0); \t\t\t}}""" cls = device.get_camel_case_name() for packet in device.get_packets('function'): options = 0 ret = java_common.get_return_type(packet) name_lower = packet.get_headless_camel_case_name() parameter = java_common.make_parameter_list(packet) size = str(packet.get_request_length()) name_upper = packet.get_upper_case_name() doc = format_doc(packet) bbputs = '' bbput = '\t\tbb.put{0}({1}{2});' for element in packet.get_elements('in'): name = common.underscore_to_headless_camel_case(element[0]) if element[1] == 'bool': name = '({0} ? 1 : 0)'.format(name) cast = '' put_java_type = get_put_java_type(element[1]) if put_java_type != java_common.get_java_type(element[1]): cast = '({0})'.format(put_java_type) bbput_format = bbput.format(get_put_type(element[1]), cast, name) if element[2] > 1: if element[1] == 'string': bbput_format = bbput_format.replace(');', '.charAt(i));') bbput_format = string_loop.format(bbput_format) else: bbput_format = bbput_format.replace(');', '[i]);') bbput_format = loop.format(element[2], '\t' + bbput_format) bbputs += bbput_format + '\n' throw = 'throws TimeoutException, NotConnectedException' if len(packet.get_elements('out')) == 0: bbgets = '' bbret = '' elif len(packet.get_elements('out')) > 1: bbgets, bbret = make_bbgets(packet, True) obj_name = java_common.get_object_name(packet) obj = '\t\t{0} obj = new {0}();\n'.format(obj_name) bbgets = obj + bbgets bbret = 'obj' else: bbgets, bbret = make_bbgets(packet, False) if len(packet.get_elements('out')) == 0: response = method_noresponse.format(name_upper) else: response = method_response.format(name_upper, bbgets, bbret) methods += method.format(ret, name_lower, parameter, throw, size, name_upper, bbputs, response, doc) return methods