Hi Jana,
I suggest you first check whether the bound variables work with AODV in
the first place.
If they do not work then you will need to get a reference to the AODV
agent in .tcl simulation script. You can start looking in tcl/lib
P.
Jana Henniger wrote:
> I’m new to ns-2 and C++ and need help concerning OTCL-Linkage.
> I’ve created a new class ContextAgent which has AODV as friendclass.
> ContextAgent has two public variables that are bound to OTCL using the
> bind()-function (as it is used in the Example ex-linkage.cc from the tutorial
> “ns by example”). That works, as far as I could see.
>
> My problem is, how can I call on the variables from the AODV-function
> sendRequest()?
> Since the ContextAgent is created in the simulation script, I don’t know the
> name of it to assign it to an object of the type ContextAgent.
>
> I send parts of my source code for better understanding. Please help!!
>
> *************************************************
>
> class ContextAgent : public Agent{
>
> friend class AODV;
>
> public:
> ContextAgent();
> int rq_context;
> int rt_context;
> }
>
> //LinkObject
> static class ContextAgentClass : public TclClass {
> public:
> ContextAgentClass() : TclClass("Agent/Context"){}
> TclObject* create(int, const char*const*) {
> return (new ContextAgent());
> }
> } class_context_agent;
>
> //Constructor
> ContextAgent::ContextAgent() : Agent(PT_AODV) {
> bind("rq_cxt_otcl", &rq_context);
> bind("rt_cxt_otcl", &rt_context);
> };
>
> *************************************
>
> class AODV: public Agent {
> ...
> private:
> ContextAgent *ContextAgentObject;
> ...
> };
>
> **************************************
>
> // call in AODV-function
> void
> AODV::sendRequest(nsaddr_t dst) {
> ...
> ContextAgentObject = ????;
> rq->rq_cxt = ContextAgentObject->rq_context;
> ...
> }
>
> **************************************
>
> # tcl-code
> ...
> set context1 [new Agent/Context]
> $ns_ attach-agent $node_(1) $context1
> $context1 set rq_cxt_otcl 0
> $context1 set rt_cxt_otcl 5
> ...
>
>
>