tr69 错误调试

1. main/informer.c

   handleSoapMessageCallBack()

  {

        handleSoapMessage();

  }

 

2. handleSoapMessage()

   {

        status = parseGeneric(NULL, soapmsg, len, &parseReq);     

       ....

       if ( runRPC() == eRPCRunFail)

   }

 

3. runRPC()       include in SOAPParser/RPCState.c

     ....

     case: rpcGetParameterValues:

               doGetParameterValues(rpcAction);

              breadk;

   ....

 

4. doGetParameterValues 

   {

   ...

   const char *pp = pi ->name;

   n = findGWParameter(pp);      // *pp = Device.DeviceConfig.ConfigFIle

}

5. findGWParameter(const char * pstr)

   {

        nodeDepth = 0;

       instanceDepth = 0;

      return findParamter(rootDevice, pstr);

 

6. 

static findParameter(TRxObjNode *node, const char *pstr)

{

    const char *e;

    int lth;

    TRxObjNode    *n = node;

    e = strchr(pstr, '.');

    if ( (n = searchNode(node, pstr, lth)))

    {

        if ( e && strlen(e) > 1)

        {

             return findParameter(n->objDetail, e + 1);

        }

        else

       {

            return n;

       }

       return NULL;

    }  

}

   

 

 

 

 

 

 

posted @ 2013-07-01 14:03  安心种田  阅读(347)  评论(0编辑  收藏  举报