Esempio n. 1
0
void NetEditorBase::SlotLoadedData()
{
    QDomDocument doc;
    doc.setContent(m_reply->readAll());
    QDomElement root = doc.documentElement();
    QDomElement content = root.firstChildElement("InternetContent");
    QDomElement grabber = content.firstChildElement("grabber");

    while (!grabber.isNull())
    {
        QString title, author, image, description, type, commandline;
        double version;
        bool search = false;
        bool tree = false;

        title = grabber.firstChildElement("name").text();
        commandline = grabber.firstChildElement("command").text();
        author = grabber.firstChildElement("author").text();
        image = grabber.firstChildElement("thumbnail").text();
        type = grabber.firstChildElement("type").text();
        description = grabber.firstChildElement("description").text();
        version = grabber.firstChildElement("version").text().toDouble();

        QString searchstring = grabber.firstChildElement("search").text();

        if (!searchstring.isEmpty() &&
            (searchstring.toLower() == "true" ||
             searchstring.toLower() == "yes" ||
             searchstring == "1"))
            search = true;

        QString treestring = grabber.firstChildElement("tree").text();

        if (!treestring.isEmpty() &&
            (treestring.toLower() == "true" ||
             treestring.toLower() == "yes" ||
             treestring == "1"))
            tree = true;

        if (type.toLower() == "video" && Matches(search, tree))
        {
            LOG(VB_GENERAL, LOG_INFO,
                QString("Found Source %1...").arg(title));
            m_grabberList.append(new GrabberScript(title, image, VIDEO_FILE,
                                                   author, search, tree,
                                                   description, commandline,
                                                   version));
        }

        grabber = grabber.nextSiblingElement("grabber");
    }

    ParsedData();
 }
