示例#1
0
void KdePasteProtocol::pasteFinished()
{
    if (m_pasteReply->error()) {
        qWarning("%s protocol error: %s", qPrintable(protocolName()),qPrintable(m_pasteReply->errorString()));
    } else {
        // Parse id from '<result><id>143204</id><hash></hash></result>'
        // No useful error reports have been observed.
        const QString id = parseElement(m_pasteReply, QLatin1String("id"));
        if (id.isEmpty()) {
            qWarning("%s protocol error: Could not send entry.", qPrintable(protocolName()));
        } else {
            emit pasteDone(QLatin1String(hostUrlC) + id);
        }
    }

    m_pasteReply->deleteLater();
    m_pasteReply = 0;
}
示例#2
0
void statsCallback (TMR_Reader *reader, const TMR_Reader_StatsValues* stats, void *cookie)
{
  uint8_t i = 0;

  /** Each  field should be validated before extracting the value */
  if (TMR_READER_STATS_FLAG_CONNECTED_ANTENNAS & stats->valid)
  {
    printf("Antenna Connection Status\n");
    for (i = 0; i < stats->connectedAntennas.len; i += 2)
    {
      printf("Antenna %d |%s\n", stats->connectedAntennas.list[i],
          stats->connectedAntennas.list[i + 1] ? "connected":"Disconnected");
    }
  }

  if (TMR_READER_STATS_FLAG_NOISE_FLOOR_SEARCH_RX_TX_WITH_TX_ON & stats->valid)
  {
    printf("Noise Floor With Tx On\n");
    for (i = 0; i < stats->perAntenna.len; i++)
    {
      printf("Antenna %d | %d db\n", stats->perAntenna.list[i].antenna, stats->perAntenna.list[i].noiseFloor);
    }
  }

  if (TMR_READER_STATS_FLAG_RF_ON_TIME & stats->valid)
  {
    printf("RF On Time\n");
    for (i = 0; i < stats->perAntenna.len; i++)
    {
      printf("Antenna %d | %d ms\n", stats->perAntenna.list[i].antenna, stats->perAntenna.list[i].rfOnTime);
    }
  }

  if (TMR_READER_STATS_FLAG_FREQUENCY & stats->valid)
  {
    printf("Frequency %d(khz)\n", stats->frequency);
  }
  if (TMR_READER_STATS_FLAG_TEMPERATURE & stats->valid)
  {
    printf("Temperature %d(C)\n", stats->temperature);
  }
  if (TMR_READER_STATS_FLAG_PROTOCOL & stats->valid)
  {
    printf("Protocol %s\n", protocolName(stats->protocol));
  }
  if (TMR_READER_STATS_FLAG_ANTENNA_PORTS & stats->valid)
  {
    printf("currentAntenna %d\n", stats->antenna);
  }
}
示例#3
0
int main(int argc, char *argv[])
{

#ifndef TMR_ENABLE_BACKGROUND_READS
  errx(1, "This sample requires background read functionality.\n"
          "Please enable TMR_ENABLE_BACKGROUND_READS in tm_config.h\n"
          "to run this codelet\n");
  return -1;
#else

  TMR_Reader r, *rp;
  TMR_Status ret;
  TMR_Region region;
#if USE_TRANSPORT_LISTENER
  TMR_TransportListenerBlock tb;
#endif
  TMR_ReadListenerBlock rlb;
  TMR_ReadExceptionListenerBlock reb;
  TMR_StatsListenerBlock slb;
 
  if (argc < 2)
  {
    errx(1, "Please provide reader URL, such as:\n"
        "tmr:///com4\n"
        "tmr://my-reader.example.com\n");
  }

  rp = &r;
  ret = TMR_create(rp, argv[1]);
  checkerr(rp, ret, 1, "creating reader");

#if USE_TRANSPORT_LISTENER

  if (TMR_READER_TYPE_SERIAL == rp->readerType)
  {
    tb.listener = serialPrinter;
  }
  else
  {
    tb.listener = stringPrinter;
  }
  tb.cookie = stdout;

  TMR_addTransportListener(rp, &tb);
#endif

  ret = TMR_connect(rp);
  checkerr(rp, ret, 1, "connecting reader");

  region = TMR_REGION_NONE;
  ret = TMR_paramGet(rp, TMR_PARAM_REGION_ID, &region);
  checkerr(rp, ret, 1, "getting region");

  if (TMR_REGION_NONE == region)
  {
    TMR_RegionList regions;
    TMR_Region _regionStore[32];
    regions.list = _regionStore;
    regions.max = sizeof(_regionStore)/sizeof(_regionStore[0]);
    regions.len = 0;

    ret = TMR_paramGet(rp, TMR_PARAM_REGION_SUPPORTEDREGIONS, &regions);
    checkerr(rp, ret, __LINE__, "getting supported regions");

    if (regions.len < 1)
    {
      checkerr(rp, TMR_ERROR_INVALID_REGION, __LINE__, "Reader doesn't supportany regions");
    }
    region = regions.list[0];
    ret = TMR_paramSet(rp, TMR_PARAM_REGION_ID, &region);
    checkerr(rp, ret, 1, "setting region");  
  }

  {
    /* Code to get the reader stats after the sync read */
    TMR_Reader_StatsValues stats;
    TMR_Reader_StatsFlag setFlag;
    TMR_PortValueList value;
    TMR_PortValue valueList[64];
    int i, j;

    printf("\nReader stats after the sync read\n");

    /** request for the statics fields of your interest, before search */
    setFlag = TMR_READER_STATS_FLAG_ALL;
    value.max = sizeof(valueList)/sizeof(valueList[0]);
    value.list = valueList;

    ret = TMR_paramSet(rp, TMR_PARAM_READER_STATS_ENABLE, &setFlag);
    checkerr(rp, ret, 1, "setting the  fields");

    for (j = 1; j < 4; j++)
    {
      /**
       * perform three iterations to see that reader stats are
       * resetting after each search operation.
       **/ 
      printf("\nIteration:%d\n", j);
      /**
       * performing the search operation. for 1 sec,
       * Individual search will reset the reader stats, before doing the search
       */
      printf("Performing the search operation. for 1 sec\n");
      ret = TMR_read(rp, 1000, NULL);
      checkerr(rp, ret, 1, "reading tags");

      /** Initialize the reader statics variable to default values */
      TMR_STATS_init(&stats);

      /* Search is completed. Get the reader stats */
      printf("Search is completed. Get the reader stats\n");
      ret = TMR_paramGet(rp, TMR_PARAM_READER_STATS, &stats);
      checkerr(rp, ret, 1, "getting the reader statistics");

      /** Each  field should be validated before extracting the value */
      if (TMR_READER_STATS_FLAG_CONNECTED_ANTENNAS & stats.valid)
      {
        printf("Antenna Connection Status\n");
        for (i = 0; i < stats.connectedAntennas.len; i += 2)
        {
          printf("Antenna %d |%s\n", stats.connectedAntennas.list[i],
              stats.connectedAntennas.list[i + 1] ? "connected":"Disconnected");
        }
      }

      /* Get the antenna return loss value, this parameter is not the part of reader stats */
      ret = TMR_paramGet(rp, TMR_PARAM_ANTENNA_RETURNLOSS, &value);
      checkerr(rp, ret, 1, "getting the antenna return loss");
      printf("Antenna Return Loss\n");
      for (i = 0; i < value.len && i < value.max; i++)
      {
        printf("Antenna %d | %d \n", value.list[i].port, value.list[i].value);
      }

      if (TMR_READER_STATS_FLAG_NOISE_FLOOR_SEARCH_RX_TX_WITH_TX_ON & stats.valid)
      {
        printf("Noise Floor With Tx On\n");
        for (i = 0; i < stats.perAntenna.len; i++)
        {
          printf("Antenna %d | %d db\n", stats.perAntenna.list[i].antenna, stats.perAntenna.list[i].noiseFloor);
        }
      }

      if (TMR_READER_STATS_FLAG_RF_ON_TIME & stats.valid)
      {
        printf("RF On Time\n");
        for (i = 0; i < stats.perAntenna.len; i++)
        {
          printf("Antenna %d | %d ms\n", stats.perAntenna.list[i].antenna, stats.perAntenna.list[i].rfOnTime);
        }
      }

      if (TMR_READER_STATS_FLAG_FREQUENCY & stats.valid)
      {
        printf("Frequency %d(khz)\n", stats.frequency);
      }
      if (TMR_READER_STATS_FLAG_TEMPERATURE & stats.valid)
      {
        printf("Temperature %d(C)\n", stats.temperature);
      }
      if (TMR_READER_STATS_FLAG_PROTOCOL & stats.valid)
      {
        printf("Protocol %s\n", protocolName(stats.protocol));
      }
      if (TMR_READER_STATS_FLAG_ANTENNA_PORTS & stats.valid)
      {
        printf("currentAntenna %d\n", stats.antenna);
      }
    }
  }

  {
    /* Code to get the reader stats after the async read */
    TMR_Reader_StatsFlag setFlag = TMR_READER_STATS_FLAG_ALL;

    rlb.listener = callback;
    rlb.cookie = NULL;

    reb.listener = exceptionCallback;
    reb.cookie = NULL;

    slb.listener = statsCallback;
    slb.cookie = NULL;

    ret = TMR_addReadListener(rp, &rlb);
    checkerr(rp, ret, 1, "adding read listener");

    ret = TMR_addReadExceptionListener(rp, &reb);
    checkerr(rp, ret, 1, "adding exception listener");

    ret = TMR_addStatsListener(rp, &slb);
    checkerr(rp, ret, 1, "adding the stats listener");

    printf("\nReader stats after the async read \n");

    /** request for the statics fields of your interest, before search */
    ret = TMR_paramSet(rp, TMR_PARAM_READER_STATS_ENABLE, &setFlag);
    checkerr(rp, ret, 1, "setting the  fields");

    printf("Initiating the search operation. for 1 sec and the listener will provide the reader stats\n");

    ret = TMR_startReading(rp);
    checkerr(rp, ret, 1, "starting reading");

#ifndef WIN32
    sleep(1);
#else
    Sleep(1000);
#endif

    ret = TMR_stopReading(rp);
    checkerr(rp, ret, 1, "stopping reading");
  }

  TMR_destroy(rp);
  return 0;
#endif /* TMR_ENABLE_BACKGROUND_READS */
}
示例#4
0
std::list<CProtocols*>* WINAPI
CNdiskd::GetProtocolList(std::list<CProtocols*> *protocolList)
{
    ULONG cbBytesReturned;
    ULONG64 Address;

    // Start parsing ndisProtocolList
    Address = GetExpression("ndis!ndisProtocolList");

    if (Address)
    {
        // Obtain the first protocol from the list
        cbBytesReturned = 0;
        Address = utils::getPointerFromAddress(Address, &cbBytesReturned);

        if (cbBytesReturned > 0)
        {

            DbgPrint("DEBUG: %s:%d:%s Ptr to first protocol (NDIS_PROTOCOL_BLOCK) in the list: %p\n", __FILE__, __LINE__, __FUNCTION__, Address);
            ExtRemoteTyped ndisProtocolList("(ndis!_NDIS_PROTOCOL_BLOCK*)@$extin", Address);

            // Enumerating all protocols, starting from first protocol
            do{
                CProtocols *protocol = new CProtocols();
                ULONG64 addrName = utils::getNdisFieldData(Address, ndisProtocolList, "Name");
                ULONG64 addrNextProtocol = utils::getNdisFieldData(Address, ndisProtocolList, "NextProtocol");

                // Set protocol's information
                ExtRemoteTyped protocolName("(nt!_UNICODE_STRING*)@$extin", addrName);

                // Get current protocol name's heap
                PWSTR Name = protocol->GetProtocolName();

                // Save protocol name
                utils::getUnicodeString(protocolName, Name, MAX_PROTOCOL_NAME*sizeof(WCHAR));
                protocol->SetProtocolName(Name);

                // Save protocol version
                protocol->m_majorversion = (UCHAR)utils::getNdisFieldData(0, ndisProtocolList, "MajorNdisVersion");
                protocol->m_minorversion = (UCHAR)utils::getNdisFieldData(0, ndisProtocolList, "MinorNdisVersion");

                // Save handler functions
                protocol->m_ptrReceiveHandler = utils::getNdisFieldData(0, ndisProtocolList, "ReceiveHandler");
                protocol->m_ptrReceivePacketHandler = utils::getNdisFieldData(0, ndisProtocolList, "ReceivePacketHandler");
                protocol->m_ptrReceiveCompleteHandler = utils::getNdisFieldData(0, ndisProtocolList, "ReceiveCompleteHandler");
                protocol->m_ptrWanReceiveHandler = utils::getNdisFieldData(0, ndisProtocolList, "WanReceiveHandler");
                protocol->m_ptrResetCompleteHandler = utils::getNdisFieldData(0, ndisProtocolList, "ResetCompleteHandler");
                protocol->m_ptrWanTransferDataCompleteHandler = utils::getNdisFieldData(0, ndisProtocolList, "WanTransferDataCompleteHandler");
                protocol->m_ptrTransferDataCompleteHandler = utils::getNdisFieldData(0, ndisProtocolList, "TransferDataCompleteHandler");
                protocol->m_ptrWanSendCompleteHandler = utils::getNdisFieldData(0, ndisProtocolList, "WanSendCompleteHandler");
                protocol->m_ptrSendCompleteHandler = utils::getNdisFieldData(0, ndisProtocolList, "SendCompleteHandler");
                protocol->m_ptrCloseAdapterCompleteHandler = utils::getNdisFieldData(0, ndisProtocolList, "CloseAdapterCompleteHandler");
                protocol->m_ptrOpenAdapterCompleteHandler = utils::getNdisFieldData(0, ndisProtocolList, "OpenAdapterCompleteHandler");
                protocol->m_ptrStatusCompleteHandler = utils::getNdisFieldData(0, ndisProtocolList, "StatusCompleteHandler");
                protocol->m_ptrStatusHandler = utils::getNdisFieldData(0, ndisProtocolList, "StatusHandler");
                protocol->m_ptrRequestCompleteHandler = utils::getNdisFieldData(0, ndisProtocolList, "RequestCompleteHandler");
                if (utils::IsVistaOrAbove())
                {
                    protocol->m_ptrSendNetBufferListsCompleteHandler = utils::getNdisFieldData(0, ndisProtocolList, "SendNetBufferListsCompleteHandler");
                    protocol->m_ptrReceiveNetBufferListsHandler = utils::getNdisFieldData(0, ndisProtocolList, "ReceiveNetBufferListsHandler");
                    protocol->m_ptrStatusHandlerEx = utils::getNdisFieldData(0, ndisProtocolList, "StatusHandlerEx");
                }

                // Save protocol start and end address
                // Pick a handler that most likely will not be hooked
                ULONG64 Base;
                ULONG64 addrHandler = utils::getNdisFieldData(0, ndisProtocolList, "PnPEventHandler");

                // Sanity check
                if (addrHandler != NULL)
                {
                    protocol->m_protocolStartAddr = Base = utils::findModuleBase(addrHandler);
                    protocol->m_protocolEndAddr = Base + utils::getModuleSize(Base);
                }

                // Get the module name for the protocol's handler
                CHAR moduleName[MAX_MODULE_NAME] = { 0 };
                utils::getNameByOffset(addrHandler, moduleName);

                StringCchCopyA(protocol->m_ModuleName, MAX_MODULE_NAME, moduleName);

                // For debugging purposes
                DbgPrint("DEBUG: %s:%d:%s Protocol address: %p (%I64x-%I64x [%s]), Protocol name: %msu (v%d.%d)\n",
                    __FILE__, __LINE__, __FUNCTION__, Address, protocol->m_protocolStartAddr, protocol->m_protocolEndAddr,
                    protocol->m_ModuleName, addrName, protocol->m_majorversion, protocol->m_minorversion);
                // Done setting protocol's information, save protocol ptr to vector
                protocolList->push_back(protocol);

                // Next protocol
                Address = utils::getPointerFromAddress(addrNextProtocol, &cbBytesReturned);
                ndisProtocolList = ndisProtocolList.Field("NextProtocol");
            } while (Address != NULL);
        }

    }
    else
    {
        g_Ext->m_Control->Output(DEBUG_OUTPUT_ERROR, __FUNCTION__ ": Unable to find expression ndisProtocolList\n");
    }

    return protocolList;
}// GetProtocolList