📄 sandbox-plugin1.cc
字号:
//// Copyright (c) 2006 Regents of the SIGNET lab, University of Padova.// All rights reserved.//// Redistribution and use in source and binary forms, with or without// modification, are permitted provided that the following conditions// are met:// 1. Redistributions of source code must retain the above copyright// notice, this list of conditions and the following disclaimer.// 2. Redistributions in binary form must reproduce the above copyright// notice, this list of conditions and the following disclaimer in the// documentation and/or other materials provided with the distribution.// 3. Neither the name of the University of Padova (SIGNET lab) nor the // names of its contributors may be used to endorse or promote products // derived from this software without specific prior written permission.//// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED // TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.//#include "sandbox-plugin1.h"#include "sandbox-plugin1-clmsg.h"#include "node-core.h"extern ClMessage_t SANDBOXMSG;ClMessage_t SANDBOXPLG1MSG = 0; // discover cl-msgClMessage_t SANDBOXPLG1MSGS = 0; // set size cl-msg/* ====================================================================== TCL Hooks for the simulator ====================================================================== */static class SandboxPlugIn1Class : public TclClass {public: SandboxPlugIn1Class() : TclClass("SandboxPlugIn1") {} TclObject* create(int, const char*const*) { return (new SandboxPlugIn1()); }} class_sandboxplugin1;SandboxPlugIn1::SandboxPlugIn1(){}SandboxPlugIn1::~SandboxPlugIn1(){} // TCL command interpreterint SandboxPlugIn1::command(int argc, const char*const* argv){ Tcl& tcl = Tcl::instance(); if (argc==2) { if(strcasecmp(argv[1], "discover") == 0) { // have to send a cl-message to discover the send-module ClMessage *c = new ClMsgSandboxPlg1Disc(DEFAULT_CLMSG_VERBOSITY, BROADCAST, getId(), CLBROADCASTADDR); printf("PLUG-IN1: send a discovery message\n"); // send cross-layer message broadcast to query the modules sendCl(c, 0); return TCL_OK; } } return PlugIn::command(argc, argv);}int SandboxPlugIn1::crLayCommand(ClMessage* m){ if (m->type()==SANDBOXPLG1MSG) { // this is the answer from module-send -> set new packet size ClMessage *c = new ClMsgSandboxPlg1Set(DEFAULT_CLMSG_VERBOSITY, UNICAST, getId(), m->getSource(), 50000); printf("SandboxPlugIn1::crLayCommand, ModuleSend %d answer to discovery -> set new packet size(%d)\n", m->getSource(), ((ClMsgSandboxPlg1Set*)c)->getSize()); sendCl(c, 0); delete m; return 1; } // unrecognized cl-msg -> return to Plugin::crLayCommand! if (debug_ > 5) printf("SandboxplugIn1, rx an unknown cl-msg -> drop it (type = %i SANDBOXPLG1MSG=%i)\n",m->type(),SANDBOXPLG1MSG); return PlugIn::crLayCommand(m);}void SandboxPlugIn1::setClMsgType(ClMessage_t type){ clMsgType_ = type;}ClMessage_t SandboxPlugIn1::getClMsgType(){ return(clMsgType_);}extern "C" int SandboxF_Init(){ /* Put here all the commands which must be execute when the library is loaded (i.e. TCL script execution) Remember to ruturn 0 if all is OK, otherwise return 1 */ return 0;}extern "C" int CygsandboxF_Init(){ SandboxF_Init();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -