⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 skyeye_options.c

📁 这是Skyeye 0.9 版本的源代码
💻 C
📖 第 1 页 / 共 2 页
字号:

	}
      else if (!strncmp ("size", name, strlen (name)))
	{

	  if (value[0] == '0' && value[1] == 'x')
	    mb[num].len = strtoul (value, NULL, 16);
	  else
	    mb[num].len = strtoul (value, NULL, 10);

	}
      else if (!strncmp ("file", name, strlen (name)))
	{
	  strncpy (mb[num].filename, value, strlen (value) + 1);
	}
      else if (!strncmp ("boot", name, strlen (name)))
	{
	  /*this must be the last parameter. */
	  if (!strncmp ("yes", value, strlen (value)))
	    skyeye_config.start_address = mb[num].addr;
	}
      else
	{
	  SKYEYE_ERR
	    ("Error: mem_bank %d has unknow parameter \"%s\".\n", num, name);
	}
    }

  return 0;
}

int
do_net_option (skyeye_option_t * this_option, int num_params,
	       const char *params[])
{
  char name[MAX_PARAM_NAME], value[MAX_PARAM_NAME];
  int i;
  struct net_option net_opt;
  unsigned char mac_addr[6];
  unsigned char hip[4];
  unsigned char *maddr, *ip;

  for (i = 0; i < num_params; i++)
    {
      if (split_param (params[i], name, value) < 0)
	{
	  SKYEYE_ERR ("Error: %s has wrong parameter \"%s\".\n",
		      this_option->name, name);
	  return -1;
	}
      if (!strncmp ("mac", name, strlen (name)))
	{
	  sscanf (value, "%x:%x:%x:%x:%x:%x", &mac_addr[0],
		  &mac_addr[1], &mac_addr[2], &mac_addr[3],
		  &mac_addr[4], &mac_addr[5]);
	  memcpy (net_opt.macaddr, mac_addr, 6);

	}
      else if (!strncmp ("hostip", name, strlen (name)))
	{
	  /* FIXME: security problem, don't use sscanf later */
	  sscanf (value, "%d.%d.%d.%d", &hip[0], &hip[1], &hip[2], &hip[3]);
	  memcpy (net_opt.hostip, hip, 4);

	}
      else if (!strncmp ("ethmod", name, strlen (name)))
	{
	  if (!strncmp ("linux", value, strlen (value)))
	    {
	      net_opt.ethmod = NET_MOD_LINUX;

	    }
	  else if (!strncmp ("tuntap", value, strlen (value)))
	    {
	      net_opt.ethmod = NET_MOD_TUNTAP;

	    }
	  else if (!strncmp ("win", value, strlen (value)))
	    {
	      net_opt.ethmod = NET_MOD_WIN;

	    }
	  else if (!strncmp ("vnet", value, strlen (value)))
	    {
	      net_opt.ethmod = NET_MOD_VNET;
	    }
	}
    }
  maddr = net_opt.macaddr;
  ip = net_opt.hostip;
  printf ("ethmod num=%d, mac addr=%x:%x:%x:%x:%x:%x, hostip=%d.%d.%d.%d\n",
	  net_opt.ethmod, maddr[0], maddr[1], maddr[2], maddr[3], maddr[4],
	  maddr[5], ip[0], ip[1], ip[2], ip[3]);
  setup_device_option (this_option->name, (void *) &net_opt, num_params,
		       params);

  return 0;
}

/*added by ksh in 2004-11-26 ,energy option*/
int
do_energy_option (skyeye_option_t * this_option, int num_params,
		  const char *params[])
{
  char name[MAX_PARAM_NAME], value[MAX_PARAM_NAME];
  int i, fd;

  for (i = 0; i < num_params; i++)
    {
      if (split_param (params[i], name, value) < 0)
	SKYEYE_ERR ("Error: energy has wrong parameter \"%s\".\n", name);
      if (!strncmp ("state", name, strlen (name)))
	{
	  if (!strncmp ("on", value, strlen (value)))
	    {
	      skyeye_config.energy.energy_prof = 1;
	      SKYEYE_INFO ("energy info: turn on energy!\n");
	    }
	  else
	    {
	      skyeye_config.energy.energy_prof = 0;
	      SKYEYE_INFO ("energy info: turn off energy!\n");
	    }
	}
      else if (!strncmp ("filename", name, strlen (name)))
	{
	  strcpy (skyeye_config.energy.filename, value);
	  skyeye_config.energy.filename[strlen (value)] = '\0';
	}
      else if (!strncmp ("logfile", name, strlen (name)))
	{
	  strcpy (skyeye_config.energy.logfile, value);
	  skyeye_config.energy.logfile[strlen (value)] = '\0';
	}
    }
  return 0;

}



/*uart option*/
int
do_uart_option (skyeye_option_t * this_option, int num_params,
		const char *params[])
{
  char name[MAX_PARAM_NAME], value[MAX_PARAM_NAME];
  int i, fd;

//chy 2004-12-05 for eclipse
#ifdef SKYEYE4ECLIPSE
  if (nouart)
    return 0;
#endif
//----------------------------
  for (i = 0; i < num_params; i++)
    {
      if (split_param (params[i], name, value) < 0)
	SKYEYE_ERR ("Error: uart has wrong parameter \"%s\".\n", name);
      if (!strncmp ("fd_in", name, strlen (name)))
	{
	  if ((fd = open (value, O_RDWR)) == -1)
	    SKYEYE_DBG ("Error when open device %s", value);
	  skyeye_config.uart.fd_in = fd;
	  SKYEYE_INFO
	    ("uart info: input device is %s, fd is %d.\n", value, fd);
	}
      else if (!strncmp ("fd_out", name, strlen (name)))
	{
	  if ((fd = open (value, O_RDWR)) == -1)
	    SKYEYE_DBG ("Error when open device %s", value);
	  skyeye_config.uart.fd_out = fd;
	  SKYEYE_INFO
	    ("uart info: output device is %s, fd is %d.\n", value, fd);
	}
    }
  return 0;

}

/*chy 2004-03-11 lcd option*/
int
do_lcd_option (skyeye_option_t * this_option, int num_params,
	       const char *params[])
{
  char name[MAX_PARAM_NAME], value[MAX_PARAM_NAME];
  struct lcd_option lcd_opt;
  int i, fd;

  for (i = 0; i < num_params; i++)
    {
      if (split_param (params[i], name, value) < 0)
	SKYEYE_ERR ("Error: lcd has wrong parameter \"%s\".\n", name);
      if (!strncmp ("mod", name, strlen (name)))
	{
	  if (!strncmp ("gtk", value, strlen (value)))
	    {
	      lcd_opt.mod = LCD_MOD_GTK;
	    }
	  else if (!strncmp ("qt", value, strlen (value)))
	    {
	      lcd_opt.mod = LCD_MOD_QT;
	    }
	  else if (!strncmp ("x", value, strlen (value)))
	    {
	      lcd_opt.mod = LCD_MOD_X;
	    }
	  else if (!strncmp ("sdl", value, strlen (value)))
	    {
	      lcd_opt.mod = LCD_MOD_SDL;
	    }
	}
    }
  setup_device_option (this_option->name, (void *) &lcd_opt, num_params,
		       params);
}

/*ywc 2005-04-01 dbct option*/
int
do_dbct_option (skyeye_option_t * this_option, int num_params,
		const char *params[])
{
  char name[MAX_PARAM_NAME], value[MAX_PARAM_NAME];
  int i, fd;

  for (i = 0; i < num_params; i++)
    {
      if (split_param (params[i], name, value) < 0)
	SKYEYE_ERR ("Error: dbct has wrong parameter \"%s\".\n", name);
      if (!strncmp ("state", name, strlen (name)))
	{
	  if (!strncmp ("on", value, strlen (value)))
	    {
	      skyeye_config.no_dbct = 0;
#ifndef NO_DBCT
	      SKYEYE_INFO ("dbct info: turn on dbct!\n");
#else
	      SKYEYE_INFO ("dbct info: Note: DBCT not compiled in. This option will be ignored\n");
#endif
	    }
	  else
	    {
	      skyeye_config.no_dbct = 1;
	      SKYEYE_INFO ("dbct info: turn off dbct!\n");
	    }
	}
      //teawater add for new tb manage function 2005.07.10----------------------------
      if (!strncmp ("tbt", name, strlen (name)))
	{
	  skyeye_config.tb_tbt_size = strtoul (value, NULL, 0);
	}
      if (!strncmp ("tbp", name, strlen (name)))
	{
	  skyeye_config.tb_tbp_size = strtoul (value, NULL, 0);
	}
    }
}

//chy:2003-08-20 do_log option
int
do_log_option (skyeye_option_t * this_option, int num_params,
	       const char *params[])
{
  char name[MAX_PARAM_NAME], value[MAX_PARAM_NAME];
  int i, fd, logon;
  unsigned long long start, end, length;
  /*2004-08-09 chy init skyeye_config.log */
  skyeye_config.log.log_fd = 0;
  skyeye_config.log.logon = 0;
  skyeye_config.log.start = 0;
  skyeye_config.log.end = 0;
  skyeye_config.log.length = 0;

  for (i = 0; i < num_params; i++)
    {
      if (split_param (params[i], name, value) < 0)
	SKYEYE_ERR
	  ("log_info: Error: log has wrong parameter \"%s\".\n", name);
      if (!strncmp ("logon", name, strlen (name)))
	{
	  sscanf (value, "%d", &logon);
	  if (logon != 0 && logon != 1)
	    SKYEYE_ERR ("log_info: Error logon value %d\n", logon);
	  if (logon == 1)
	    {
	      SKYEYE_INFO ("log_info: log is on.\n");
	    }
	  else
	    {
	      SKYEYE_INFO ("log_info: log is off.\n");
	    }
	  skyeye_config.log.logon = logon;
	}
      else if (!strncmp ("logfile", name, strlen (name)))
	{
	  if ((skyeye_logfd = fopen (value, "w+")) == NULL)
	    {
	      //SKYEYE_DBG("SkyEye Error when open log file %s\n", value);
	      perror ("SkyEye: Error when open log file:  ");
	      exit (-1);
	    }
	  skyeye_config.log.log_fd = skyeye_logfd;
	  SKYEYE_INFO ("log_info:log file is %s, fd is 0x%x\n",
		       value, skyeye_logfd);
	}
      else if (!strncmp ("start", name, strlen (name)))
	{
	  start = strtoul (value, NULL, 0);
	  skyeye_config.log.start = start;
	  SKYEYE_INFO ("log_info: log start clock %llu\n", start);
	}
      else if (!strncmp ("end", name, strlen (name)))
	{
	  end = strtoul (value, NULL, 0);
	  skyeye_config.log.end = end;
	  SKYEYE_INFO ("log_info: log end clock %llu\n", end);
	}
      else if (!strncmp ("length", name, strlen (name)))
	{
	  sscanf (value, "%llu", &length);
	  skyeye_config.log.length = length;
	  SKYEYE_INFO ("log_info: log instr length %llu\n", length);
	}
    }
  return 0;
}


/*
 * we can add this option using:
 * step_disassemble:on[ON|1] for open this option
 * step_disassemble:off[OFF|0] for disable this option 
 * oyangjian add here
 */
int
do_step_disassemble_option (skyeye_option_t * this_option, int num_params,
			    const char *params[])
{
  int i;

  for (i = 0; i < num_params; i++)
    {
      printf ("step_disassemble state:%s\n", params[0]);
      if (!params[0])
	{
	  SKYEYE_ERR ("Error :usage: step_disassemble:on[off]");
	  return -1;
	}
      if (!strncmp (params[0], "on", 2) || !strncmp (params[0], "ON", 2))
	{
	  skyeye_config.can_step_disassemble = 1;
	  return 0;
	}
      else if (!strncmp (params[0], "off", 3)
	       || !strncmp (params[0], "OFF", 3))
	{

	  skyeye_config.can_step_disassemble = 0;
	  return 0;
	}

    }
  SKYEYE_ERR ("Error: Unkonw cpu name \"%s\"\n", params[0]);
  return -1;
}
int
do_flash_option (skyeye_option_t * this_option, int num_params,
	       const char *params[])
{
  char name[MAX_PARAM_NAME], value[MAX_PARAM_NAME];
  struct flash_option flash_opt;
  int i, fd;

  for (i = 0; i < num_params; i++)
    {
      if (split_param (params[i], name, value) < 0)
	SKYEYE_ERR ("Error: flash has wrong parameter \"%s\".\n", name);
      /*
      if (!strncmp ("mod", name, strlen (name)))
	{
	  if (!strncmp ("gtk", value, strlen (value)))
	    {
	      lcd_opt.mod = LCD_MOD_GTK;
	    }
	  else if (!strncmp ("qt", value, strlen (value)))
	    {
	      lcd_opt.mod = LCD_MOD_QT;
	    }
	  else if (!strncmp ("x", value, strlen (value)))
	    {
	      lcd_opt.mod = LCD_MOD_X;
	    }
	  else if (!strncmp ("sdl", value, strlen (value)))
	    {
	      lcd_opt.mod = LCD_MOD_SDL;
	    }
	}
	*/
    }
  setup_device_option (this_option->name, (void *) &flash_opt, num_params,
		       params);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -