This annex describes the ECMAScript programming language that enables Script nodes (see 6.40, Script) to interact with VRML scenes. See 4.12, Scripting, for a general description of scripting languages in ISO/IEC 14772. Note that support for the ECMAScript is not required by ISO/IEC 14772, but any access of ECMAScript from within VRML Script nodes shall conform with the requirements specified in this annex.
C.1 Introduction
C.2 Language
C.3 Supported Protocol in the Script node's url
field
C.3.1 url
field
C.3.2
File extension
C.3.3 MIME
type
C.4 eventIn handling
C.4.1
Receiving eventIns
C.4.2
Parameter passing and the eventIn function
C.4.3
eventsProcessed( ) function
C.4.4 initialize(
) function
C.4.5 shutdown(
) function
C.5 Accessing fields and events
C.5.1
Accessing fields and eventOuts of the script
C.5.2
Accessing fields and eventOuts of other nodes
C.5.3
Sending eventOuts
C.6 ECMAScript objects
C.6.1
Notational conventions
C.6.2
VRML field to ECMAScript variable conversion
C.6.3
Browser object
C.6.4 SFColor
object
C.6.5 SFImage
object
C.6.6 SFNode
object
C.6.7 SFRotation
object
C.6.8 SFVec2f
object
C.6.9 SFVec3f
object
C.6.10 MFColor
object
C.6.11 MFFloat
object
C.6.12 MFInt32
object
C.6.13 MFNode
object
C.6.14 MFRotation
object
C.6.15 MFString
object
C.6.16 MFTime
object
C.6.17 MFVec2f
object
C.6.18 MFVec3f
object
C.6.19 VrmlMatrix
object
C.7 Examples
ECMAScript is a general purpose, cross-platform programming language that can be used with ISO/IEC 14772 to provide scripting of events, objects, and actions. ECMAScript is fully described in 2.[ESCR]. Prior to standardization as ECMA-262, ECMAScript was known as Netscape JavaScript. Several syntactic entities in this annex reflect this origin.
The url field of the Script node may contain URL references to ECMAScript code as illustrated below:
Script { url "http://foo.com/myScript.js" }
The javascript: protocol allows the script to be placed inline as follows:
Script { url "javascript: function foo( ) { ... }" }
Browsers supporting the ECMAScript scripting language shall support the javascript: protocol as well as the the other required protocols (see 7, Conformance and minimum support requirements).
The url field may contain multiple URL's referencing either a remote file or in-line code as shown in the following example:
Script { url [ "http://foo.com/myScript.js", "javascript: function foo( ) { ... }" ] }
The file extension for ECMASCript source code is '.js', unless a protocol returning mime types is used (such as HTTP). In that case, any suffix is allowed as long as the proper mime type is returned (see C.3.3, Mime type).
The MIME type for ECMAScript source code is defined as follows:
application/x-javascript
Events sent to the Script node are passed to the corresponding ECMAScript function in the script. The script is specified in the url field of the Script node. The function's name is the same as the eventIn and is passed two arguments, the event value and its timestamp (see C.4.2, Parameter passing and the eventIn function). If there is no corresponding ECMAScript function in the script, the browser's behaviour is undefined.
For example, the following Script node has one eventIn field whose name is start:
Script { eventIn SFBool start url "javascript: function start(value, timestamp) { ... }" }
In the above example, when the start eventIn is sent, the start( ) function is executed.
When a Script node receives an eventIn, a corresponding function in the file specified in the url field of the Script node is called. This function has two arguments. The value of the eventIn is passed as the first argument and the timestamp of the eventIn is passed as the second argument. The type of the value is the same as the type of the eventIn and the type of the timestamp is SFTime. C.6.1, VRML field to ECMAScript variable conversion, provides a description of how VRML types appear in ECMAScript. The values of the parameters have no visibility outside the function.
Authors may define an eventsProcessed() function that is called after some set of events has been received. This allows Script nodes that do not rely on the ordering of events received to generate fewer events than an equivalent Script node that generates events whenever events are received (see C.4.1, Receiving eventIns).
The eventsProcessed( ) function takes no parameters. Events generated from it are given the timestamp of the last event processed.
Authors may define a function named initialize( ) which is invoked before the browser presents the world to the user and before any events are processed by any nodes in the same VRML file as the Script node containing this script (see 4.12.3, Initialize() and shutdown()).
The initialize( ) function has no parameters. Events generated from initialize( ) are given the timestamp of when the Script node was loaded.
Authors may define a function named shutdown( ) which is invoked when the corresponding Script node is deleted or when the world containing the Script node is unloaded or replaced by another world (see 4.12.3, Initialize() and shutdown()).
The shutdown( ) function has no parameters. Events generated from shutdown( ) are given the timestamp of when the Script node was deleted.
The fields and eventOuts of a Script node are accessible from its ECMAScript functions. As in all other nodes, the fields are accessible only within the Script. The eventIns are not accessible. The Script node's eventIns can be routed to and its eventOuts can be routed from. Another Script node with a reference to this node can access its eventIns and eventOuts as for any other node.
A field defined in a Script node is available to the script by using its name. Its value can be read or written. This value is persistent across function calls. EventOuts defined in the script node can also be read. The value is the last value assigned.
The script can access any exposedField, eventIn or eventOut of any node to which it has access:
DEF SomeNode Transform { } Script { field SFNode node USE SomeNode eventIn SFVec3f pos directOutput TRUE url "javascript: function pos(value) { node.set_translation = value; }" }
This example sends a set_translation eventIn to the Transform node. An eventIn on a passed node can appear only on the left side of the assignment. An eventOut in the passed node can appear only on the right side, which reads the last value sent out. Fields in the passed node cannot be accessed. However, exposedFields can either send an event to the "set_..." eventIn or read the current value of the "..._changed" eventOut. This follows the routing model of the rest of ISO/IEC 14772.
Events generated by setting an eventIn on a node are sent at the completion of the currently executing function. The eventIn shall be assigned a value of the same datatype; no partial assignments are allowed. For example, it is not possible to assign the red value of an SFColor eventIn. Since eventIns are strictly write-only, the remainder of the partial assignment would have invalid field values. Assigning to the eventIn field multiple times during one execution of the function still only sends one event and that event is the last value assigned.
Assigning to an eventOut of a Script node, or a component of an eventOut (i.e. MF eventOut or a property of an SF eventOut), sends an event to that eventOut. Events are sent at the end of script execution. An eventOut may be assigned a value multiple times within the script, but the value sent shall be the last value assigned to the eventOut. If the value of individual components of an eventOut are changed, the last value given to each component shall be sent. Components that are not changed in the script, send their initial value determined at the beginning of the script execution. For example, the following script segment produces an eventOut value of (4, 3, 1) for the eventOut SFVec3f foo_changed with an initial value of (6, 6, 6):
a = foo_changed; // copy by reference a(6,6,6) a.x = 5; // foo_changed(5,6,6) a.z = 1; // foo_changed(5,6,1) b = foo_changed; // copy by reference b(5,6,1) b.x = 4; // foo_changed(4,6,1) c = a; // copy by reference c(4,6,1) c.y = 3; // foo_changed(4,3,1))
Since ECMAScript is an untyped language it has no language constructs to describe the types of parameters passed to, or values returned from, functions. Therefore this annex uses a notational convention to describe these types. Parameters passed are preceded by their type, and the type of any return value precedes the function name. Normally these types correspond to VRML field types, so those names are used. In the case of no return value, the identifier void is used. In the case of a ECMAScript numeric value or numeric array return, the identifier numeric or numeric[ ] is used. In the case of a string return, the identifier String is used.
ECMAScript native datatypes consist of boolean, numeric and string. The language is not typed, so datatypes are implicit upon assignment. The VRML SFBool is mapped to the ECMAScript boolean. In addition to the ECMAScript true and false constants, the VRML TRUE and FALSE values may be used. The VRML SFInt32, SFFloat and SFTime fields are mapped to the numeric datatype and will be maintained in double precision accuracy. These types are passed by value in function calls. All other VRML fields are mapped to ECMAScript objects. ECMAScript objects are passed by reference.
The ECMAScript boolean, numeric and string are automatically converted to other datatypes when needed. See 2.[ESCR] for more details.
In ECMAScript, assigning a new value to a variable gives the variable the datatype of the new value, in addition to the value. Scalar values (boolean and numeric) are assigned by copying the value. Other objects are assigned by reference.
When assignments are made to eventOuts and fields, the values are converted to the VRML field type. Values assigned are always copied. This contrasts with normal assignment in ECMAScript where all assignments except for scalar are performed by reference.
For eventOut objects, assignment copies the value to the eventOut, which will be sent upon completion of the current function. Assigning an eventOut to an internal variable copies by reference. Subsequent assignments to that internal variable will behave like assignments to the eventOut (i.e., an event will be sent at the end of the function). Field objects behave identically to eventOut objects, except that no event is sent upon completion of the function.
Assigning an element of an MF object to an internal variable creates a reference to that element. The type shall be the corresponding SF object type. If the MF object is an eventOut and an assignment is made to the internal variable, an event will be sent at the end of the function. Assigning an SF object to an element of an MF object which is a field or eventOut (which shall be of the corresponding type) copies the value of the SF object into the MF object element. If the MF object is an eventOut an event will be sent at the end of the function.
This subclause lists the class static functions available in the Browser object which allow scripts to get and set browser information. Descriptions of the functions are provided in 4.12.10, Browser script interface. The syntax for a call is:
mymfnode = Browser.createVrmlFromString('Sphere {}');
Table C.1 describes the Browser object's functions, parameters, and return values.
| Return value | Function |
|---|---|
| String | getName( ) |
| String | getVersion( ) |
| numeric | getCurrentSpeed( ) |
| numeric | getCurrentFrameRate( ) |
| String | getWorldURL( ) |
| void | replaceWorld( MFNode nodes ) |
| MFNode | createVrmlFromString( String vrmlSyntax ) |
| void | createVrmlFromURL( MFString url, Node node, String event ) |
| void | addRoute( SFNode fromNode, String fromEventOut, SFNode toNode, String toEventIn) |
| void | deleteRoute( SFNode fromNode, String fromEventOut, SFNode toNode, String toEventIn ) |
| void | loadURL( MFString url, MFString parameter ) |
| void | setDescription( String description ) |
The SFColor object corresponds to a VRML SFColor field. All properties are accessed using the syntax sfColorObjectName.<property>, where sfColorObjectName is an instance of an SFColor object. The properties may also be accessed by the indices [0] for red, [1] for green and [2] blue. All functions are invoked using the syntax sfColorObjectName.method(<argument-list>), where sfColorObjectName is an instance of an SFColor object.
sfColorObjectName = new SFColor(float r, float g, float b)
where
r, g, and b are the red, green, and blue values of the colour. Missing values will be filled by 0.0.
The properties of the SFColor object are described in Table C.2.
| Property | Description |
| numeric r | red component of the colour |
| numeric g | green component of the colour |
| numeric b | blue component of the colour |
The functions of the SFColor object are described in Table C.3.
| Function | Description |
|---|---|
| void setHSV(float h, float s, float v) | Sets the value of the colour by specifying the values of hue, saturation, and value. |
| numeric[3] getHSV( ) | Returns the value of the colour in a 3 element numeric array, with hue at index 0, saturation at index 1, and value at index 2. |
| String toString( ) | Returns a String containing the ISO/IEC 14772 UTF-8 encoded value of r, g and b. |
The SFImage object corresponds to a VRML SFImage field.
sfImageObjectName = new SFImage(numeric x, numeric y, numeric comp, MFInt32 array)
where
x is the x-dimension of the image. y is the y-dimension of the image. comp is the number of components of the image (1 for greyscale, 2 for greyscale+alpha, 3 for rgb, 4 for rgb+alpha). Array contains the x × y values for the pixels of the image. The format of each pixel is an SFImage as in the PixelTexture node.
The properties of the SFImage object are listed in Table C.4.
| Property | Description |
|---|---|
| numeric x | x dimension of the image |
| numeric y | y dimension of the image |
| numeric comp |
|
| MFInt32 array | image data |
The function of the SFImage object is described in Table C.5.
| Function | Description |
| String toString( ) | Returns a String containing the ISO/IEC 14772 UTF-8 encoded value of x, y, comp and array. |
The SFNode object corresponds to a VRML SFNode field.
sfNodeObjectName = new SFNode(String vrmlstring)
where
vrmlstring is an ISO 10646 string containing a legal VRML string as described in <IP_ADDRESS>, MFNode createVrmlFromString( SFString vrmlSyntax ). If the string produces other than one top-level node, the results are undefined. The string may contain any number of ROUTE's, PROTO's, and EXTERNPROTO's in accordance with <IP_ADDRESS>, MFNode createVrmlFromString( SFString vrmlSyntax ).
Each node may assign values to its eventIns and obtain the last output values of its eventOuts using the sfNodeObjectName.eventName syntax.
The function of the SFNode object is described in Table C.6.
| Function | Description |
|---|---|
| String toString( ) | Returns the VRML UTF-8 string that, if parsed as the value of an SFNode field, would produce this node. If the browser is unable to reproduce this node, the name of the node followed by the open brace and close brace shall be returned. Additional information may be included as one or more VRML comment strings. |
The SFRotation object corresponds to a VRML SFRotation field. It has four numeric properties: x, y, z (the axis of rotation) and angle. These may also be addressed by indices [0] through [3].
sfRotationObjectName = new SFRotation(numeric x, numeric y, numeric z, numeric angle)
where
x, y, and z are the axis of the rotation. angle is the angle of the rotation (in radians). Missing values default to 0.0, except y, which defaults to 1.0.
sfRotationObjectName = new SFRotation(SFVec3f axis, numeric angle)
where
axis is the axis of rotation. angle is the angle of the rotation (in radians)
sfRotationObjectName = new SFRotation(SFVec3f fromVector, SFVec3f toVector)
where
fromVector and toVector are normalized and the rotation value that would rotate from the fromVector to the toVector is stored in the object.
The properties of the SFRotation object are described in Table C.7.
| Property | Description |
|---|---|
| numeric x | first value of the axis vector |
| numeric y | second value of the axis vector |
| numeric z | third value of the axis vector |
| numeric angle | the angle of the rotation (in radians) |
The functions of the SFRotation object are described in Table C.8.
| Function | Description |
|---|---|
| SFVec3f getAxis( ) | Returns the axis of rotation. |
| SFRotation inverse( ) | Returns the inverse of this object's rotation. |
| SFRotation multiply(SFRotation rot) | Returns the object multiplied by the passed value. |
| SFVec3f multVec(SFVec3f vec) | Returns the value of vec multiplied by the matrix corresponding to this object's rotation. |
| void setAxis(SFVec3f vec) | Sets the axis of rotation to the value passed in vec. |
| SFRotation slerp(SFRotation dest, numeric t) | Returns the value of the spherical linear interpolation between this object's rotation and dest at value 0 <= t <= 1. For t = 0, the value is this object's rotation. For t = 1, the value is dest. |
| String toString( ) | Returns a String containing the ISO/IEC 14772 UTF-8 encoded value of x, y, z, and angle. |
The SFVec2f object corresponds to a VRML SFVec2f field. Each component of the vector can be accessed using the x and y properties or using C-style array dereferencing (i.e., sfVec2fObjectName[0] or sfVec2fObjectName[1]).
sfVec2fObjectName = new SFVec2f(numeric x, numeric y)
Missing values default to 0.0.
The properties of the SFVec2f object are described in Table C.9.
| Property | Description |
| numeric x | First value of the vector. |
| numeric y | Second value of the vector. |
The functions of the SFVec2f object are described in Table C.10.
| Function | Description |
|---|---|
| SFVec2f add(SFVec2f vec) | Returns the value of the passed value added, component-wise, to the object. |
| SFVec2f divide(numeric n) | Returns the value of the object divided by the passed value. |
| numeric dot(SFVec2f vec) | Returns the dot product of this vector and the passed value. |
| numeric length( ) | Returns the geometric length of this vector. |
| SFVec2f multiply(numeric n) | Returns the value of the object multiplied by the passed value. |
| SFVec2f normalize( ) | Returns the object converted to unit length . |
| SFVec2f subtract(SFVec2f vec) | Returns the value of the passed value subtracted, component-wise, from the object. |
| String toString( ) | Returns a String containing the ISO/IEC 14772 UTF-8 encoded value of x and y. |
The SFVec3f object corresponds to a VRML SFVec3f field. Each component of the vector can be accessed using the x, y, and z properties or using C-style array dereferencing (i.e., sfVec3fObjectName[0], sfVec3fObjectName[1] or sfVec3fObjectName[2]).
sfVec3fObjectName = new SFVec3f(numeric x, numeric y, numeric z)
Missing values default to 0.0.
The properties of the SFVec3f object are described in Table C.11.
| Property | Description |
| numeric x | First value of the vector. |
| numeric y | Second value of the vector. |
| numeric z | Third value of the vector. |
The functions of the SFVec3f object are described in Table C.12.
| Function | Description |
|---|---|
| SFVec3f add(SFVec3f vec) | Returns the value of the passed value added, component-wise, to the object. |
| SFVec3f cross(SFVec3f vec) | Returns the cross product of the object and the passed value. |
| SFVec3f divide(numeric n) | Returns the value of the object divided by the passed value. |
| numeric dot(SFVec3f vec) | Returns the dot product of this vector and the passed value. |
| numeric length( ) | Returns the geometric length of this vector. |
| SFVec3f multiply(numeric n) | Returns the value of the object multiplied by the passed value. |
| SFVec3f negate( ) | Returns the value of the component-wise negation of the object. |
| SFVec3f normalize( ) | Returns the object converted to unit length . |
| SFVec3f subtract(SFVec3f vec) | Returns the value of the passed value subtracted, component-wise, from the object. |
| String toString( ) | Returns a String containing the ISO/IEC 14772 UTF-8 encoded value of x, y, and z. |
The MFColor object corresponds to a VRML MFColor field. It is used to store a one-dimensional array of SFColor objects. Individual elements of the array can be referenced using the standard C-style dereferencing operator (e.g., mfColorObjectName[index], where index is an integer-valued expression with 0 <= index < length and length is the number of elements in the array). Assigning to an element with index >= length results in the array being dynamically expanded to contain length elements. All elements not explicitly initialized are set to SFColor (0, 0, 0).
mfColorObjectName = new MFColor(SFColor c1, SFColor c2, ...)
The creation function shall initialize the array using 0 or more SFColor-valued expressions passed as parameters.
The property of the MFColor object is described in Table C.13.
| Property | Description |
|---|---|
| numeric length | property for getting/setting the number of elements in the array. |
The single function of the MFColor object is described in Table C.14.
| Function | Description |
|---|---|
| String toString( ) | Returns a String containing the ISO/IEC 14772 utf 8 encoded value of the MFColor array. |
The MFFloat object corresponds to a VRML MFFloat field. It is used to store a one-dimensional array of SFFloat values. Individual elements of the array can be referenced using the standard C-style dereferencing operator (e.g., mfFloatObjectName[index], where index is an integer-valued expression with 0 <= index < length and length is the number of elements in the array). Assigning to an element with index >= length results in the array being dynamically expanded to contain length elements. All elements not explicitly initialized are set to 0.0.
mfFloatObjectName = new MFFloat(numeric n1, numeric n2, ...)
where
The creation function shall initialize the array using 0 or more numeric-valued expressions passed as parameters.
The property of the MFFloat object is described in Table C.15.
| Property | Description |
| numeric length | property for getting/setting the number of elements in the array. |
The single function of the MFFloat object is described in Table C.16.
| Function | Description |
| String toString( ) | Returns a String containing the ISO/IEC 14772 utf 8 encoded value of the MFFloat array. |
The MFInt32 object corresponds to a VRML MFInt32 field. It is used to store a one-dimensional array of SFInt32 values. Individual elements of the array can be referenced using the standard C-style dereferencing operator (e.g., mfInt32ObjectName[index], where index is an integer-valued expression with 0 <= index < length and length is the number of elements in the array). Assigning to an element with index >= length results in the array being dynamically expanded to contain length elements. All elements not explicitly initialized are set to 0.
mfInt32ObjectName = new MFInt32(numeric n1, numeric n2, ...)
where
The creation function shall initialize the array using 0 or more integer-valued expressions passed as parameters.
The property of the MFInt32 object is described in Table C.17.
| Property | Description |
|---|---|
| numeric length | property for getting/setting the number of elements in the array. |
The single function of the MFInt32 object is described in Table C.18.
| Function | Description |
| String toString( ) | Returns a String containing the ISO/IEC 14772 utf 8 encoded value of the MFInt32 array. |
The MFNode object corresponds to a VRML MFNode field. It is used to store a one-dimensional array of SFNode objects. Individual elements of the array can be referenced using the standard C-style dereferencing operator (e.g., mfNodeObjectName[index], where index is an integer-valued expression with 0 <= index < length and length is the number of elements in the array). Assigning to an element with index >= length results in the array being dynamically expanded to contain length elements. All elements not explicitly initialized are set to NULL.
mfNodeObjectName = new MFNode(SFNode n1, SFNode n2, ...)
where
The creation function shall initialize the array using 0 or more SFNode-valued expressions passed as parameters.
The property of the MFNode object is described in Table C.19.
| Property | Description |
|---|---|
| numeric length | property for getting/setting the number of elements in the array. |
The single function of the MFNode object is described in Table C.20.
| Function | Description |
|---|---|
| String toString( ) | Returns the VRML UTF-8 string that, if parsed as the value of a MFNode field, would produce this array of nodes. If the browser is unable to reproduce this node, the name of the node followed by the open brace and close brace shall be returned. Additional information may be included as one or more VRML comment strings |
The MFRotation object corresponds to a VRML MFRotation field. It is used to store a one-dimensional array of SFRotation objects. Individual elements of the array can be referenced using the standard C-style dereferencing operator (e.g., mfRotationObjectName[index], where index is an integer-valued expression with 0 <= index < length and length is the number of elements in the array). Assigning to an element with index >= length results in the array being dynamically expanded to contain length elements. All elements not explicitly initialized are set to SFRotation (0, 0, 1, 0).
mfRotationObjectName = new MFRotation(SFRotation r1, SFRotation r2, ...)
where
The creation function shall initialize the array using 0 or more SFRotation-valued expressions passed as parameters.
The property of the MFRotation object is described in Table C.21.
| Property | Description |
|---|---|
| numeric length | property for getting/setting the number of elements in the array. |
The single function of the MFRotation object is described in Table C.22.
| Function | Description |
|---|---|
| String toString( ) | Returns a String containing the ISO/IEC 14772 utf 8 encoded value of the MFRotation array. |
The MFString object corresponds to a VRML 2.0 MFString field. It is used to store a one-dimensional array of String objects. Individual elements of the array can be referenced using the standard C-style dereferencing operator (e.g., mfStringObjectName[index], where index is an integer-valued expression with 0 <= index < length and length is the number of elements in the array). Assigning to an element with index >= length results in the array being dynamically expanded to contain length elements. All elements not explicitly initialized are set to the empty string.
mfStringObjectName = new MFString(String s1, String s2, ...)
where
The creation function shall initialize the array using 0 or more String-valued expressions passed as parameters.
The property of the MFString object is described in Table C.23.
| Property | Description |
|---|---|
| numeric length | property for getting/setting the number of elements in the array. |
The single function of the MFString object is described in Table C.24.
| Function | Description |
|---|---|
| String toString( ) | Returns a String containing the ISO/IEC 14772 utf 8 encoded value of the MFString array. |
The MFTime object corresponds to a VRML MFTime field. It is used to store a one-dimensional array of SFTime values. Individual elements of the array can be referenced using the standard C-style dereferencing operator (e.g., mfTimeObjectName[index], where index is an integer-valued expression with 0 <= index < length and length is the number of elements in the array). Assigning to an element with index >= length results in the array being dynamically expanded to contain length elements. All elements not explicitly initialized are set to 0.0.
mfTimeObjectName = new MFTime(numeric n1, numeric n2, ...)
The creation function shall initialize the array using 0 or more numeric-valued expressions passed as parameters.
The property of the MFTime object is described in Table C.25.
| Property | Description |
|---|---|
| numeric length | property for getting/setting the number of elements in the array. |
The function of the MFTime object is described in Table C.26.
| Function | Description |
|---|---|
| String toString( ) | Returns a String containing the ISO/IEC 14772 utf 8 encoded value of the MFTime array. |
The MFVec2f object corresponds to a VRML MFVec2f field. It is used to store a one-dimensional array of SFVec2f objects. Individual elements of the array can be referenced using the standard C-style dereferencing operator (e.g., mfVec2fObjectName[index], where index is an integer-valued expression with 0 <= index < length and length is the number of elements in the array). Assigning to an element with index >= length results in the array being dynamically expanded to contain length elements. All elements not explicitly initialized are set to SFVec2f (0, 0).
mfVec2fObjectName = new MFVec2f(SFVec2f v1, SFVec2f v2, ...)
The creation function shall initialize the array using 0 or more SFVec2f-valued expressions passed as parameters.
The property of the MFVec2f object is described in Table C.27.
| Property | Description |
|---|---|
| numeric length | property for getting/setting the number of elements in the array. |
The single function of the MFVec2f object is described in Table C.28.
| Function | Description |
|---|---|
| String toString( ) | Returns a String containing the ISO/IEC 14772 utf 8 encoded value of the MFVec2f array. |
The MFVec3f object corresponds to a VRML MFVec3f field. It is used to store a one-dimensional array of SFVec3f objects. Individual elements of the array can be referenced using the standard C-style dereferencing operator (e.g., mfVec3fObjectName[index], where index is an integer-valued expression with 0 <= index < length and length is the number of elements in the array). Assigning to an element with index >= length results in the array being dynamically expanded to contain length elements. All elements not explicitly initialized are set to SFVec3f (0, 0, 0).
mfVec3fObjectName = new MFVec3f(SFVec3f v1, SFVec3f v2,...)
where
The creation function shall initialize the array using 0 or more SFVec3f-valued expressions passed as parameters.
The property of the MFVec3f object is described in Table C.29.
| Property | Description |
|---|---|
| numeric length | property for getting/setting the number of elements in the array. |
The single function of the MFVec3f object is described in Table C.30.
| Function | Description |
|---|---|
| String toString( ) | Returns a String containing the ISO/IEC 14772 utf 8 encoded value of the MFVec3f array. |
The VrmlMatrix object provides many useful functions for performing manipulations on 4x4 matrices. Each of element of the matrix can be accessed using C-style array dereferencing (i.e., vrmlMatrixObjectName[0][1] is the element in row 0, column 1). The results of dereferencing a VrmlMatrix object using a single index (i.e., vrmlMatrixObjectName[0]) are undefined. The translation elements are in the fourth row. For example, vrmlMatrixObjectName[3][0] is the X offset.
VrmlMatrixObjectName = new VrmlMatrix(
numeric
f11, numeric f12, numeric f13, numeric f14,
numeric
f21, numeric f22, numeric f23, numeric f24,
numeric
f31, numeric f32, numeric f33, numeric f34,
numeric
f41, numeric f42, numeric f43, numeric f44)
A new matrix initialized with the values in f11 through f44 is created and returned. The translation values will be f41, f42, and f43.
VrmlMatrixObjectName = new VrmlMatrix( )
A new matrix initialized with the identity matrix is created and returned.
The VRMLMatrix object has no properties.
The functions of the VRMLMatrix object are listed in Table C.31.
| Function | Description |
|---|---|
| void setTransform(SFVec3f translation, SFRotation rotation, SFVec3f scale, SFRotation scaleOrientation, SFVec3f center) |
Sets the VrmlMatrix to the passed values. Any of the rightmost parameters may be omitted. The function has 0 to 5 parameters. For example, specifying 0 parameters results in an identity matrix while specifying 1 parameter results in a translation and specifying 2 parameters results in a translation and a rotation. Any unspecified parameter is set to its default as specified for the Transform node. |
| void getTransform(SFVec3f translation, SFRotation rotation, SFVec3f scale) |
Decomposes the VrmlMatrix and returns the components in the passed translation, rotation, and scale objects. The types of these passed objects is the same as the first three arguments to setTransform. If any passed object is not sent, or if the null object is sent for any value, that value is not returned. Any projection or shear information in the matrix is ignored. |
| VrmlMatrix inverse( ) | Returns a VrmlMatrix whose value is the inverse of this object. |
| VrmlMatrix transpose( ) | Returns a VrmlMatrix whose value is the transpose of this object. |
| VrmlMatrix multLeft(VrmlMatrix matrix) | Returns a VrmlMatrix whose value is the object multiplied by the passed matrix on the left. |
| VrmlMatrix multRight(VrmlMatrix matrix) | Returns a VrmlMatrix whose value is the object multiplied by the passed matrix on the right. |
| SfVec3f multVecMatrix(SFVec3f vec) | Returns an SFVec3f whose value is the object multiplied by the passed row vector. |
| SFVec3f multMatrixVec(SFVec3f vec) | Returns an SFVec3f whose value is the object multiplied by the passed column vector. |
| String toString( ) | Returns a String containing the values of the VrmlMatrix. |
The following is an example of a Script node which determines whether a given colour contains a lot of red. The Script node exposes a Color field, an eventIn, and an eventOut:
DEF Example_1 Script { field SFColor currentColor 0 0 0 eventIn SFColor colorIn eventOut SFBool isRed url "javascript: function colorIn(newColor, ts) { // This function is called when a colorIn event is received currentColor = newColor; } function eventsProcessed( ) { if (currentColor[0] >= 0.5) // if red is at or above 50% isRed = true; }" }
Details on when the functions defined in Example_1 Script are called are provided in 4.12.2, Script execution.
The following example illustrate use of the createVrmlFromURL( ) function:
DEF Example_2 Script { field SFNode myself USE Example_2 field SFNode root USE ROOT_TRANSFORM field MFString url "foo.wrl" eventIn MFNode nodesLoaded eventIn SFBool trigger_event url "javascript: function trigger_event(value, ts){ // do something and then fetch values Browser.createVRMLFromURL(url, myself, 'nodesLoaded'); } function nodesLoaded(value, timestamp){ if (value.length > 5) { // do something more than 5 nodes in this MFNode... } root.addChildren = value; }" }
The following example illustrates use of the addRoute( ) function:
DEF Sensor TouchSensor {} DEF Baa Script { field SFNode myself USE Baa field SFNode fromNode USE Sensor eventIn SFBool clicked eventIn SFBool trigger_event url "javascript: function trigger_event(eventIn_value){ // do something and then add routing Browser.addRoute(fromNode, 'isActive', myself, 'clicked'); } function clicked(value){ // do something }" }
The following example illustrates assigning with references and assigning by copying:
Script { eventIn SFBool eI eventOut SFVec3f eO field MFVec3f f [] url "javascript: function eI( ) { eO = new SFVec3f(0,1,2); // 'eO' contains the value // (0,1,2) which will be sent // out when the function // is complete. a = eO; // 'a' references the eventOut // 'e0' b = a; // 'a' and 'b' now both reference // 'e0' a.x = 3; // 'e0' will send (3,1,2) at the // end of the function f[1] = a; // 'f[1]' contains the value // (3,1,2). c = f[1]; // 'c' reference the field // element f[1] f[1].y = 4; // 'f[1]' and 'c' both contain // (3,4,2) }" }
The following example illustrates uses of the fields and functions of SFVec3f and MFVec3f:
DEF SCR-VEC3F Script { eventIn SFTime touched1 eventIn SFTime touched2 eventIn SFTime touched3 eventIn SFTime touched4 eventOut SFVec3f new_translation field SFInt32 count 1 field MFVec3f verts [] url "javascript: function initialize( ) { verts[0] = new SFVec3f(0, 0, 0); verts[1] = new SFVec3f(1, 1.732, 0); verts[2] = new SFVec3f(2, 0, 0); verts[3] = new SFVec3f(1, 0.577, 1.732); } function touched1 (value) { new_translation = verts[count]; // move sphere around tetra count++; if (count >= verts.length) count = 1; } function touched2 (value) { var tVec; tVec = new_translation.divide(2); // Zeno's paradox to origin new_translation = new_translation.subtract(tVec); } function touched4 (value) { new_translation = new_translation.negate( ); } function touched3 (value) { var a; a = verts[1].length( ); a = verts[3].dot(verts[2].cross(verts[1])); a = verts[1].x; new_translation = verts[2].normalize( ); new_translation = new_translation.add(new_translation); }" }
Questions
or comments.
Copyright © 1997 The
VRML Consortium Incorporated.
http://www.vrml.org/Specifications/VRML97/part1/javascript.html


Jazz-ify Events Management,
Office 1234,
SaltLake Tower,
P.O. Box 123456,
Kolkata,
West Bengal.
Phone : +9804628251,
E-Mail<EMAIL_ADDRESS>Jazz-ify Events Management,
Office 1234,
SaltLake Tower,
P.O. Box 123456,
Kolkata,
West Bengal.
Phone : +9804628251,
E-Mail<EMAIL_ADDRESS>@Copyright 2017 Jazz-ify Events Management. All Rights Reserved.
Website Designed By Jasbindar Singh.


Interface RecognizeResponseOrBuilder (2.0.0)
public interface RecognizeResponseOrBuilder extends MessageOrBuilder
Implements
MessageOrBuilderMethods
getResults(int index)
public abstract SpeechRecognitionResult getResults(int index)
Sequential list of transcription results corresponding to sequential portions of audio.
repeated .google.cloud.speech.v1p1beta1.SpeechRecognitionResult results = 2;
| Name | Description |
| index | int |
| Type | Description |
| SpeechRecognitionResult |
getResultsCount()
public abstract int getResultsCount()
Sequential list of transcription results corresponding to sequential portions of audio.
repeated .google.cloud.speech.v1p1beta1.SpeechRecognitionResult results = 2;
| Type | Description |
| int |
getResultsList()
public abstract List<SpeechRecognitionResult> getResultsList()
Sequential list of transcription results corresponding to sequential portions of audio.
repeated .google.cloud.speech.v1p1beta1.SpeechRecognitionResult results = 2;
| Type | Description |
| List<SpeechRecognitionResult> |
getResultsOrBuilder(int index)
public abstract SpeechRecognitionResultOrBuilder getResultsOrBuilder(int index)
Sequential list of transcription results corresponding to sequential portions of audio.
repeated .google.cloud.speech.v1p1beta1.SpeechRecognitionResult results = 2;
| Name | Description |
| index | int |
| Type | Description |
| SpeechRecognitionResultOrBuilder |
getResultsOrBuilderList()
public abstract List<? extends SpeechRecognitionResultOrBuilder> getResultsOrBuilderList()
Sequential list of transcription results corresponding to sequential portions of audio.
repeated .google.cloud.speech.v1p1beta1.SpeechRecognitionResult results = 2;
| Type | Description |
| List<? extends com.google.cloud.speech.v1p1beta1.SpeechRecognitionResultOrBuilder> |
getTotalBilledTime()
public abstract Duration getTotalBilledTime()
When available, billed audio seconds for the corresponding request.
.google.protobuf.Duration total_billed_time = 3;
| Type | Description |
| Duration | The totalBilledTime. |
getTotalBilledTimeOrBuilder()
public abstract DurationOrBuilder getTotalBilledTimeOrBuilder()
When available, billed audio seconds for the corresponding request.
.google.protobuf.Duration total_billed_time = 3;
| Type | Description |
| DurationOrBuilder |
hasTotalBilledTime()
public abstract boolean hasTotalBilledTime()
When available, billed audio seconds for the corresponding request.
.google.protobuf.Duration total_billed_time = 3;
| Type | Description |
| boolean | Whether the totalBilledTime field is set. |


{% extends "base.html" %} {% load bootstrap4 %} {%block content %}
No Projects have been posted for view yet


BCEL
Front Page
News and Status
Distributions
Documentation
Manual
FAQ
Get Involved
Projects
Project Documentation
Front Page
Project Info
Project Reports
JavaDocs
Source XReference
Development Process
BCEL Projects
Xalan
XSLT Compiler
ObjectScript
JBoss
Java Development Environment
for Emacs
Venus Application Publisher
SandMark: Software Watermarking for Java
jContractor - Design by contract
Byte code optimization
Gretel
- Residual Test Coverage Tool
Poor Man's Genericity
Mobile Code Security Through Java Byte-Code Modification
Portable Resource Accounting for Java
Funnel
Static analysis of class libraries
Kava: Reflective Java
one.world -
Programming for pervasive computing environments
Sally: Simple Aspect Language
AspectJ: Aspect-oriented Java
AOP ClassLoader Suite
Brakes: Thread serialization
Transformations for Model Checking Distributed Java Programs
Ozone Data base
Method tracing tool
JMangler
Barat compiler framework
Java code coverage tool for JUnit
Heap Usage Profiling
Prolog
JHEAT
Import Scrubber
jBackBrowse
Related Projects
JOIE: The Java Object Instrumentation Environment
Jasmin Assembler
BIT: Bytecode Instrumenting Tool
CFParse
JikesBT
gnu.bytecode package
JTrek


{% extends 'mapper/index.html' %} {% load static %} {% block content %} Job submitted Your job has been submitted with job_id: {{ jobid }} results/{{ jobid }} {% endblock %}
Job submitted
Your job has been submitted with job_id: {{ jobid }}
results/{{ jobid }}


Header that contains your site name, main navigation, search and other function links.
Usage
All .gov.sg digital services shall implement the Official Government Banner
(containing the Singapore Government Online Logo) across all pages.
Types
1) Default Masthead
{{default_masthead}}
{% highlight html %}{{default_masthead}}{% endhighlight %}
2) Masthead with language selector
If you require a language selector, add a select element
at the right side of the Masthead.
The Masthead language selector should be hidden in mobile view to prevent clashing with the masthead
text.
However, it should still be accessible in the navigation panel. For example, include the
language selector in the
main navigation and display it only on mobile views.
{{lang_selector_masthead}}
{% highlight html %}{{lang_selector_masthead}}{% endhighlight %}
Guidelines
Your Masthead should:
Contain the Singapore Government Logo.
It shall be positioned at the top left corner of the banner.
Include the official government site descriptor.
It shall state ‘A Singapore Government Agency Website’.
Be positioned at the top left corner of the web page


Word Find and Replace
Enter your sentence
Enter the word you want to replace here:
Enter the replacement word here:
Submit


Hi,
I want to use RFM12pi to receive messeges from my sensors (http://nathan.chantrell.net/tinytx-wireless-sensor) but I do not want to use emoncms.
Instead I want to feed the sensor values into the "fhem" home automation system.
As far as I understand the pre-assembled RFM12pi module comes with the firmware already loaded so I should be able to plug the module into my RPI and connect to it using a serial connection.
My first attempt was to use the "minicom" program by entering the following command:
minicom -b 9600 -o -D /dev/ttyAMA0
I can then enter the required setup commands to set my nodeID, frequency and group and I receive a dot as answer:
> 1i
.
> 4b
.
> 210g
.
so this seems to work (if I enter 4b before 1i I get "config failed" so this seems to make sense).
However I never see any messages from my sensor.
I also tried
> 1c
.
=> no messages received either.
Can anybody please tell me if I am doing something wrong at the receiving end? If not I will have to check whether my sensor is sending anything at all.
Any help is highly appreciated.
Thx, chris
Re: Howto Use RFM12pi without emoncms
Sounds ok from the receiving end, as long as you have the frequency and group set correctly you should start to receive messages in the minicom window.
Re: Howto Use RFM12pi without emoncms
It sounds like your sensors not transmitting. Make sure it's on the same frequency and network group as the rfm12pi. The led on the rfm12pi should flash when it receives data
Re: Howto Use RFM12pi without emoncms
Hello everybody!
I am experiencing the same exact problem...
I've tried to perfectly match the Arduino file from Chris and Minicom config without success (nothing happens in the minicom window and I see an "offline" in the bottom right - probably referred to its dialup part)
How did you (hopefully) solve it, chris? :)
If anybody else has hints I'd love it.
Re: Howto Use RFM12pi without emoncms
I've fought harder today (with no luck).
Deciding I've done something wrong with the programmer I've tried (being a total noob) to debug what's wrong using the only thing I can make: blink a led.
From minicom if I use "1l" or "0l" command the little RFM12Pi turns the led on and off so I *think* it's alive and kicking.
Ive configured it this way:
80 i16* g210 @ 433 MHz Lock: 1
On the TinyTX side I've tweaked a very little bit Nathan's code to see if everything was working and if the code was running.
The code I've added is between // led debug comments.
I've used led 0 because (strange) it corresponds to attiny pin 2, not used by nathan:
//----------------------------------------------------------------------------------------------------------------------
// TinyTX - An ATtiny84 and RFM12B Wireless Temperature & Humidity Sensor Node
// By Nathan Chantrell. For hardware design see http://nathan.chantrell.net/tinytx
//
// Using the DHT22 temperature and humidity sensor
//
// Licenced under the Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) licence:
// http://creativecommons.org/licenses/by-sa/3.0/
//
// Requires Arduino IDE with arduino-tiny core: http://code.google.com/p/arduino-tiny/
//----------------------------------------------------------------------------------------------------------------------
#include <DHT22.h> // https://github.com/nathanchantrell/Arduino-DHT22
#include <JeeLib.h> // https://github.com/jcw/jeelib
ISR(WDT_vect) { Sleepy::watchdogEvent(); } // interrupt handler for JeeLabs Sleepy power saving
#define myNodeID 16 // RF12 node ID in the range 1-30
#define network 210 // RF12 Network group
#define freq RF12_433MHZ // Frequency of RFM12B module
#define USE_ACK // Enable ACKs, comment out to disable
#define RETRY_PERIOD 5 // How soon to retry (in seconds) if ACK didn't come in
#define RETRY_LIMIT 5 // Maximum number of times to retry
#define ACK_TIME 10 // Number of milliseconds to wait for an ack
#define DHT22_PIN 10 // DHT sensor is connected on D10/ATtiny pin 13
#define DHT22_POWER 9 // DHT Power pin is connected on D9/ATtiny pin 12
DHT22 myDHT22(DHT22_PIN); // Setup the DHT
// led per il debug
int led = 0;
// led per il debug
//########################################################################################################################
//Data Structure to be sent
//########################################################################################################################
typedef struct {
int humidity; // Humidity reading
int supplyV; // Supply voltage
int temp; // Temperature reading
} Payload;
Payload tinytx;
// Wait a few milliseconds for proper ACK
#ifdef USE_ACK
static byte waitForAck() {
MilliTimer ackTimer;
while (!ackTimer.poll(ACK_TIME)) {
if (rf12_recvDone() && rf12_crc == 0 &&
rf12_hdr == (RF12_HDR_DST | RF12_HDR_CTL | myNodeID))
return 1;
}
return 0;
}
#endif
//--------------------------------------------------------------------------------------------------
// Send payload data via RF
//-------------------------------------------------------------------------------------------------
static void rfwrite(){
#ifdef USE_ACK
for (byte i = 0; i <= RETRY_LIMIT; ++i) { // tx and wait for ack up to RETRY_LIMIT times
rf12_sleep(-1); // Wake up RF module
while (!rf12_canSend())
rf12_recvDone();
rf12_sendStart(RF12_HDR_ACK, &tinytx, sizeof tinytx);
rf12_sendWait(2); // Wait for RF to finish sending while in standby mode
byte acked = waitForAck(); // Wait for ACK
rf12_sleep(0); // Put RF module to sleep
if (acked) { return; } // Return if ACK received
Sleepy::loseSomeTime(RETRY_PERIOD * 1000); // If no ack received wait and try again
}
#else
rf12_sleep(-1); // Wake up RF module
while (!rf12_canSend())
rf12_recvDone();
rf12_sendStart(0, &tinytx, sizeof tinytx);
rf12_sendWait(2); // Wait for RF to finish sending while in standby mode
rf12_sleep(0); // Put RF module to sleep
return;
#endif
}
//--------------------------------------------------------------------------------------------------
// Read current supply voltage
//--------------------------------------------------------------------------------------------------
long readVcc() {
bitClear(PRR, PRADC); ADCSRA |= bit(ADEN); // Enable the ADC
long result;
// Read 1.1V reference against Vcc
#if defined(__AVR_ATtiny84__)
ADMUX = _BV(MUX5) | _BV(MUX0); // For ATtiny84
#else
ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); // For ATmega328
#endif
delay(2); // Wait for Vref to settle
ADCSRA |= _BV(ADSC); // Convert
while (bit_is_set(ADCSRA,ADSC));
result = ADCL;
result |= ADCH<<8;
result = 1126400L / result; // Back-calculate Vcc in mV
ADCSRA &= ~ bit(ADEN); bitSet(PRR, PRADC); // Disable the ADC to save power
return result;
}
//########################################################################################################################
void setup() {
// Led per il debug
pinMode(led, OUTPUT);
// Led per il debug
rf12_initialize(myNodeID,freq,network); // Initialize RFM12 with settings defined above
rf12_sleep(0); // Put the RFM12 to sleep
pinMode(DHT22_POWER, OUTPUT); // set power pin for DHT to output
PRR = bit(PRTIM1); // only keep timer 0 going
ADCSRA &= ~ bit(ADEN); bitSet(PRR, PRADC); // Disable the ADC to save power
}
void loop() {
// Led per il debug
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000);
// Led per il debug
digitalWrite(DHT22_POWER, HIGH); // turn DHT sensor on
DHT22_ERROR_t errorCode;
Sleepy::loseSomeTime(2000); // Sensor requires minimum 2s warm-up after power-on.
errorCode = myDHT22.readData(); // read data from sensor
if (errorCode == DHT_ERROR_NONE) { // data is good
tinytx.temp = (myDHT22.getTemperatureC()*100); // Get temperature reading and convert to integer, reversed at receiving end
tinytx.humidity = (myDHT22.getHumidity()*100); // Get humidity reading and convert to integer, reversed at receiving end
tinytx.supplyV = readVcc(); // Get supply voltage
rfwrite(); // Send data via RF
}
digitalWrite(DHT22_POWER, LOW); // turn DS18B20 off
Sleepy::loseSomeTime(1000); //JeeLabs power save function: enter low power mode for 60 seconds (valid range 16-65000 ms)
}
This
This way I see that the led works so the code gets executed.Nothing appears on the minicom anyway...What is wrong?
Re: Howto Use RFM12pi without emoncms
Hi guys,
i'm trying to do exactly the same thing (other sensors, and with a beaglebone black).
when I began, i encounter the same problem : nothing appears with "minicom -b9600 -D/dev/ttyO1"
Then i decide to flash the RFM12Pi's firmware.with one that is a bit different : https://github.com/mharizanov/RFM2Pi/blob/master/firmware/Full_RF12demo_...
see informations on my blog (in French) : http://mymiscellaneoustricks.wordpress.com/
So now i can see packet into minicom...in fact lot and lot of noise.
The next step is to "isolate" datas that concern my sensors. For that i had supposed that i can filter my view by select specific Network Group, but I have no idea of the one used by my sensors.
Help would be appreciated.
Re: Howto Use RFM12pi without emoncms
Hi, Docin!
I'd be glad to share energies but I'm still stuck.
I've downloaded the firmware you suggest on the RFM12Pi and tried to see if in minicom I get data...
Nothing happens there.
What should I do?
I've prepared my TinyTX uploading the dht22 code on the attiny and followed your suggestion about RFM12Pi: what is next?
Thanks,
D.
Re: Howto Use RFM12pi without emoncms
hi ltpitt,
Re: Howto Use RFM12pi without emoncms
When and where did you download your jeelib library from?
For the past 12 days there's been an urgent "feature" being developed in the Jeelib site called,
"Reducing RAM usage for the ATTiny84" http://jeelabs.net/issues/436
Re: Howto Use RFM12pi without emoncms
@Docin
I *think* it is ttyAMA0 (to use minicom I digit: minicom -b 9600 -o -D /dev/ttyAMA0)
Yessir! I've used the firmware in your link and updated it with avrdude using my usbtinyisp.
In minicom I see:
80 i16* g210 @ 433 MHz Lock: 1
Should I digit something in minicom to activate retrieval or data should simply appear in it?
@ukmoose
I got jeelib from sourceforge 15 days ago (more or less)...
If you know of a good link to download a working copy of it I'd be really happy :)
Re: Howto Use RFM12pi without emoncms
@ltpitt
okay dokey! Your RFM12Pi module in listen for data only into the Network Group #210.
Simply type "0g" (zero) and it will listen for all Network groups.
Re: Howto Use RFM12pi without emoncms
@docin
Sadly no good news :(
The group specified in Nathan's code for dht22 (https://github.com/nathanchantrell/TinyTX/blob/master/TinyTX_DHT22/TinyT...) specifies group 210.
I've tried to select all groups like suggested but I get nothing...
Just the normal "help" minicom screen.
How can I track down the problem?
Re: Howto Use RFM12pi without emoncms
Put some print statements in the code, look at the serial port on your arduino.
If there's nothing being transmitted there's nothing for the RFM12Pi to recieve.
Re: Howto Use RFM12pi without emoncms
This is really interesting.
I use an attiny84 and I have to check for its serial output...
Being totally new to the subject the only way I knew to check for information was to change the code like I did a few replies before.
I'll investigate more about the print statements in arduino and check better for what nathan's script sends to the RFM12Pi.
Thanks for the tip: I'll let you guys know :)
Re: Howto Use RFM12pi without emoncms
I am trying to learn more about the subject and I've read something that I didn't love:
http://harizanov.com/2012/08/setting-up-arduino-ide-for-working-with-att...
"I program the little guys with an USBTiny ISP programmer, just be careful when you program them and have 3.3V components on the board as well, such as the RFM12B module. Most ISP programmers (like the USBTiny ) do have a jumper that when removed does not power the board with 5V, thus you can use a battery or other 3.3V power source and not fry the other components."
This means that if I've used the usbtinyISP (with the jumper connected) to change firmware on my RFM12Pi I've fried it? :(
How can I check if I've killed it?
Re: Howto Use RFM12pi without emoncms
Hi everyone...
Can someone please be so kind to write me how to configure the RFM12pi to receive all signals on the 433 and show what's received on the screen?
I tried:
minicom -b 9600 -o -D /dev/ttyAMA0
Then I see minicom and I configure it pressing:
4b and 0g
I should now receive from all devices sending data on 433 mhz, right?
Why nothing happens?
Should I press something?
Re: Howto Use RFM12pi without emoncms
Yes your minicom setup appears to be correct but without seeing what you can see it's difficult to tell if it is correct.
In general if you are not receiving data on minicom
Have you made sure that no other process is using the serial port? Follow the instructions on this page: http://www.hobbytronics.co.uk/raspberry-pi-serial-port
Rather than opening up the RFM12Pi to receive everything why not configure it to receive data if it is being broadcast from the TinyTX? Use the same network group but a DIFFERENT node ID as explained here http://openenergymonitor.org/emon/buildingblocks/rfm12b2
Why are you so confident that the problem lies with the rfm12Pi? Rather than your TinyTx?
Have you double checked that the frequency of your RFM12B hardware is 433MHz?
Have you double checked that the aerial is the right length?
Have you double checked the solder joints are all good on the RFM12B?
Re: Howto Use RFM12pi without emoncms
Hi there and thanks for your time, again :)
I've been trying to follow your suggestions:
Done as instructed (was already set this way)
I have tried g0, g210 and several groups with lucky guesses
Aerial should be the right lenght (433mhz): 165mm
I will post screenshots so maybe it's easier to understand what am I doing wrong...
I've asked Nathan how to debug TinyTX and he suggested me to use a specific test script.
I downloaded it and compiled it in arduino:
https://dl.dropboxusercontent.com/u/3900156/arduino.png
Then I flashed it on the attiny with avrdude (notice warnings: are those problems?):
https://dl.dropboxusercontent.com/u/3900156/avrdude.png
Then I assembled my little tinytx, feed it with 3.5 volts (I have nothing to feed it 3.3 as suggested) and opened minicom with this setup:
https://dl.dropboxusercontent.com/u/3900156/minicom.png
How can I check that? Forgive my inexperience... I can use a tester but... What should I check?

I ran on the top of the hill to yell and cry until I passed out.
God bless everyone.
Re: Howto Use RFM12pi without emoncms
Hi ltpitt,
I have a problem similar to your's and am curious as to how you got it working!
Can you please share your solution?
Edit:
I have tried all of the above suggestions, but with no success.
The activity LED on the RFM12PI lights up on boot, as I have read elsewhere it should, so I suppose that the board is in functional condition.
Further, I have a wireless cooking thermometer that runs on the same frequency (4: 433MHz). I assume that I should be able to intercept its packages using group 0, but I receive nothing still.
When I try to transmit to the RFM12PI using either a TinyTX3 or the sensor part of the cooker thermometer the status LED on the RFM12PI does not light up at all.
I have not even once seen minicom report being online, it is always offline.
-----
Best regards!
Re: Howto Use RFM12pi without emoncms
In my case very serious attention had to be spent on the TinyTX side.
I had to get a 3.3v converter (https://www.sparkfun.com/products/10967) to be sure that the little guy was fed with the right amount of energy and I had to check that it was working using the test code included in TinyTX github (here: https://github.com/nathanchantrell/TinyTX/blob/master/TinyTX_SendTest/TinyTX_SendTest.ino)
Once done all of this (including a few lolvely problems with placing upside down the attiny on the TinyTX) the two little beasts finally decided to talk to each other.
This happened ONLY in the same room because I built a terrible antenna for TinyTX (now I'm buying a rubber duck or similar) so be sure that you are VERY close to the pi when doing your tests.
In my experience the RFM12Pi listens ONLY to TinyTX and not to any 433mhz device in my house.
Probably poor configuration on my side but that's what I experienced.
So I could put the dht22 into the game, flash back the right code for dht22 and write a silly python script to decode its signal (Nathan was of great help and on his site you find marvellous information: http://nathan.chantrell.net/tinytx-wireless-sensor/).
If you need the code to read dht22 without emoncms I put my horrible (but working) script on github so you can use it as start :)
https://github.com/ltpitt/tinytx-dht22-raspberrypi/blob/master/dht22.py
If I can be of help I'm here.
Re: Howto Use RFM12pi without emoncms
Hi ltpitt,
Thank you very much for your reply!
I do not have a voltage divider, but am using the 3.3v output of an Arduino Uno, although I see on the Arduino forum that a voltage divider might be required anyway.
I have tried with the RPI and TinyTX3 right next to each other using the TinyTX SendTest program from Nathan, but with no luck.
I have started a separate thread for my problems: http://openenergymonitor.org/emon/node/5094, so we can continue our discussions there.
Best regards
- Anders
Re: Howto Use RFM12pi without emoncms
hello,
I'm still in stuck with my RFM12Pi
For a reason I ignore, I receive too many paccket (i'm flooded)
Connecting with minicom is okay
The help banner gave me the following output:
Available commands:
<nn> i - set node ID (standard node ids are 1..30)
<n> b - set MHz band (4 = 433, 8 = 868, 9 = 915)
<nnn> g - set network group (RFM12 only allows 212, 0 = any)
<n> c - set collect mode (advanced, normally 0)
t - broadcast max-size test packet, request ack
...,<nn> a - send data packet to node <nn>, request ack
...,<nn> s - send data packet to node <nn>, no ack
<n> l - turn activity LED on PB1 on or off
<n> q - set quiet mode (1 = don't report bad packets)
<n> x - set reporting format (0 = decimal, 1 = hex)
123 z - total power down, needs a reset to start up again
Remote control commands:
<hchi>,<hclo>,<addr>,<cmd> f - FS20 command (868 MHz)
<addr>,<dev>,<on> k - KAKU command (433 MHz)
If I select the zero group, i'm flooded by lines of this type( around 5 lines per second)
ÿX G12 3DD00C0340FD1055A1D3F82385E72CFD79949F8EEB6653D59278D566C0E12FB8F4751F5FDE1A847103B990F8E02213FD1BA266108A085B31032F9F2B1376CB3F022AA5C791010004477E007E0C0000E534E400D86D6F005FB4010000E8030000000000003904F503C500C400C000C100C200C6000403070501013030300
X GE1 005276CD805F002542C54AE0BA057CD782A68CC3031C244F0042134D6910A2881B1048810782118AB820D257D15D799C1D57438B3E58C0B246F26ABECF961AB61BB6E277E5010004477E007E0C00000237E400E06E6F0036B4010000E8030000000000003904F503C500C400C000C100C200C60004030705010130304338
X G47 BD0E27FDF4432E1522B09131033BC0DF15C0E087FCFB2AF301C4E7983FA547C0EDE6587BB2CE06E1B4FF7F821DEACA890514EFDDB0C67C0E38968619FB70A53F54045B4FB4010004477E007E0C00000839E400DD6F6F0048B4010000E8030000000000003904F503C500C400C000C100C200C6000403070501013037303D
X GCA 2FCF97AEB30417C58F7897FED8646C00E0A78BA4EFC96C36A55A00D7C5002CFB49588420843CCFCEE65794BB35017E9825AC66FB8D4B4FF1CBCF508F8207337A40B91AF2A8010004477E007E0C0000C43AE400B6706F0005B4010000E8030000000000003904F503
X GD0 2A9EFD6C34FAA4247688A2AB77610004F1137EE35D6CD700DFE1E81E93EF7B05F690E623D635CF004436431DD0099C306160742AEFD65A63E05CF3C0E647BD924038158BBB010004477E007E0C0000A53BE40024716F0022B4010000E8030000000000003904F503C500C400C000C100C200C60004030705010130343032
X GB8 079F6E1D0908EA7EF2DC3D41572D3FF6E809C0B10DAC8B7555E0003B79E64F08D9B10324B15CEDD3C16648E3AFB7F8032D5967043B5B6ED37F385D7AE3CEB82BDCA5D9C8E3010004477E007E0C00007A3DE40009726F0021B4010000E8030000000000003904F503C500C400C000C100C200C600
X G12 081F106130CAA6368DBBCA49C00B42462AC397883CDCF1546F1FD843C4C3427D283DBC81EE30C7036F967A8454BB21ACA5DE2D1D98F70807BFAD08DC580E13FBB9B9A70332010004477E007E0C0000723EE40083726F000FB4010000E8030000
X G80 303661CCB29486C1EC91001F10641205830EE7D067985AC18EE7030039D1B0A6010600601C8ED6D5EFD44958FE4560258EA3A8285B1188302107A93FE933CF1F4708400E81010004477E007E0C0000433FE400E8726F0079B4010000E8030000000000003904F503C500C400C000C100C200C60004030705010130353030
X G88 871233EC26A0A249014DA0A17129842C2041A64E313CD40A0224A0C6151A4A070E12902EA42088AE46628FC98819C77D00501131EACBE14CC1AC24289074232991441E0203010004477E007E0C00009140E4008B736F0063B4010000E8030000000000003904F503C500
X G1B<PHONE_NUMBER>E58E08C7071822962F6E69865679C9C6940C6A04AC709900368608BAF3
X G22 39200044F411378CA4A6E4B620
X G2A 26A33A4EEB8A6AF3C56108ABDF9B8ED614BA2D8AFF824D8EE7860264BB0F8418CD78A4FA829610A43DC4BE14223E78604F258E18CFAF9C680314511514
X GA1 2CA7F2F41840E43D000222633A8AC1D5256640CEE8F6A028C6646B809FA8C1F90318FB60423E5DF0DD7451D728321C5C40D9B097C3B797614120CC03
X G30 5EB521C877B22E94C070830714EC1ED80619FD47581F200A177E8E1A5B885C1CFFEAE59092E9CA392C80BB83FA2638D85F2F0AD7506D370324A8D9D2F36104D448915384F1010004477E007E0C0000AE43E40010756F003AB4010000E8030000000000003904F503C500C400C000C100C200C60004030705010130303333
X GDA 98CC23341867A2324FB13A1DA23CD47939C17624AD9C2307D2C1C94576017C38307305863CD15DA69269E1DBE571187705F950934CCFDBE13181E333BAD8EF8002409243DA010004477E007E0C00002245E400C6756F0019B4010000E8030000000000003904F503C500C400C000C100C200C60004030705010143323033
X G7E 1A4DDEED84F04D840B99E7C96CBF2EFC77C93C40B251E0805471D0342EA533D3EB4486485C42A5B0F0364ABDE2C0067363E05589F49CF296FBD8079D95C4C225B48D566F1E010004477E007E0C00008946E40075766F004BB4010000E8030000000000003904F503C500C400C000C100C200C60004030705010133393038
X G89 304201BF47ADA44AC435920D88B88890E4E4FF4100740B4B91F8B0C23EB2BC3BDE10881C8640823D68733FBE0209C2631026829583610C30E82393D224502A900942768820010004477E007E0C00004D48E40052776F0020B4010000E8030000000000003904F503C500C400C000C100C200C6000403070501014334303B
X GA8 1DE453C6870227FA3681839EEC68BCBE0E33271364184E9410EEFDD3F31951215019603729009C2D1B701B862F46
X G12 126B920EE0C18B19AF98B38E5C645CADCFB571F2C0CEB90ABCC86AD41808395E8F1A4C349CA6F9B8BA46CA5B37CF76E705E885B1C569455E034F5C7956BB46221D3C81D187010004477E007E0C0000604AE40055786F0056B4010000E8030000000000003904F503C500C400C000C100C200C60004030705010130304332
X GF8 37E2AA517C023905B897610DB2F8F07866C326F80A6ACA42A1AE4E1013093112D4A5B09CC3110F298F0594833AA399FA04A13C6503F0485230D819400AE05140E000AE4A92010004477E007E0C0000894BE400E6786F004BB4010000E8030000000000003904
X GF0 BA57849ED0806008CEED8CF22C9FAE186E1A9471D6C190ECE31C4AA4782788DDB0A192586B5220A1BE1862BC40036015FB18120F6A777403FA44B2B4A096CE9A069E4318FE010004477E007E0C0000EB4CE40093796F0071B4010000E8030000000000
X G73 0502B0AF69D5AED76C026FCF0FD98CDE5D621CF6A62811EFE3F8F744DD0A8BB68CB69D1EEFF144D5F5DDEFBBB2F17A1CDE31124B39AAD9675F6F6F204F2C2FFF4F7843E8DE010004477E007E0C0000954EE400637A6F006FB4010000E8030000000000003904F503C500C400C000C100C200C60004030705010143323033
X G38 28
X G00 3F604DD3806C42A020898C00975E450829CB94A3944C389B40900A2036638C8977A10410E250EE000D6100C8883000118B099DF810548E6001EC2DE04E74412FC4A1891486010004477E007E0C00
X G98 30D0480A689619BE90082819A60C886808E16108A10403900DC0
X G0B 3023
X G91 82FA901088905404263A47CE01706F510040A88A4299200D4C
X GF7 2CB102027C802E88BA13B804803B914100C704AE50307FC2698086FE9C00005F2F286A440257600210B9E04055803197414ECF41A016614145E76A027C0C0BC21091901069010004477E007E0C00005C51E400BE7B6F0044B4010000E8030000000000003904F503C500C400C000C100C200C60004030705010130303030
X G8A 167A1B0FC2D6B9943A5C747FA39EBF16C3D26FE90E3EEDF71C3CACCFA87B47E90A834992AFF4B7C5FF1D178F736E7596E502D0D1A1A8B3F645AEF5
X GE4 B0964294CC06A77D124C62A22299361ADE42151EC12795DB25000F51D8FFACE2569894604460875159922E29007CEB8FC6E58EBCFFECEA4DA5A2AC2A7F0D5903230F4A8406010004477E007E0C00002253E4009C7C6F0019B4010000E8030000000000003904F503C500C400C000C100C200C60004030705010130313337
X G6F 82E3C15D3EC480BFC988112E8879021971111F34703AF332E2740A8087DC960BEC56FF3161DFF353961F121296C689A6311E7C0A36175DB6B901ACE580243E5DBC28A906DB010004477E007E0C00
X G97 1726383DF75B90B936F5C8D7A6DB46A86E037BDDB3CADA79FC3EF467980384B04005A38C06A57FA7234321081264FCFFA0A4E4
X G79 942277E997A15ADDE2AEBFBF75BB5E5020910EFD94A6A5CC523D165EE03EB19336E26217B9035E26E6FFE7A86A0AAF525B55D63E308DAA2EEA487084FB6ADF6EE0151D263D010004477E007E0C00002B56E400177E6F00
X G8F 18FC7F3855EEF277F925529CA5F4F7CF78FFB7CC73B47CD747FFA78E7EE15EC74ABF1E74E6F908DDE0284B132867963571ED2044508BF5873C36B734405EFD7513CCF7C068010004477E007E0C00001857E4008B7E6F0078B4010000E8030000000000003904F503C500C400C000C100C200C600040307050101303
Same result if I test it with my laptop at the top of a mountain :-(
Re: Howto Use RFM12pi without emoncms
I had the same Problem. RFM2Pi LED always on, nothing to see in minicom.
One week of flashing. trying, flashing, trying...... nothing Displayed in minicom.
Then I used an older Version of JeeLib in Arduino ..... works !!
Lets give it a try...
Re: Howto Use RFM12pi without emoncms
I'm in the oposed situation :mine is too verbose
Re: Howto Use RFM12pi without emoncms
hi,
I'm back.
Can you, please tell me which version of JeeLib you used for ?
How to check the version? I'm currently using the last one from their git


Perlin noise visualized in various ways. All noise is generated randomly, so outputs will change on refresh. Note that PerlinNoiseMachine is ES6, and will only run in browsers that support it, unless transpiled to ES5
Perlin noise output with only one input variable changing, visualized as a graph. Here, the x axis is the changing input variable, and the y axis is the output of the noise function.
Perlin noise output with two varying inputs. Each pixel's x and y coordinate are fed into the noise machine to generate the value for that pixel. Brighter pixels are higher return values.
3 separate 2D perlin noise outputs similar to the above, with the three noise channels being fed into the RGB values of each pixel.
Same as above, but using HSL colour space instead of RGB.


|
push_back
Syntax:
#include <vector> void push_back( const TYPE& val ); The push_back() function appends val to the end of the vector. For example, the following code puts 10 integers into a vector: vector<int> the_vector; for( int i = 0; i < 10; i++ ) { the_vector.push_back( i ); } When displayed, the resulting vector would look like this: 0 1 2 3 4 5 6 7 8 9 push_back() runs in constant time. |


## encoding: utf-8 <%inherit file="brave.core.template.master"/> <%block name="title">${account.username | h} — View Account%block> <%block name="header"> ${parent.header()} %block> <%block name="post"> ${parent.post()} <%include file="brave.core.character.template.charScripts"/> %block>
Welcome to the Brave Collective Core service. This site provides a way for you to securely provide EVE API keys and manage the applications you can use Core to authenticate.
Use the Authorized Applications links on the right-hand side to quickly jump to the application of your choice.
The listing of Authentication Attempts below will list all successful and unsuccessful attempts made to log into your account. If you notice suspicious activity please contact the IT Team by joining the chat channel "Brave IT Team" in game.


Invoices
public class Invoices: PayPalController
Use the /invoices
resource to create, update, and send invoices and invoice reminders. To manage invoices, you can also list invoices,
show details for invoices, delete draft invoices, and cancel sent invoices. You can also mark invoices as fully or partially paid, or as refunded.
Lastly, you can create QR codes for invoices that can be scanned, viewed, and paid by a mobile phone.
-
Declaration
Swift
public let container: Container
-
Value is
"invoicing/invoices"
.See
PayPalController.resource
for more information.Declaration
Swift
public let resource: String
-
Declaration
Swift
public required init(container: Container)
-
Creates a draft invoice. To move the invoice from a draft to payable state, you must send the invoice.
In the JSON request body, include invoice details including merchant information. The
invoice
object must include anitems
array.A successful request returns the HTTP
201 Created
status code and a JSON response body that shows invoice details.Note
The merchant that you specify in an invoice must have a PayPal account in good standing.
Parameters
invoice
The invoice data to save as a new invoice.
Return Value
The saved Invoice. If an error response was sent back instead, it gets converted to a Swift error and the future wraps that instead.
-
Lists invoices. To filter the invoices that appear in the response, you can specify one or more optional query parameters.
A successful request returns the HTTP
200 OK
status code and a JSON response body that lists invoices with details.Declaration
Swift
public func list(parameters: QueryParamaters = QueryParamaters()) -> Future<InvoiceList>
Parameters
parameters
The query string parameters that are passed with the request in the path. The query paramaters used are
page
,page_size
, andtotal_count_required
.Return Value
The list of invoices that match the query parameters passed in. If an error response was sent back instead, it gets converted to a Swift error and the future wraps that instead.
-
Fully updates an invoice, by ID. In the JSON request body, include a complete
invoice
object. This call does not support partial updates.A successful request returns the HTTP
200 OK
status code and a JSON response body that shows invoice details.Declaration
Parameters
id
The ID of the invoice to update.
body
The new data for the specified invoice.
notify
Indicates whether to send the invoice update notification to the merchant.
Return Value
The updated invoice object. If an error response was sent back instead, it gets converted to a Swift error and the future wraps that instead.
-
Shows details for an invoice, by ID.
A successful request returns the HTTP
200 OK
status code and a JSON response body that shows invoice details.Declaration
Swift
public func details(for invoiceID: String) -> Future<Invoice>
Parameters
invoiceID
The ID of the invoice for which to show details.
Return Value
The invoice data for the ID passed in. If an error response was sent back instead, it gets converted to a Swift error and the future wraps that instead.
-
Deletes invoices in the
DRAFT
orSCHEDULED
state, by ID. For invoices that have already been sent, you can cancel the invoice. After you delete a draft or scheduled invoice, you can no longer use it or show its details. However, you can reuse its invoice number.A successful request returns the HTTP
204 No Content
status code with no JSON response body.Declaration
Swift
public func deleteDraft(invoice id: String) -> Future<HTTPStatus>
Parameters
id
The ID of the draft invoice to delete.
Return Value
The HTTP status of the response, which will be 204 (No Content). If an error response was sent back instead, it gets converted to a Swift error and the future wraps that instead.
-
Cancels a sent invoice, by ID, and, optionally, sends a notification about the cancellation to the payer, merchant, and CC: emails.
A successful request returns the HTTP
204 No Content
status code with no JSON response body.Declaration
Swift
public func cancel(invoice id: String) -> Future<HTTPStatus>
Parameters
id
The ID of the invoice to cancel.
Return Value
The HTTP status of the response, which will be 204 (No Content). If an error response was sent back instead, it gets converted to a Swift error and the future wraps that instead.
-
Deletes an external payment, by invoice ID and transaction ID.
A successful request returns the HTTP
204 No Content
status code with no JSON response body.Declaration
Swift
public func delete(payment: String, forInvoice invoice: String) -> Future<HTTPStatus>
Parameters
transaction
The ID of the invoice from which to delete an external payment transaction.
invoice
The ID of the external payment transaction to delete.
Return Value
The HTTP status of the response, which will be 204 (No Content). If an error response was sent back instead, it gets converted to a Swift error and the future wraps that instead.
-
Generates a QR code for an invoice, by ID. The QR code is a PNG image in Base64-encoded format that corresponds to the invoice ID. You can generate a QR code for an invoice and add it to a paper or PDF invoice. When customers use their mobile devices to scan the QR code, they are redirected to the PayPal mobile payment flow where they can view the invoice and pay online with PayPal or a credit card. Before you get a QR code, you must create an invoice and send an invoice to move the invoice from a draft to payable state. Do not include an email address if you do not want the invoice emailed.
A successful request returns the HTTP
200 OK
status code and a JSON response body that shows the QR code as a PNG image.Declaration
Swift
public func generateQR(for invoiceID: String, width: Int = 500, height: Int = 500) -> Future<String>
Parameters
invoiceID
The ID of the invoice for which to generate a QR code.
width
The width, in pixels, of the QR code image. Value is from
150
to500
. The default value of the parameter is500
.height
The height, in pixels, of the QR code image. Value is from
150
to500
. The default value of the parameter is500
.Return Value
The base64-encoded image of the
image/png
type. If an error response was sent back instead, it gets converted to a Swift error and the future wraps that instead. -
Marks the status of an invoice, by ID, as paid.
A successful request returns the HTTP
200 OK
status code with no JSON response body.Declaration
Parameters
id
The ID of the invoice to mark as paid.
payment
The information used to make the payment on the invoice.
Return Value
The HTTP status of the response, which will be 200 (OK). If an error response was sent back instead, it gets converted to a Swift error and the future wraps that instead.
-
Marks the status of an invoice, by ID, as refunded.
A successful request returns the HTTP
200 OK
status code with no JSON response body.Declaration
Parameters
id
The ID of the invoice to mark as refunded.
payment
The information used to make the refund for the invoice.
Return Value
The HTTP status of the response, which will be 200 (OK). If an error response was sent back instead, it gets converted to a Swift error and the future wraps that instead.
-
Deletes an external refund, by invoice ID and transaction ID.
A successful request returns the HTTP
204 No Content
status code with no JSON response body.Declaration
Swift
public func delete(refund: String, forInvoice invoice: String) -> Future<HTTPStatus>
Parameters
refund
The ID of the external refund transaction to delete.
invoice
The ID of the invoice from which to delete the external refund transaction.
Return Value
The HTTP status of the response, which will be 204 (No Content). If an error response was sent back instead, it gets converted to a Swift error and the future wraps that instead.
-
Sends a reminder to the payer about an invoice, by ID. In the JSON request body, include a
notification
object that defines the subject of the reminder and other details.A successful request returns the HTTP
202 Accepted
status code with no JSON response body.Declaration
Swift
public func remind(invoice id: String, with reminder: Invoice.Reminder) -> Future<HTTPStatus>
Parameters
reminder
The data for the reminder notification to be sent to the invoice payer.
invoiceID
The ID of the invoice for which to send a reminder.
Return Value
The HTTP status of the response, which will be 202 (Accepted). If an error response was sent back instead, it gets converted to a Swift error and the future wraps that instead.
-
Schedules an invoice, by ID, to send on a future date. At 07:00 on that date in the preferred time zone of the merchant’s PayPal account profile, PayPal emails an invoice notification to the merchant and the customer, adds an online payment button to the customer’s view of the invoice, and updates the invoice status to
SENT
.Note
To change the scheduled date, adjust the invoice date and update invoice. To send the invoice immediately, update the invoice date to today or to a date in the past.A successful request returns the HTTP 202 Accepted status code and a JSON response body with a link to the invoice.
Declaration
Swift
public func schedule(invoice id: String) -> Future<[LinkDescription]>
Parameters
invoice
The ID of the invoice to schedule.
Return Value
An array containing a link to the dispute wrapped in a future. If an error response was sent back instead, it gets converted to a Swift error and the future wraps that instead.
-
Sends an invoice, by ID, to a customer. To suppress the merchant’s email notification, set the
notify_merchant
query parameter tofalse
.Note
After you send an invoice, you cannot resend it.A successful request returns the HTTP 202 Accepted status code with no JSON response body.
Declaration
Swift
public func send(invoice id: String, notifyMerchant notify: Bool = true) -> Future<HTTPStatus>
Parameters
invoice
The ID of the invoice to send.
notify
Indicates whether to send the invoice update notification to the merchant.
Return Value
The HTTP status of the response, which will be 202 (Accepted). If an error response was sent back instead, it gets converted to a Swift error and the future wraps that instead.
-
Generates the next invoice number that is available to the merchant. The next invoice number uses the prefix and suffix from the last invoice number and increments the number by one. For example, the next invoice number after
INVOICE-1234
isINVOICE-1235
.A successful request returns the HTTP
200 OK
status code and a JSON response body that shows the next invoice number.Declaration
Swift
public func nextNumber() -> Future<String>
Return Value
The new invoice number, incremented from the last number. If an error response was sent back instead, it gets converted to a Swift error and the future wraps that instead.
-
Searches for invoices that match search criteria. If you pass multiple criteria, the response lists invoices that match all criteria.
A successful request returns the HTTP
200 OK
status code and a JSON response body that lists the invoices that match the search criteria.Declaration
Swift
public func search(with body: Invoice.Search) -> Future<InvoiceList>
Parameters
body
The search criteria that the invoices must match to be returned.
Return Value
The list of invoices that match the search criteria passed in, wrapped in a future. If an error response was sent back instead, it gets converted to a Swift error and the future wraps that instead.


Button Merchant Library
Documentation
Documentation for the Merchant Library can be found on the Button Developer site.
Reference docs are also available.
Example
To run the example project, clone the repo, run pod install
, and run the Example scheme.
Installation
ButtonMerchant is available through CocoaPods and Carthage.
CocoaPods
Add this line to your Podfile:
pod 'ButtonMerchant'
Carthage
Or, add this to your Cartfile:
github "button/button-merchant-ios" ~> 1.0
Author
Button, Inc.
License
ButtonMerchant is available under the MIT license. See the LICENSE file for more info.
Contributing
We are looking forward to accepting your contributions to this project very soon!
Until then, if you have something you would like to contribute, please get in touch.


HIDEAWAY A film review by Michael John Legeros Copyright 1995 Michael John Legeros
Directed by Brett Leonard (THE LAWNMOWER MAN) Written by Andrew Kevin Walker and Neal Jimenez, based on the novel by Dean R. Koontz Cast Jeff Goldblum, Christine Lahti, Alicia Silverstone, Jeremy Sisto MPAA Rating "R" (presumably for violence, language, and gore) Running Time 118 Minutes Reviewed at United Artists at Mission Valley, Raleigh (3MAR95)
==
Dean Koontz reportedly asked to have his name taken off HIDEAWAY and it's easy to see why. The author's voice is nowhere to be found in this absurd adaptation of his 1993 bestseller. Koontz writes about men with mysteries--mysteries that take half the novel to unravel. His stories work because the author never tips his hand too soon. Here, the secrets are revealed at the very beginning.
The first scenes explain the psychic relationship between two strangers: the loving husband Hatch (Jeff Goldblum) and a teenage serial killer (Jeremy Sisto). With the big mystery solved so early, the plot has nowhere to go. The story can only devolve into simple scare tactics.
Sure, cheap thrills are fine for some. HIDEAWAY can certainly hold its own against any slasher pic. The plot is only mildly awful, and the actors actually can. There is a slight problem with the bad guy, though--he's about as threatening as a member of Spinal Tap. Maybe if he wore a hockey mask..
Grade: D+
-- Michael J. Legeros Raleigh, North Carolina
.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


@use super::base_html; @use crate::statics::VersionInfo; @(version_info: VersionInfo, repo_count: usize) @:base_html("Internal Server Error - Hits-of-Code Badges", "500 - Internal Server Error", {
Oops. Looks like a made a mistake. Please go back to the homepage and try again.
If you think, this is a bug, please drop me a mail.
}, version_info, repo_count)


WelcomeUsername
Rahul
Accountant Job, Administration Job, Office Job, Banking / Non Banking Financial Services…


KODO NAMAEWAZ
Burū kādos:
AO CHIMU
Waiting for a Supaimasutā to be chosen...
is the Supaimasutā
Nobody has guessed yet.
Aka kādos:
AKA CHIMU
Waiting for a Supaimasutā to be chosen...
is the Supaimasutā
Nobody has guessed yet.
Welcome to Kodo Namaewaz!!! Please select your team and click start when everybody is ready!
WAITING FOR BLUE SPYMASTER . . . .
WAITING FOR RED SPY MASTER . . . .
BLUE TEAM , IT IS YOUR TURN TO GUESS!
RED TEAM , IT IS YOUR TURN TO GUESS!
GAME OVER! SHOSHA WA . . . AO CHIMUDESU!!!!
GAME OVER! SHOSHA WA . . . AKA CHIMUDESU!!!!


{% extends "base.html" %} {% load i18n %} {% block title %}Instructions{% endblock %} {% block content %}
You are about to conduct a doubleblind experiment.
We will determine which of your so-called friends actually make good posts, and which ones waste your time.
We will also infer more sophisticated information about your preferences and interests.
You will be shown five recent posts, anonymized.


Chapter 6 Measure Theory
Instead of density, give probability to every event.
Definition
Let \(\Omega\) be set [state space]= set of all outcomes.
Each \(\omega \in \Omega\) is outcome.
Each \(A \in \Omega\)$ is event.
For rolling a die, \(\Omega ={1, 2, ...,6}\), whereas \(A={1,3,6}\). Thus, \(P(A)=\frac{1}{2}\).
\(P: 2^\Omega \rightarrow [0,1]\)
\(P(\Omega)=1, P(\varnothing)=0\)
\(P(A) \in [0,1]\)
If \(A\cap B=\varnothing\), then \(P(A\cup B)=P(A)+P(B)\)
If \(A_i\) are mutually disjoint, then \(P(\cup A_i)=\sum P(A_i)\)
6.1 Part 1
\(P(X)\): Power set \(X\)
Example: the set is \(X=\{ a,b \}\), and thus the power set is \(p(x)=\{ \varnothing, X, a,b \}\)
Definition: \(\mathcal{A} \subseteq P(X)\) is called a \(\sigma\)-algebra.
\(\sigma\)-algebra at least has two elements, namely empty set and full set: \(\varnothing\),\(X \in \mathcal{A}\)
\(A \in \mathcal{A} \rightarrow A^c: \in \mathcal{A}\)
- \(A_i \in \mathcal{A} \rightarrow \cup_{i=1}^\infty A_i \in \mathcal{A}\)
__\(A \in \mathcal{A}\) is called an \(\mathcal{A}\)-measureable set.
Example of \(\sigma\)-algebra:
\(\mathcal{A}= \{ \varnothing, X \}\)
\(\mathcal{A}= P(X)\)
6.2 Part 2
Easy to show:
\(\mathcal{A}_i\) \(\sigma\)-algebra on \(X\), \(in \in I(index set)\). Then, \(\cap \mathcal{A}_i\) is also a \(\sigma\)-algebra on \(X\).
Definition: For \(M \subseteq P(X)\), there is a smallest \(\sigma\)-algebra that contains \(M\). That is, \(\sigma\)-algebra is generated by \(M\).
\[ \sigma(M):=\cap_{\mathcal{A} \supseteq M}\mathcal{A}\] Example:
\[X=\{ a, b, c, d\}, M=\{ \{a\}, \{b\}\}\]
Note that, \(M\) is not a \(\sigma\)-algebra yet, and the smallest \(\sigma\)-algebra containing \(M\):
\[\sigma(M)= \{\varnothing, X=\{ a, b, c, d\},\{a\},\{b\},\{a,b\},\{b,c,d\},\{a,c,d\},\{c,d\}\}\]
Definition:
Let \(X\) be a topological space
(Let \(X\) be a metric space, or let \(X\) be a subset of \(\mathbb{R}^n\))
\(B(X)\) Borel \(\sigma\)-algebra on \(X\): THe \(\sigma\)-algebra generated by open sets.
\(B(X):=\sigma(\Im)\)
6.3 Part 3
What is a measure?
A measure is a \(\sigma\)-algebra. It can be either a power set or a subset.
Definition:
\((X, \mathcal{A})\) measurable space. \(\mathcal{A}\) is the subset of the set \(X\).
A map \(\mu: \mathcal{A} \rightarrow [0, \infty]\) is called a measure if it satisfies:
\(\mu (\varnothing)=0\)
\(\mu(\cup_{i=1}^\infty A_i)=\sum_{i=1}^\infty \mu(A_i)\) with \(A_i \cap A_j = \varnothing\) for all \(A_i \in \mathcal{A}\)
Definition: Measure space \[(X,\mathcal{A}, \mu)\]
Examples:
\(X, \mathcal{A}=P(X)\)
- For \(A\in \mathcal{A}\), counting measure:
\[\begin{cases} Count(A) & if A \; has\; finite \; elements \\ \infty & else \end{cases}\]
Calculation rules in \([0, \infty]\):
\(X+\infty := \infty \;\; for \; X \in [0, \infty]\)
\(X \cdot\infty := \infty \;\; for \; X \in (0, \infty]\)
\(0 \cdot\infty := 0 \;\; (for \; X \in (0, \infty])in \; most \; cases \; in \; measure \; theory!)\)
- Dirac measure for \(p \in X\)
\[\delta_p (A) \begin{cases} 1 &, p \in A \\ 0 &, else\end{cases}\]
- We search a measure on \(X=\mathbb{R}^n\)
\(\mu ([0,1]^n)=1\)
\(\mu(x+A)=\mu(A)\) for all \(x \in \mathbb{R}^n\)
6.4 Part 4
Search measure \(\mu\) on \(p(\mathbb{R})\) with
\(\mu([a,b])=b-a, b>a\)
\(\mu(X+A)=\mu(A), A \in p(\mathbb{R}), X \in \mathbb{R}\)
\(\rightarrow \mu\) does not exist.
Claim: Let \(\mu\) be a measure on \(p(\mathbb{R})\) with \(\mu([0,1])<\infty\) and (2) \(\rightarrow \mu=0\)
6.5 Part 5
Definition:
\((\Omega_1,\mathcal{A}_1), (\Omega_2,\mathcal{A}_2)\) measurable spaces
\(f: \Omega_1 \rightarrow \Omega_2\) measurable (\(w.r.t \; \mathcal{A}_1, \mathcal{A}_2\)) if \(f^{-1}(\mathcal{A}_1) \in \mathcal{A}_2\) for all \(\mathcal{A}_1 \in \mathcal{A}_2\).
Examples:
- (\(\Omega,\mathcal{A}\)), (\(\mathbb{R},B(\mathbb{R})\)): characteristic function (also indicator function)
\[\chi_A : \Omega \rightarrow \mathbb{R}\]
\[\chi_A (\omega) := \begin{cases} 1 &, \omega \in A \\ 0 &, else\end{cases}\]
For all measurable \(A \in \mathcal{A}\), \(\chi_A\) is a measurable map.
\[\chi_A(\varnothing)=\varnothing, \chi_A^{-1}(\mathbb{R})=\Omega\] \[\chi_A(\{ 1 \})=A, \chi_A^{-1}(\mathbb{0})=A^c\]
- (\(\Omega_1,\mathcal{A}_1\)), (\(\Omega_2,\mathcal{A}_2\)), (\(\Omega_3,\mathcal{A}_3\)) measurable spaces
\[\Omega_1 \rightarrow \Omega_2 \rightarrow \Omega_3\]
If both \(\Omega_1 \rightarrow \Omega_2\) and \(\Omega_2 \rightarrow \Omega_3\) are measurable, then \(\Omega_1 \rightarrow \Omega_3\) is measurable as well.
6.6 Part 6
Lebesgue integral
Lebesgue integral for step functions.
\[Measure \; space(X, \mathcal{A}, \mu)\]
Where,
\(X\) is a set.
\(\mathcal{A}\): collection of subset of \(X\): \(\sigma\)-algebra.
\(\mu\): \(\mathcal{A} \rightarrow [0, \infty]\).
In order to integrate some special function, we need measurable maps:
\[Measure \; maps \; f: X \rightarrow \mathbb{R}\]
Where, there is \(\sigma\)-algebra \(\mathcal{A}\) on the \(X\), whereas \(\sigma\)-algebra \(B\) for \(\mathbb{R}\). In other words, we can get:
\[f^{-1}(E) \in \mathcal{A} \; for \; all \; Borcel \; sets \; E \subseteq \mathbb{R}\]
For example:
\[\chi_A: X \rightarrow \mathbb{R}, A \in \mathcal{A}\] \[I(\chi_A):= \mu (A)\]
Simple functions (step functions, staircase functions, …)
For \(A_1, ...  We call this Lebesgue integral of \(f\) w.r.t \(\mu\). \(f\) is called \(\mu\)-integral if \(\int_x f d\mu < =\infty\)


Login to the FAPI Conformance Suite
There was an error logging you in.
You have been logged out.
Log in with Google
Or use another OIDC provider
User Name :