# REVISIONS
# 07/22/05  JRB  Add phv_type, phsx_type used by cli_goose.c
# 08/10/04  EJV  Chg "UTF8VSTRING13" from ":T" to ":TK".
# 11/24/03  JRB  Add ":CF", ":TV" to avoid unnecessary type definitions.
# 10/09/03  JRB  Add types for dealing with IEC/UCA Reports. Add "client.h".
##########################################################################
# MMS OBJECT CONFIGURATION FILE
# This file is used as input to the 'foundry' utility application.
# It is used to create the following objects for use with MMS-LITE:
#	Types
#	Domains
#	Named Variables
#	Named Variable Lists
#
# Note: All objects except for the types can also be created 
#       by user code at initialization time. The creation of the
#	Domains, Variables, and Variable Lists via this utility
#	is for convenience only.
#
# Lines beginning with pound-signs are comments and are ignored.
# The general format of object definitions in this file is described 
# below. All object definition information is supplied in quotes, and
# can span multiple lines if desired. A object definition string is of 
# the form :
#
#   "{objectType}","Object Specific String1", "String2", ...
#
# Where the objectType field is used to specify the object and some of 
# it's optional attributes. The format of the 'objectType' field is as 
# follows -
#
# 	":X{flags}"
#
# Where X is one of the set {I,T,D,V,L}, and the set of valid flag
# characters depends on the object type.
#
# 	C == Control string
# 	  Flags  
# 	    C : Config, next string is alignment file to use
# 	    P : Path, next string is include path for ODF files
# 	    F : Flags, next string contains flags to set defaults
#		":VD"
#		":VP"
#		":TU"
#		":TT"
#		":TV"
#		"-notypedefs"
#		"-nosuffix"
# 	    U : UCA control, next string contains UCA control info
#		"MVL_UCA"
#		"MVLU_USE_REF"
#
# 	I == User specified include file, for user object definitions
# 	  Flags  
#           None
#
# 	T == Type
# 	  Flags  
# 	    U : Unique, do not 'twin' this type
# 	    T : Transient type, do not keep
# 	    V : Keep only if referenced by a variable
# 	    K : Keep this type unconditionally
#
# 	D == Domain
# 	  Flags  
#           None
#
# 	V == Named Variable
# 	  Flags  
#           D : Use 3rd string to set data pointer
#           P : Use 4th (3rd for no D) string to set processing fun
#           U : Use 5th (4rd for no D, 3rd for no P) string to set usr_info
#
# 	L == Named Variable List
# 	  Flags  
#           U : Use 5th (4rd for no D, 3rd for no P) string to set usr_info
#          String ":S" : End of list of variables
#
# 	N == UCA Model Name Generation 
# 	  Flags  
#           None
#
##########################################################################
# EXECUTION CONTROL
#
# Include path, used to locate included ODF files
# Path for QNX
":CP", "../../../mvl/util/foundry/uca09"    
# Path on Windows
":CP", "../../mvl/util/foundry/uca09"

# Set type handling default flags for all following types
":CF", ":TV"		# Delete Runtime types not used by variables

# Include SISCO UCA Object Definition Files
":CI", "gentypes.odf"
":CI", "rpt.odf"

##########################################################################
# INCLUDE FILE DEFINITION SECTION
# This section is used to specify user include files that are to be
# included in the output 'C' file. This may be necessary when creating
# variables with data or processing initialzation strings.
#   Example - Include the user header file 'umvlinit.h'
#      ":I", "server.h"
#

":I", "mmsclient.h"

##########################################################################
# TYPE CREATION SECTION
# This section is used to specify MMS-LITE types. There are three
# required parameters per type (plus flags) - 
#  1. Type Select Define : The define created to reference the type
#  2. TDL : The SISCO type definition language string
#  3. Comment: Used only in the output 'C' file
# 
#  Optional flags are - 
#    U : Do not 'twin' this type
#    T : Transient type, do not write; use only as base type
#    K : Keep this type unconditionally

":T", "ANALOG","[32:Ushort]","Array Of 32 16-bit unsigned integers"
":T", "U16","Ushort","Single 16-bit unsigned integer"
":TK", "I16","Short","Single 16-bit signed integer"
":TK", "U32","Ulong","Single 32-bit unsigned integer"
":TK", "UTF8VSTRING13","UTF8Vstring13","variable len Unicode UTF8 string"

# These types (phv_type, phsx_type) used by cli_goose.c
":TK", "phv_type",
"{(phsA){(instCVal){(mag){(i)Long,(f)Float,},(ang){(i)Long,(f)Float,},},(cVal){(mag){(i)Long,(f)Float,},(ang){(i)Long,(f)Float,},},(range)Byte,(q)BVstring13,(t)Utctime,},
(phsB){(instCVal){(mag){(i)Long,(f)Float,},(ang){(i)Long,(f)Float,},},(cVal){(mag){(i)Long,(f)Float,},(ang){(i)Long,(f)Float,},},(range)Byte,(q)BVstring13,(t)Utctime,},
(phsC){(instCVal){(mag){(i)Long,(f)Float,},(ang){(i)Long,(f)Float,},},(cVal){(mag){(i)Long,(f)Float,},(ang){(i)Long,(f)Float,},},(range)Byte,(q)BVstring13,(t)Utctime,},
(neut){(instCVal){(mag){(i)Long,(f)Float,},(ang){(i)Long,(f)Float,},},(cVal){(mag){(i)Long,(f)Float,},(ang){(i)Long,(f)Float,},},(range)Byte,(q)BVstring13,(t)Utctime,},
(net){(instCVal){(mag){(i)Long,(f)Float,},(ang){(i)Long,(f)Float,},},(cVal){(mag){(i)Long,(f)Float,},(ang){(i)Long,(f)Float,},},(range)Byte,(q)BVstring13,(t)Utctime,},
(res){(instCVal){(mag){(i)Long,(f)Float,},(ang){(i)Long,(f)Float,},},(cVal){(mag){(i)Long,(f)Float,},(ang){(i)Long,(f)Float,},},(range)Byte,(q)BVstring13,(t)Utctime,},
}",
""
":TK", "phsx_type",
"{(instCVal){(mag){(i)Long,(f)Float,},(ang){(i)Long,(f)Float,},},(cVal){(mag){(i)Long,(f)Float,},(ang){(i)Long,(f)Float,},},(range)Byte,(q)BVstring13,(t)Utctime,}",
""

##########################################################################
# DOMAIN CREATION SECTION
# This section is used to create MMS-LITE domains. The single parameter 
# is the domain name, which must be a legal MMS domain name.
#   Example - Create a domain named mvlLiteDomain
#      ":D", "mvlLiteDomain"
#
##########################################################################
# VARIABLE ASSOCIATION CREATION SECTION
# This section is used to specify MMS-LITE named variables. There are two
# required parameters per variable, and three optional parameters (plus 
# flags) - 
#  1. Variable Name (must be valid MMS variable name). Note that the 
#     name can be of the form "domainName:VariableName" for domain vars.
#  2. Type ID : This Type ID must have been created previously
#  3. Data (optional): Used to initialize the va->data element.
#  4. Proc (optional): Used to initialize the va->proc element.
#  5. User (optional): Used to initialize the va->usr_info element.
# 
#  Optional flags are - 
#    D : Use 3rd string to set va->data
#    P : Use 4th (3rd for no D) string to set va->proc
#    U : Use 5th (4th, 3rd for no D, no P) string to set va->usr_info
# 
# Note that it may ne necessary to specify an include file to be used
# to resolve the 'data' and 'proc' initialization code.
# 
#   Example - Create a VMD variable named 'Temperature'
#     ":VDP", "Temperature", "I16", "&Temperature", "&varProcFuns"
#
##########################################################################
# NAMED VARIABLE LIST CREATION SECTION
# This section is used to specify MMS-LITE named variable lists. 
# There are two required parameters per variable list, and a list of
# variables to be included in the list (plus flags) - 
#  1. Variable list Name (must be valid MMS variable name). Note that the 
#     name can be of the form "domainName:VariableListName" for domain vars.
#  2. List of variables to be part of the named variable list.
#  3. End of variables marker. This is a string of form ":S",
# 
#   Example - Create a VMD Variable List named 'nvl1' with 'Temperature',
#             and 'arr1' as members.
#       ":L", "nvl1", "arr1", "Temperature", ":S"
#
##########################################################################
# UCA MODEL NAME GENERATION SECTION
# This section is used to generate UCA variable names from a selected
# structure type. The first parameter is the name base to be used. The
# second parameter is the type to use in extracting the names, and will
# generally be a high level UCA object type.
# Note: These objects are used only when the '-v' or '-n' command line
#       parameters is used. 
#   Example - Extract the names for the 
#			"Automatic Switch Controller Device Model"
#":N","ASWC","ASWC"
#