Esempio n. 2
0
bool SRecordParser::ParseLine( unsigned lineNum, const char *line )
{
   SRecordData    sRecData;
   SRecordHeader  sRecHdr;
   unsigned char  data[ 50 ];

   memset( &sRecData, 0, sizeof( sRecData ));
   memset( data, 0, sizeof( data ));

   if ( line[ 0 ] != 'S' )
   {
      Error( lineNum, "doesn't start with an 'S'" );
      return false;
   }

   if ( !isdigit( line[ 1 ] ))
   {
      Error( lineNum, "expecting digit (0-9), found: '%c'", line[ 1 ]);
      return false;
   }

   const char *s = &line[ 2 ];
   unsigned char  lineLen;

   if ( !GetByte( &s, &lineLen, lineNum, "count" ))
   {
      return false;
   }

   unsigned char checksumCalc = lineLen;

   for ( int i = 0; i < ( lineLen - 1 ); i++ ) 
   {
      if ( !GetByte( &s, &data[ i ], lineNum, "data" ))
      {
         return false;
      }
      checksumCalc += data[ i ];
   }
   checksumCalc = ~checksumCalc;

   unsigned char checksumFound;

   if ( !GetByte( &s, &checksumFound, lineNum, "checksum" ))
   {
      return false;
   }

   if ( checksumFound != checksumCalc )
   {
      Error( lineNum, "found checksum 0x%02x, expecting 0x%02x", 
             checksumFound, checksumCalc );
      return false;
   }

   switch ( line[ 1 ] )
   {
      case '0':
      {
         memset( &sRecHdr, 0, sizeof( sRecHdr ));

         sRecHdr.m_lineNum = lineNum;
         memcpy( sRecHdr.m_module,  &data[ 2  ], sizeof( sRecHdr.m_module ) - 1 );
         memcpy( sRecHdr.m_ver,     &data[ 22 ], sizeof( sRecHdr.m_ver ) - 1 );
         memcpy( sRecHdr.m_rev,     &data[ 24 ], sizeof( sRecHdr.m_rev ) - 1 );
         memcpy( sRecHdr.m_comment, &data[ 26 ], sizeof( sRecHdr.m_comment ) - 1 );

         Flush();
         Header( &sRecHdr );
         break;
      }

      case '1':
      case '2':
      case '3':
      {
         memset( &sRecData, 0, sizeof( sRecData ));
         
         sRecData.m_lineNum         = lineNum;
         sRecData.m_addrLen         = line[ 1 ] - '1' + 2;
         sRecData.m_recType         = line[ 1 ] - '0';
         sRecData.m_checksumCalc    = checksumCalc;
         sRecData.m_checksumFound   = checksumFound;

         unsigned char *x = data;

         for ( int addrIdx = 0; addrIdx < sRecData.m_addrLen; addrIdx++ ) 
         {
            sRecData.m_addr <<= 8;
            sRecData.m_addr += *x++;
         }
         sRecData.m_dataLen = lineLen - sRecData.m_addrLen - 1;
         memcpy( sRecData.m_data, x, sRecData.m_dataLen );

         ParsedData( &sRecData );
         break;
      }

      case '5':
      {
         Flush();
         break;
      }

      case '7':
      case '8':
      case '9':
      {
         memset( &sRecData, 0, sizeof( sRecData ));
         
         sRecData.m_lineNum         = lineNum;
         sRecData.m_addrLen         = '9' - line[ 1 ] + 2;
         sRecData.m_recType         = line[ 1 ] - '0';
         sRecData.m_checksumCalc    = checksumCalc;
         sRecData.m_checksumFound   = checksumFound;

         unsigned char *x = data;

         for ( int addrIdx = 0; addrIdx < sRecData.m_addrLen; addrIdx++ ) 
         {
            sRecData.m_addr <<= 8;
            sRecData.m_addr += *x++;
         }

         Flush();
         StartAddress( &sRecData );
         break;
      }

      default:
      {
         Error( lineNum, "Unrecognized S-Record: S%c", line[ 1 ] );
         return false;
      }
   }

   return true;
}
Esempio n. 3
0
int ParseSRecordLine( Parser_t *parser, const char *line )
{
    int                 i;
    FILE_ParsedData_t  *parsedData = &parser->parsedData;
    uint8_t            *data;

    ClearData( parsedData );

    if ( line[ 0 ] != 'S' )
    {
        Error( parser, "doesn't start with an 'S'" );
        return FALSE;
    }

    if ( !isdigit( line[ 1 ] ))
    {
        Error( parser, "expecting digit (0-9), found: '%c'", line[ 1 ]);
        return FALSE;
    }

    const char *s = &line[ 2 ];
    unsigned char  lineLen;

    if ( !GetByte( parser, &s, &lineLen, "count" ))
    {
        return FALSE;
    }

    data = AllocData( parsedData, lineLen );

    unsigned char checksumCalc = lineLen;

    for ( i = 0; i < ( lineLen - 1 ); i++ ) 
    {
        if ( !GetByte( parser, &s, &data[ i ], "data" ))
        {
            return FALSE;
        }
        checksumCalc += data[ i ];
    }
    checksumCalc = ~checksumCalc;

    unsigned char checksumFound;

    if ( !GetByte( parser, &s, &checksumFound, "checksum" ))
    {
        return FALSE;
    }

    if ( checksumFound != checksumCalc )
    {
        Error( parser, "found checksum 0x%02x, expecting 0x%02x", 
               checksumFound, checksumCalc );
        return FALSE;
    }

    switch ( line[ 1 ] )
    {
        case '0':
        {
            // Header Record - We ignore this for now

            Flush( parser );
            break;
        }

        case '1':   // 2 byte address
        case '2':   // 3 byte address
        case '3':   // 4 byte address
        {
            int addrIdx;

            int addrLen			= line[ 1 ] - '1' + 2;

            unsigned char *x = data;

            for ( addrIdx = 0; addrIdx < addrLen; addrIdx++ ) 
            {
                parsedData->addr <<= 8;
                parsedData->addr += *x++;
            }
            parsedData->dataLen = lineLen - addrLen - 1;
            memmove( data, x, parsedData->dataLen );

            ParsedData( parser );
            break;
        }

        case '5':   // Count of S1, S2, and S3 records
        {
            Flush( parser );
            break;
        }

        case '7':   // 2 byte address
        case '8':   // 3 byte address
        case '9':   // 4 byte address
        {
            // Start Address - currently ignored

            Flush( parser );
            break;
        }

        default:
        {
            Error( parser, "Unrecognized S-Record: S%c", line[ 1 ] );
            return FALSE;
        }
    }

    return TRUE;

} // ParseSRecordLine
Esempio n. 4
0
int ParseIHexLine( Parser_t *parser, const char *line )
{
    int                 i;
    FILE_ParsedData_t  *parsedData = &parser->parsedData;
    uint8_t            *data;

    ClearData( parsedData );

    if ( line[ 0 ] != ':' )
    {
        // In Intel Hex format, lines which don't start with ':' are
        // supposed to be ignored.

        return TRUE;
    }

    const char *s = &line[ 1 ];
    unsigned char  dataLen;

    if ( !GetByte( parser, &s, &dataLen, "count" ))
    {
        return FALSE;
    }

    data = AllocData( parsedData, dataLen );

    unsigned short  addr;
    if ( !GetWord( parser, &s, &addr, "addr" ))
    {
        return FALSE;
    }

    unsigned char recType;
    if ( !GetByte( parser, &s, &recType, "recType" ))
    {
        return FALSE;
    }

    unsigned char checksumCalc = dataLen + (( addr & 0xFF00 ) >> 8 ) + ( addr & 0x00FF ) + recType;

    for ( i = 0; i < dataLen; i++ ) 
    {
        if ( !GetByte( parser, &s, &data[ i ], "data" ))
        {
            return FALSE;
        }
        checksumCalc += data[ i ];
    }

    unsigned char checksumFound;

    if ( !GetByte( parser, &s, &checksumFound, "checksum" ))
    {
        return FALSE;
    }

    if ((unsigned char)( checksumCalc + checksumFound ) != 0 )
    {
        Error( parser, "found checksum 0x%02x, expecting 0x%02x", 
               checksumFound, 0 - checksumCalc );
        return FALSE;
    }

    switch ( recType )
    {
        case 0: // Data
        {
            parsedData->addr    = parser->addrBase + addr;
            parsedData->dataLen = dataLen;

            ParsedData( parser );
            break;
        }

        case 1: // EOF
        {
            Flush( parser );
            break;
        }

        case 2: // Segment
        {
            parser->addrBase = ((unsigned)data[ 0 ] << 12 ) | ((unsigned)data[ 1 ] << 4 );
            break;
        }

        case 3: // Entry Point
        {
            break;
        }

        default:
        {
            Error( parser, "Unrecognized record type: %d", recType );
            return FALSE;
        }
    }

    return TRUE;

} // ParseIHexLine