Provided by: nescc_1.3.5-1.1build1_amd64 bug

NAME

       nescc-mig - message interface generator for nesC

SYNOPSIS

       nescc-mig [any nescc option] [tool-specific options]
                 [-o output-file] [-nescc=driver]
                 tool msg-format-file message-type

DESCRIPTION

       nescc-mig  is a tool to generate code to process nesC messages (which are specified by C types). The tool
       argument specifies what tool should be generated, the message-type specifies the C type  of  the  message
       you wish to process and msg-format-file specifies a nesC file which uses that type. The message type must
       be defined with struct message-type, nx_struct message-type, union message-type, nx_union message-type.

       When used with types whose layout is platform-dependent (i.e., not defined with nx_struct  or  nx_union),
       it  is  important to specify the correct nescc target architecture option (-fnesc-target=...). If you are
       invoking nescc-mig indirectly via mig, you can use the ncc -target=...  option instead.

       If an enum constant named AM_message_type (with message_type capitalized) is found,  then  the  value  of
       that  constant  is  assumed  to  be the active message type for message-type. If you need access to other
       constants from your nesC application, please consult the nescc-ncg man page.

       The current tools are java, csharp, python and C, which generate java, C#, python and C  code  to  encode
       and decode messages.

OPTIONS

       You can pass any nescc option, as well as

       -o output-file
              Specify the file in which to output the generated code.

       -nescc=driver
              Use  driver  instead  of  nescc  to  extract type layout information.  For example, if you specify
              -nescc=ncc, you can use nescc-mig to extract type information from TinyOS applications (which  are
              normally compiled with ncc).

       tool-specific options
              See below.

JAVA TOOL

       This  tool  generates  a  java  class  to  encode  or  decode  a  nesC  message,  basing  itself  on  the
       net.tinyos.message infrastructure. It accepts the following options:

       -java-classname=full-class-name
              This option is required and specifies the package and name of the generated class.  If  the  full-
              class-name has no '.', then no package directive is included in the output.

       -java-extends=class-name
              Specify the class the generated class will extend. The default is net.tinyos.message.Message.

       For  each field fname of structure message-type, there are the following methods (the bit offset and size
       methods are useful for structures containing bitfields):

       *      get_fname: get field's value

       *      set_fname: set field's value

       *      offsetBits_fname: return bit offset of field in message-type

       *      offset_fname: return byte offset of field in message-type

       *      sizeBits_fname: return size in bits of field (not for arrays)

       *      size_fname: return size in bytes of field (not for arrays) (absent if fname is a bitfield)

       *      isSigned_fname: return true if fname is of a signed type

       *      isArray_fname: return true if fname is an array

       Embedded structures in message-type are expanded, using _ to separate the structure name and its fields.

       A number of extra methods are present for fields that are arrays:

       *      getElement_fname: get an element of the array

       *      setElement_fname: set an element of the array

       *      elementSize_fname: return size in bytes of array elements

       *      elementSizeBits_fname: return size in bits of array elements

       *      numDimensions_fname: return number of dimensions of the array

       *      numElements_fname: return number of elements  of  the  array  for  a  given  dimension  (left-most
              dimension is numbered 0) - the dimension is optional for 1-dimensional arrays

       *      totalSize_fname: return size in bytes of the array (absent if the array is variable-size)

       *      totalSizeBits_fname: return size in bits of the array (absent if the array is variable-size)

       If the array is 1-dimensional and the elements are one byte, then the following methods exist:

       *      getString_fname: build a Java string from the array assuming it contains a C-style null-terminated
              string

       *      setString_fname: set the array to a C-style null-terminated string given a java string

       The getElement_..., setElement_..., offset_... and offsetBits_... methods take  one  argument  per  array
       dimension.  These  methods  report  errors if the array index is out of bounds. If an array has a maximum
       size of 0, mig assumes it represents a variable-size array and does not  check  the  corresponding  array
       index.

       The data for a message is stored in an array, with explicit base and length information. The constructors
       can either allocate this array, receive it as an explicit argument or extract if  from  another  message.
       The base and length can also be optionally passed to these constructors.

       The  optional  length  argument  overrides  the  default size of sizeof(message-type); this is useful for
       variable-size messages. The use of an explicit base is helpful for messages embedded in other messages.

       The generated class also has an amType() method which returns the message's active message type, or -1 if
       no AM_message_type constant was found.

C# TOOL

       This tool generates a C# class to encode or decode a nesC message. It accepts the following options:

       -csharp-classname=full-class-name
              This  option is required and specifies the namespace and name of the generated class. If the full-
              class-name has no '.', then no namespace directive is included in the output.

       -csharp-extends=class-name
              Specify the class the generated class will extend. The default is tinyos.message.Message.

              The methods in the generated class are the same as for the Java tool.

PYTHON TOOL

       This tool generates a Python class to encode or decode a nesC message.  It accepts the following options:

       -python-classname=full-class-name
              This option is required and specifies the name of the generated class.

       -python-extends=class-name
              Specify the class the generated class will extend. The default is tinyos.message.Message.Message.

              The methods in the generated class are the same as for the Java tool.

C TOOL

       This tool generates a C header file (.h) with constants describing the type's layout, and a C module (.c)
       with functions to get and set each field. You must pass the .h file's name to nescc-mig using -o.

       The C tool accepts the following option:

       -c-prefix=prefix
              This  option  specifies the prefix to attach to the generated constants and functions. If omitted,
              message-type is used.

       For each non-array field fname of structure message-type,  the  following  functions  and  constants  are
       generated:

       *      prefix_fname_get(): get field's value

       *      prefix_fname_set(): get field's value

       *      prefix_fname_OFFSETBITS: bit offset of field

       *      prefix_fname_OFFSET: byte offset of field

       *      prefix_fname_SIZEBITS: size in bits of field

       *      prefix_fname_SIZE: size in bytes of field

       For  each  array  field  fname  of  structure  message-type,  the  following  functions and constants are
       generated:

       *      prefix_fname_get(): get field's value

       *      prefix_fname_set(): get field's value

       *      prefix_fname_offsetbits(): bit offset of array element

       *      prefix_fname_offset(): byte offset of array element

       *      prefix_fname_ELEMENTSIZEBITS: size in bits of array element

       *      prefix_fname_ELEMENTSIZE: size in bytes of array element

       *      prefix_fname_NUMELEMENTS: number of elements in array (absent for variable-sized arrays)

       *      prefix_fname_NUMELEMENTS_i: size of ith array dimension

       Embedded structures in message-type are expanded, using _ to separate the structure name and its  fields.
       A field of an array of embedded structures is considered to be an array.

ERRORS

       nescc-mig  reports an error if nescc cannot compile msg-format-file, if message-type isn't found or if it
       contains pointers.

SEE ALSO

       The generated code for the various tools  refer  to  libraries  that  are  distributed  with  the  TinyOS
       operating system. Please refer to that project's documentation for more information.

       mig(1), nescc(1), nescc-ncg(1)

                                                 April 27, 2004                                     nescc-mig(1)