⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gatewaymote.java

📁 state strech routing protocl
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            short byte_arg = (short)Integer.parseInt(argv[2]);            command.set_type_data_data_args_byte_arg(byte_arg);                    } else if (cmd.equals("get_id")) {            command.set_type_data_type(S4_CMD_GET_ID);                    } else if (cmd.equals("freeze")) {            command.set_type_data_type(S4_CMD_FREEZE);        } else if (cmd.equals("resume")) {            command.set_type_data_type(S4_CMD_RESUME);        } else if (cmd.equals("reset")) {            command.set_type_data_type(S4_CMD_RESET);        } else if (cmd.equals("route_to")) {            // src_id route_to beacon dest_id            if (argv.length < 4) {                return null;            }            command.set_type_data_type(S4_CMD_APP_ROUTE_TO);            //short valid = 0;            /*              for (int i = 5; i < argv.length && i < 20; i++) {              //valid |= 1 << (i-5);              System.out.println("Setting coord "+i+" to "              +(short)Integer.parseInt(argv[i]));                            command.setElement_type_data_data_args_dest_coords_comps(              i-5,(short)Integer.parseInt(argv[i])              );              }*/            //changed by maoy            short closestBeacon = (short)Integer.parseInt(argv[2]);            System.out.println("Setting the closest beacon to "+ closestBeacon);            command.set_type_data_data_args_dest_closest_beacon(closestBeacon);            //command.set_type_data_data_args_dest_coords_valid(valid);            command.set_type_data_data_args_dest_addr((short)Integer.parseInt(argv[3]));            //command.set_type_data_data_args_dest_mode((byte)Integer.parseInt(argv[3]));        } else if (cmd.equals("adv_route_to")) {            //maoy: this is new            if (argv.length < 7) {                return null;            }            command.set_type_data_type(S4_CMD_APP_ADV_ROUTE_TO);            short closestBeacon = (short)Integer.parseInt(argv[2]);            System.out.println("Setting the closest beacon to "+ closestBeacon);            command.set_type_data_data_args_dest_closest_beacon(closestBeacon);            command.set_type_data_data_args_dest_addr((short)Integer.parseInt(argv[3]));            command.set_type_data_data_args_dest_init_delay((short)Integer.parseInt(argv[4]));            command.set_type_data_data_args_dest_n_packets((short)Integer.parseInt(argv[5]));            command.set_type_data_data_args_dest_interval((short)Integer.parseInt(argv[6]));        } else {            return null;        }        for (int trial=0;trial<TOTAL_TRIAL;trial++) {            try {                if (verbose) {                    System.err.print("Sending payload: ");                                    for (int i = 0; i < command.dataLength(); i++) {                        System.err.print(Integer.toHexString(command.dataGet()[i] & 0xff)+ " ");                    }                    //System.err.println(command.toString());                    System.err.println();                    //%%%%%%%%%%%%%%%55                }                mote.send(gateway_addr, command);                    synchronized (this) {                    if (response_received == false) {                        if (verbose)                            System.err.println("Waiting for response to command...");                        this.wait(TIMEOUT);                    }                    if (response_received == false) {                        System.out.println("Warning: Timed out waiting for response to command!");                        //saveSequenceNo(sequenceNo+1);                        //return null;                        if (cmd.equals("reset"))                            break;                                        }                }                if (response_received) {                    saveSequenceNo(sequenceNo+1);                    return cmd_result;                }                } catch(Exception e) {                e.printStackTrace();            }        }                System.out.println("ERROR: Timed out waiting for response to command!");        saveSequenceNo(sequenceNo+1);        return null;        }    public static void main(String[] argv) throws IOException{        String cmd;        short mote_id = 0;        int gateway_addr = 0;        short sequenceNo = 0;                if (argv.length < 3) {            //usage();            System.exit(-1);        }            //gateway_addr        try {            if (argv[0].startsWith("0x") || argv[0].startsWith("0X")) {                gateway_addr = (byte)Integer.parseInt(argv[0].substring(2), 16);            } else {                gateway_addr = (byte)Integer.parseInt(argv[0]);            }        } catch (NumberFormatException nfe) {                        System.exit(-1);        }        String [] args = new String[argv.length-1];        System.arraycopy(argv, 1, args, 0, argv.length-1);        GatewayMote m = new GatewayMote(gateway_addr, "cmd");            String [] test = "1 get_coords".split("\\s");        m.runCommand(test, true);        test = "500 get_coords".split("\\s");        m.runCommand(test, true);        S4CommandResponseMessage result = m.runCommand(args, false);        System.out.println(result);        System.exit(0);    }        public void messageReceived(int dest_addr, Message m) {        S4CommandResponseMessage cm = (S4CommandResponseMessage) m;        cmd_result = cm;        if (bPrintMsg) {            //System.out.println("Received message");            short cmd = cm.get_type_data_type();            if (cmd==S4_CMD_GET_FR_TIMER) {                System.out.println("timer: "+cm.get_type_data_data_args_short_arg());            }            if (cmd==S4_CMD_GET_RADIO_PWR) {                System.out.println("power: "+cm.get_type_data_data_args_byte_arg());            }            else if(cmd == S4_CMD_GET_INFO){                String s = "";                try {                    s += "  [type_data.data.args.info.coords.comps=";                    for (int i = 0; i < 8; i++) {                        s += "0x"+Long.toHexString(cm.getElement_type_data_data_args_info_coords_comps(i) & 0xff)+" ";                    }                    s += "]\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                try {                    s += "  [type_data.data.args.info.neighbors=0x"+Long.toHexString(cm.get_type_data_data_args_info_neighbors())+"]\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                try {                    s += "  [type_data.data.args.info.links=0x"+Long.toHexString(cm.get_type_data_data_args_info_links())+"]\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                try {                    s += "  [type_data.data.args.info.is_root_beacon=0x"+Long.toHexString(cm.get_type_data_data_args_info_is_root_beacon())+"]\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                try {                    s += "  [type_data.data.args.info.power=0x"+Long.toHexString(cm.get_type_data_data_args_info_power())+"]\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                try {                    s += "  [type_data.data.args.info.routing_table_size=0x"+Long.toHexString(cm.get_type_data_data_args_info_routing_table_size())+"]\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                System.out.println(s);            }            else if (cmd==S4_CMD_GET_COORDS) {                String s = "";                s += "  [type_data.data.args.coords.comps=";                for (int i = 0; i < 8; i++) {                    s += "0x"+Long.toHexString(cm.getElement_type_data_data_args_coords_comps(i) & 0xff)+" ";                }                s += "]\n";                System.out.println(s);            }            else if (cmd == S4_CMD_GET_ID ) {                String s = "";                try {                    s += "install_id=0x"                        +Long.toHexString(cm.get_type_data_data_args_ident_install_id())                        +"time: "                        +Long.toHexString(cm.get_type_data_data_args_ident_compile_time())                        +"\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                                //try {                //    s += "  [type_data.data.args.ident.compile_time=0x"+Long.toHexString(cm.get_type_data_data_args_ident_compile_time())+"]\n";                //} catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                System.out.println(s);                          }            else if (cmd == S4_CMD_GET_LINK_INFO ) {                String s = "";                try {                    s += "  [type_data.data.args.link_info.state=0x"+Long.toHexString(cm.get_type_data_data_args_link_info_state())+"]\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                try {                    s += "  [type_data.data.args.link_info.addr=0x"+Long.toHexString(cm.get_type_data_data_args_link_info_addr())+"]\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                try {                    s += "  [type_data.data.args.link_info.reverse_quality=0x"+Long.toHexString(cm.get_type_data_data_args_link_info_reverse_quality())+"]\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                try {                    s += "  [type_data.data.args.link_info.reverse_expiration=0x"+Long.toHexString(cm.get_type_data_data_args_link_info_reverse_expiration())+"]\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                try {                    s += "  [type_data.data.args.link_info.quality=0x"+Long.toHexString(cm.get_type_data_data_args_link_info_quality())+"]\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                try {                    s += "  [type_data.data.args.link_info.strength=0x"+Long.toHexString(cm.get_type_data_data_args_link_info_strength())+"]\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                try {                    s += "  [type_data.data.args.link_info.last_seqno=0x"+Long.toHexString(cm.get_type_data_data_args_link_info_last_seqno())+"]\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                try {                    s += "  [type_data.data.args.link_info.missed=";                    for (int i = 0; i < 3; i++) {                        s += "0x"+Long.toHexString(cm.getElement_type_data_data_args_link_info_missed(i) & 0xff)+" ";                    }                    s += "]\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                try {                    s += "  [type_data.data.args.link_info.received=";                    for (int i = 0; i < 3; i++) {                        s += "0x"+Long.toHexString(cm.getElement_type_data_data_args_link_info_received(i) & 0xff)+" ";                    }                    s += "]\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                try {                    s += "  [type_data.data.args.link_info.age=0x"+Long.toHexString(cm.get_type_data_data_args_link_info_age())+"]\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                try {                    s += "  [type_data.data.args.link_info.chances=0x"+Long.toHexString(cm.get_type_data_data_args_link_info_chances())+"]\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                System.out.println(s);            }            else if (cmd == S4_CMD_GET_ROUTING_TABLE) {                String s = "";                try {                    s += "  [type_data.data.args.routing_table.entry.valid=0x"+Long.toHexString(cm.get_type_data_data_args_routing_table_entry_valid())+"]\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                try {                    s += "  [type_data.data.args.routing_table.entry.dest=0x"+Long.toHexString(cm.get_type_data_data_args_routing_table_entry_dest())+"]\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                try {                    s += "  [type_data.data.args.routing_table.entry.parent=0x"+Long.toHexString(cm.get_type_data_data_args_routing_table_entry_parent())+"]\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                try {                    s += "  [type_data.data.args.routing_table.entry.last_seqno=0x"+Long.toHexString(cm.get_type_data_data_args_routing_table_entry_last_seqno())+"]\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                try {                    s += "  [type_data.data.args.routing_table.entry.hops=0x"+Long.toHexString(cm.get_type_data_data_args_routing_table_entry_hops())+"]\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                try {                    s += "  [type_data.data.args.routing_table.entry.scope=0x"+Long.toHexString(cm.get_type_data_data_args_routing_table_entry_scope())+"]\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                try {                    s += "  [type_data.data.args.routing_table.entry.updated=0x"+Long.toHexString(cm.get_type_data_data_args_routing_table_entry_updated())+"]\n";                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                System.out.println(s);            }            //added by Feng Wang on Sept. 28            //maoy: changed the format for easy parsing            else if (cmd == S4_CMD_GET_STATS) {                String s = "get_stats::: src:"+cm.get_type_data_cmd_addr();                try {                    s += ",sent_bv:"+cm.get_type_data_data_args_stats_sent_bv();                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                try {                    s += ",sent_dv:"+cm.get_type_data_data_args_stats_sent_dv();                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                try {                    s += ",sent_data:"+cm.get_type_data_data_args_stats_sent_data();                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                try {                    s += ",routing_state:"+cm.get_type_data_data_args_stats_routing_state();                } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }                System.out.println(s);                s += "\n";            }            else {                System.out.println("Received message: "+cm);                //System.err.println(cm);            }        }        synchronized (this) {            response_received = true;            this.notifyAll();        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -