コード例 #1
0
ファイル: keygen.cpp プロジェクト: AmesianX/elftosb
	/*!
	 * Core of the tool. Calls processOptions() to handle command line options
	 * before performing the real work the tool does.
	 */
	int run()
	{
		try
		{
			// read command line options
			int result;
			if ((result = processOptions()) != -1)
			{
				return result;
			}
			
			// set verbose logging
			setVerboseLogging();
			
			// make sure a file was provided
			if (m_positionalArgs.size() < 1)
			{
				throw std::runtime_error("no output file path was provided");
			}
			
			// generate key files
			string_vector_t::const_iterator it = m_positionalArgs.begin();
			for (; it != m_positionalArgs.end(); ++it)
			{
				generateKeyFile(*it);
			}
		}
		catch (std::exception & e)
		{
			Log::log(Logger::ERROR, "error: %s\n", e.what());
			return 1;
		}
		catch (...)
		{
			Log::log(Logger::ERROR, "error: unexpected exception\n");
			return 1;
		}
		
		return 0;
	}
コード例 #2
0
ファイル: BusPal.cpp プロジェクト: hulei123/git123
bool BusPal::parse(const string_vector_t& params, BusPal::BusPalConfigData& config)
{
    if (!params[0].compare(0, 3, "spi"))
    {
        config.function = BusPal::kBusPalFunction_SPI;

        if ((params.size() > 1))
        {
            int32_t spiSpeed = atoi(params[1].c_str());
            if ( spiSpeed <= 0 )
                return false;

            config.spiSpeedKHz = spiSpeed;

            if (params.size() > 2)
            {
                config.spiPolarity = (BusPal::spi_clock_polarity_t)atoi(params[2].c_str());

                if (params.size() > 3)
                {
                    config.spiPhase = (BusPal::spi_clock_phase_t)atoi(params[3].c_str());

                    if (params.size() > 4)
                    {
                        if (!strcmp(params[4].c_str(), "lsb"))
                        {
                            config.spiDirection = BusPal::kSpiLsbFirst;
                        }
                        else if (!strcmp(params[4].c_str(), "msb"))
                        {
                            config.spiDirection = BusPal::kSpiMsbFirst;
                        }
                    }
                }
            }
        }
    }
    else if (!params[0].compare(0, 3, "i2c"))
    {
        config.function = BusPal::kBusPalFunction_I2C;

        if (params.size() > 1)
        {
			uint32_t i2cAddress = strtoul(params[1].c_str(), NULL, 16);

			if (i2cAddress > 0x7F)
			{
				i2cAddress &= 0x7F;
				Log::info("Only 7-bit i2c address is supported, so the effective value is 0x%x\n", i2cAddress);
			}
			config.i2cAddress = (uint8_t)i2cAddress;

            if (params.size() > 2)
            {
                int32_t i2cSpeed = atoi(params[2].c_str());
                if (i2cSpeed <= 0)
                    return false;
                
                config.i2cSpeedKHz = i2cSpeed;
            }
        }
    }
	else if (!params[0].compare(0, 3, "can"))
	{
		config.function = BusPal::kBusPalFunction_CAN;
		if ((params.size() > 1))
		{
			uint32_t canSpeed = atoi(params[1].c_str());
			if (canSpeed > 4)
				return false;

			config.canSpeed = canSpeed;

			if (params.size() > 2)
			{
				config.canTxid = strtoul(params[2].c_str(), NULL, 16) & 0x7ff;
			}

			if (params.size() > 3)
			{
				config.canRxid = strtoul(params[3].c_str(), NULL, 16) & 0x7ff;
			}
		}
	}
	else if (!params[0].compare(0, 4, "gpio"))
    {
        if (!params[1].compare(0, 6, "config"))
        {
            if (params.size() != 5)
            {
                return false;
            }
            config.function = kBusPalFunction_GPIO_CONFIG;
            config.gpioPort   = (uint8_t) *params[2].c_str();
            config.gpioPinNum = atoi(params[3].c_str());
            config.gpioMux  = atoi(params[4].c_str());
        }
        else if (!params[1].compare(0, 3, "set"))
        {
            if (params.size() != 5)
            {
                return false;
            }
            config.function = kBusPalFunction_GPIO_SET;
            config.gpioPort   = (uint8_t) *params[2].c_str();
            config.gpioPinNum = atoi(params[3].c_str());
            config.gpioLevel  = atoi(params[4].c_str());
        }
        else
        {
            return false;
        }
    }
    else if (!params[0].compare(0, 5, "clock"))
    {
        if (params.size() != 2)
        {
            return false;
        }
        config.function = kBusPalFunction_FPGA_CLOCK_SET;
        config.fpgaClockMhz = atoi(params[1].c_str());
    }
    else
    {
        // Error: Invalid BusPal function.
        return false;
    }

    return true;
}