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

📄 mmsavar.c

📁 ICCP Toolkit 是在 Tru64下开发Tase.2通信协议的开发包
💻 C
📖 第 1 页 / 共 5 页
字号:
  if (make_objname (obj))    {    temp[MAX_IDENT_LEN] = '\x00';    strcpy (tname, temp);    dom = ms_find_dom_objs (obj, chan);    if (dom == NULL)      {      printf ("\n There is no Domain associated with this Object. ");      }    else      {      if (dom->num_named_var==0)  /* Binary search is being used	*/	{	printf ("\n There are no variables associated with this Domain. ");	}      else	{	CLEARSCR;	printf ("\n\n\n\n");	printf ("\n The following variables are found in this Domain.\n");	for (i=0; i<dom->num_named_var; i++)	  {	  list_named_var (dom->named_var_array[i]);	  }	}      }    wait_msg ("");    }  (*menu_set_fun) ();#endif  }/************************************************************************//*			do_set_local_var_data				*//************************************************************************/ ST_VOID do_set_local_var_data (ST_VOID)  {OBJECT_NAME var_obj;NAMED_VAR *var;ST_CHAR *dest;  printf ("\n To modify Local Named Variable : ");  if (!get_objname (&var_obj))    {    (*menu_set_fun)();    return;    }      var = ms_find_named_var_obj (&var_obj, 0);  if (!var)    {    wait_msg (" Variable name not found");    (*menu_set_fun)();    return;    }  dest = u_get_named_addr (var);  if (!dest)    {    wait_msg (" u_get_named_addr failure");    (*menu_set_fun)();    return;    }    get_arb_write_data (dest, var->type->rt_head, var->type->rt_num);  (*menu_set_fun)();  }/************************************************************************//*			do_show_local_var_data				*//************************************************************************/ST_VOID do_show_local_var_data (ST_VOID)  {OBJECT_NAME var_obj;NAMED_VAR *var;ST_CHAR *src;  printf ("\n For display of Local Named Variable :");  if (!get_objname (&var_obj))    {    (*menu_set_fun)();    return;    }      var = ms_find_named_var_obj (&var_obj, 0);  if (!var)    {    wait_msg (" Variable name not found");    (*menu_set_fun)();    return;    }  src = u_get_named_addr (var);  if (!src)    {    wait_msg (" u_get_named_addr failure");    (*menu_set_fun)();    return;    }    print_arb_data (src, var->type, SD_FALSE, SD_FALSE, NULL);  wait_msg ("");    (*menu_set_fun)();  }/************************************************************************//*			do_add_named_var_list				*//************************************************************************/ST_VOID do_add_named_var_list (ST_VOID)  {#if MMS_VA_ENDOMAIN_OBJS 	*dom;OBJECT_NAME 	list;VARIABLE_LIST	*vl_ptr;ST_INT chan;ST_INT		temp;ST_INT		num_of_vars;ST_CHAR		*name;  nxt_buf = source_buf;  if (!get_chan (&chan))    {    (*menu_set_fun) ();    return;    }  printf ("\n Select Variable List Scope and Name : ");  if (get_objname (&list))    {    /* we need the pointer to the name not an OBJECT_NAME *.  All names	*/    /* are unioned in the same spot.					*/    name = (ST_CHAR *)list.obj_name.item_id;    if ((dom = ms_find_dom_objs (&list, chan)) != NULL)      {      vl_ptr = (VARIABLE_LIST *)dest_buffer;      if (get_var_list (vl_ptr, &temp,SD_FALSE))        {	num_of_vars = (ST_INT)temp;	if (ms_add_nvlist (dom, name, num_of_vars, vl_ptr))          wait_msg ("\n The specified list has been added to the MMS-EASE VM.");	else          wait_msg ("\n Could not add the specified list.");	}      }    }  (*menu_set_fun) ();#endif  }/************************************************************************//*			do_del_named_var_list				*//************************************************************************/ST_VOID do_del_named_var_list (ST_VOID)  {#if MMS_VA_ENOBJECT_NAME obj;DOMAIN_OBJS *dom;ST_INT chan;ST_RET ret;  nxt_buf = source_buf;  if (!get_chan (&chan))    {    (*menu_set_fun) ();    return;    }  printf (" \nEnter Variable List Name : ");  if (get_objname (&obj))    {    dom = ms_find_dom_objs (&obj, chan);    if ((ret = ms_del_nvlist (dom,obj.obj_name.item_id)))      print_perror_wait (ret,"\n Delete Error : ");    }  (*menu_set_fun) ();#endif  }/************************************************************************//*			    list_named_var_list				*//************************************************************************/static ST_VOID list_named_var_list (NAMED_VAR_LIST   *cur_var_list)  {#if MMS_VA_ENVARIABLE_LIST	 *vl_ptr;ST_INT num_vars;  printf (" \n %s : ", cur_var_list->name);  if (cur_var_list->deletable)    printf ("TRUE ");  else    printf ("FALSE");  num_vars = cur_var_list->num_vars;  printf (": Num of vars = %d", num_vars);  vl_ptr = (VARIABLE_LIST *) (cur_var_list + 1);  print_var_list (vl_ptr, num_vars);  wait_msg ("");#endif  }/************************************************************************//*			do_list_named_var_list			 	*//************************************************************************/ST_VOID do_list_named_var_list (ST_VOID)  {OBJECT_NAME *obj;DOMAIN_OBJS *dom;OBJECT_NAME temp_obj;ST_INT chan;ST_CHAR	tname[MAX_IDENT_LEN + 1];ST_CHAR	temp[256];ST_INT i;  chan = 0;  nxt_buf = source_buf;  obj = &temp_obj;  if (make_objname (obj))    {    temp[MAX_IDENT_LEN] = '\x00';    strcpy (tname, temp);    dom = ms_find_dom_objs (obj, chan);    if (dom == NULL)      {      printf ("\n There is no Domain associated with this Object. ");      }    else      {      if (dom->num_nvlist == 0) 	{	printf ("\n There are no variable lists associated with this Domain. ");	}      else	{	CLEARSCR;	printf ("\n\n\n\n");	printf ("\n The following variable lists are found in this Domain.\n");	for (i=0; i<dom->num_nvlist; i++)	  {	  list_named_var_list(dom->nvlist_array[i]);	  }	}      }    }  (*menu_set_fun) ();  }/************************************************************************//*			do_set_local_var_list_data			*//************************************************************************/ ST_VOID do_set_local_var_list_data (ST_VOID)  {OBJECT_NAME 	var_obj;NAMED_VAR_LIST 	*var_list;NAMED_VAR 	*var;ST_CHAR 		*dest;ST_INT num_of_vars;VARIABLE_LIST	*vl_ptr;ST_INT i;  printf ("\n To modify Local Named Variable List : ");  if (!get_objname (&var_obj))    {    (*menu_set_fun)();    return;    }      var_list = ms_find_nvlist_obj (&var_obj, 0);  if (!var_list)    {    wait_msg (" Variable name not found");    (*menu_set_fun)();    return;    }  num_of_vars = var_list->num_vars;  vl_ptr = (VARIABLE_LIST *)(var_list + 1);  for (i = 0; i < num_of_vars; i++)    {    switch (vl_ptr->var_spec.var_spec_tag)      {      case VA_SPEC_NAMED:        if (var = ms_find_named_var_obj (&(vl_ptr->var_spec.vs.name), 0))	  {          dest = u_get_named_addr (var);          if (!dest)            {            wait_msg (" u_get_named_addr failure");            (*menu_set_fun)();            return;            }            printf ("\n Variable (%d) is Named Var: '%s'", i + 1,	           vl_ptr->var_spec.vs.name.obj_name.vmd_spec);          get_arb_write_data (dest, var->type->rt_head, var->type->rt_num);	  }	break;      case VA_SPEC_ADDRESSED:      case VA_SPEC_DESCRIBED:      case VA_SPEC_SCATTERED:      case VA_SPEC_INVALIDATED:      default:        break;      }          vl_ptr++;    }     (*menu_set_fun)();  }/************************************************************************//*			do_show_local_var_list_data			*//************************************************************************/ST_VOID do_show_local_var_list_data (ST_VOID)  {OBJECT_NAME 	var_obj;NAMED_VAR_LIST 	*var_list;NAMED_VAR 	*var;ST_CHAR 		*src;ST_INT num_of_vars;VARIABLE_LIST	*vl_ptr;ST_INT i;  printf ("\n For display of Local Named Variable List data :");  if (!get_objname (&var_obj))    {    (*menu_set_fun)();    return;    }      var_list = ms_find_nvlist_obj (&var_obj, 0);  if (!var_list)    {    wait_msg (" Variable Name List not found");    (*menu_set_fun)();    return;    }  num_of_vars = var_list->num_vars;  vl_ptr = (VARIABLE_LIST *)(var_list + 1);  for (i = 0; i < num_of_vars; i++)    {    switch (vl_ptr->var_spec.var_spec_tag)      {      case VA_SPEC_NAMED:        if (var = ms_find_named_var_obj (&(vl_ptr->var_spec.vs.name), 0))	  {          src = u_get_named_addr (var);          if (!src)            {            wait_msg (" u_get_named_addr failure");            (*menu_set_fun)();            return;            }          printf ("\n Variable (%d) is Named Var: '%s'", i + 1,	           vl_ptr->var_spec.vs.name.obj_name.vmd_spec);            print_arb_data (src, var->type, SD_FALSE, SD_FALSE, NULL);          wait_msg ("");  	  }	break;      case VA_SPEC_ADDRESSED:      case VA_SPEC_DESCRIBED:      case VA_SPEC_SCATTERED:      case VA_SPEC_INVALIDATED:      default:        break;      }          vl_ptr++;    }     (*menu_set_fun)();  }/************************************************************************//************************************************************************//* Common user input routines for variable access.			*//************************************************************************//*			init_nxtbuf					*//* initialize input buffer start address				*//************************************************************************/ST_VOID init_nxtbuf (ST_VOID)  {  nxt_buf = source_buf;  }/************************************************************************//*			get_objname					*//* get object name from operator					*//************************************************************************/ST_BOOLEAN get_objname (OBJECT_NAME *info)  {ST_BOOLEAN data_entered;ST_INT num;ST_CHAR	temp[256];  printf ("\n   (0:VMD-Specific, 1:DOM-Specific, 2:AA-Specific)");  printf ("\n Enter Object Scope (default = 0) : ");  num = VMD_SPEC;  intget (&num);  if ((num == VMD_SPEC) || (num == DOM_SPEC) || (num == AA_SPEC))    info->object_tag = num;  else    num = VMD_SPEC;  switch (num)    {    case  (VMD_SPEC) :      printf (" Enter VMD-Specific Name : (R) ");      if (data_entered = strget (temp))	{	temp[MAX_IDENT_LEN] = 0;	strcpy (info->obj_name.vmd_spec, temp);	}    break;    case  (DOM_SPEC) :      printf (" DOM-Specific Name, Enter Domain Id : (R) ");      if (data_entered = strget (temp))	{	temp[MAX_IDENT_LEN] = '\x00';	strcpy (info->domain_id, temp);	printf ("                    Enter Item Id   : (R) ");	if (data_entered = strget (temp))	  {	  temp[MAX_IDENT_LEN] = '\x00';	  strcpy (info->obj_name.item_id, temp);	  }	}    break;    case  (AA_SPEC) :      printf (" Enter AA-Specific Name : (R) ");      if (data_entered = strget (temp))	{	temp[MAX_IDENT_LEN] = '\x00';	strcpy (info->obj_name.aa_spec, temp);	}    break;    }  return (data_entered);  }/************************************************************************//*			make_objname					*//* Get enough information from the operator to construct an object_name *//* for ms_find_dom_objs.						*//************************************************************************/ST_BOOLEAN make_objname (OBJECT_NAME *info)  {ST_BOOLEAN data_entered;ST_INT num;ST_CHAR	temp[256];  printf ("\n   (0:VMD-Specific, 1:DOM-Specific, 2:AA-Specific)");  printf ("\n Enter Object Scope (default = 0): ");  num = VMD_SPEC;  intget (&num);  if ((num == VMD_SPEC) || (num == DOM_SPEC) || (num == AA_SPEC))    info->object_tag = num;  else    num = VMD_SPEC;  data_entered = SD_TRUE;  switch (num)    {    case  (VMD_SPEC) :    case  (AA_SPEC) :      break;    case  (DOM_SPEC) :      printf (" Enter Domain Name: (R) ");      if (data_entered = strget (temp))	{	temp[MAX_IDENT_LEN] = '\x00';	strcpy (info->domain_id, temp);	}      break;    }  return (data_entered);  }/************************************************************************//*			get_address					*//* get address from operator						*//************************************************************************/ST_BOOLEAN get_address (VAR_ACC_ADDR *info)  {ST_UCHAR	naddr [5];ST_UCHAR	*na;ST_INT i;ST_INT data_entered;ST_INT num;ST_INT len;  printf ("\n Enter Variable Name Address Type:");  printf ("\n   (0:Numeric, 1:Symbolic, 2:Unconstrained)");  printf ("\n Enter Address Type (default = 1) : ");  num = SYM_ADDR;  intget (&num);  if ((num == SYM_ADDR) || (num == UNCON_ADDR) || (num == NUM_ADDR))    info->addr_tag = num;  else    num = SYM_ADDR;  switch (num)    {    case  (NUM_ADDR) :      printf (" Enter Numeric Address : (R) ");      naddr[0] = (ST_UCHAR)'\000';

⌨️ 快捷键说明

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