30 KiB
The Espruino is an implementation of a JavaScript engine. It exposes APIs that can be used by an embedder of the engine. Unfortunately, no obvious external documentation is provided. Here we attempt to document some of the more important functions available to us.
#####The hardware
The hardware is a combination of the Espruino defined source file called jsdevices.c and the board supplied source file called jshardware.c. The prefix for both of these is jshXXX so take care to look in both files for implementations.
######jshFromDeviceString Get a device identifier from a string representation.
IOEventFlags jshFromDeviceString(const char *device)
######jshHasEvents Determine if there are events ready to process.
bool jshHasEvents()
######jshPushIOCharEvent Supply a single input character from the user input. For the ESP8266 this could be a character received via a UART input or from a telnet connection (for example).
void jshPushIOCharEvent(IOEventFlags channel, char charData)
######jshPushIOCharEvents Supply a sequence of input characters from the user. For the ESP8266 this could be characters received via a UART input or from a telnet connection (for example).
void jshPushIOCharEvents(IOEventFlags channel, char *data, unsigned int count)
######jshTransmit Transmit a single character to the device.
void jshTransmit(IOEventFlags device, unsigned char data)
######jshTransmitFlush Clear all characters pending transmission.
void jshTransmitFlush()
######jshTransmitClearDevice Clear everything from a device.
void jshTransmitClearDevice(IOEventFlags device)
######jshTransmitMove Move all the output from one device to another.
void jshTransmitMove(IOEventFlags from, IOEventFlags to)
######jshHasTransmitData Determine if we have data ready to be transmitted.
bool jshHasTransmitData()
######jshGetDeviceToTransmit
???
IOEventFlags jshGetDeviceToTransmit()
######jshGetCharToTransmit
int jshGetCharToTransmit(IOEventFlags device)
#####The interactive subsystem The interactive subsystem provides a "shell" for users to submit JavaScript commands.
######jsiInit
Initialize the interactive environment.
void jsiInit(bool autoLoad)
The autoLoad parameter is true if we want to attempt to automatically load and run a JavaScript program from flash.
######jsiQueueEvents Queue an event for processing.
void jsiQueueEvents(JsVar *contextObject, JsVar *callback, JsVar **args, int argCount)
Queue an event for processing. The contextObject is the object that will be used for this when the callback is invoked. The callback is the function to be invoked. The args is an array of arguments of length argCount.
######jsiIdle
void jsiIdle()
This is one of the main loops for processing work. Its high level algorithm appears to be as follows:
while(we have an IO event to process) {
// Handle an IO event
}
while(we have a timer event to process) {
// Handler a timer event
}
#####The console
The console is an interactive device attached to the Espruino. Typically this is a UART. The console provides a mechanism to write data to it and presumably read data from it. Since the console differs by board, this is a flexible environment. There is a single console associated with the Espruino that can be retrieved with a call to jsiGetConsoleDevice() and correspondingly set with jsiSetConsoleDevice(). It is this logical console that is used by the other console functions.
######jsiConsolePrintf Write a printf string to the Espruino console.
void jsiConsolePrintf(const char *fmt, ...)
Calls jsiConsolePrint to do its core work.
######jsiConsolePrint Write a string to the Espruino console.
void jsiConsolePrint(const char *str)
Calls jsiConsolePrintChar to do its core work.
######jsiConsolePrintChar Write a single character to the Espruino console.
void jsiConsolePrintChar(char data)
Calls jshTransmit to do its core work.
######jsiGetConsoleDevice Get the current device used for the console.
IOEventFlags jsiGetConsoleDevice()
######jsiSetConsoleDevice Set the device to be used for the console.
void jsiSetConsoleDevice(IOEventFlags device)
######jsError Log an error message to the console.
void jsError(const char *fmt, ...)
Log an error message to the console in a "printf" format.
######vcbprintf Call a user defined callback function with the data generated from a printf() like format.
void vcbprintf(vcbprintf_callback user_callback, void *user_data, const char *fmt, va_list argp)
The user_callback function is invoked (potentially multiple times) with string data that is the formatted result of the format string. The format characters allowed are:
%d= int%0#d= int padded to length # with 0s%x= int as hex%L= JsVarInt%Lx= JsVarInt as hex%f= JsVarFloat%s= string (char *)%c= char%v= JsVar * (doesn't have to be a string - it'll be converted)%q= JsVar * (in quotes, and escaped)%j= Variable printed as JSON%t= Type of variable%p= Pin
#####Error handling
The environment provides a number of error handling and recording routines.
######jsExceptionHere Log an exception as having happened here.
void jsExceptionHere(JsExceptionType type, const char *fmt, ...)
Log an exception as having happened here. The function takes a printf() format string and parameters. The type can be one of:
- JSET_STRING
- JSET_ERROR
- JSET_SYNTAXERROR
- JSET_TYPEERROR
- JSET_INTERNALERROR
- JSET_REFERENCEERROR
######jsWarn
Log a warning message and continue.
void jsWarn(const char *fmt, ...)
Log a warning message and continue.
######jsError
Log an error message and continue.
void jsError(const char *fmt, ...)
Log an error message and continue.
#####Parser
######jspNewObject Create a new JS object.
JsVar *jspNewObject(const char *name, const char *instanceOf)
Create and return a new instance of an object. If name is not NULL, then the object is added to the root with the given name. If name is NULL, then the object is created and returned by the function. The type of the object is supplied by the instanceOf parameter.
#####Variables The variables module is a vital part of Espruino. Part of the concept of variables are references and locks. References are the number of references to the variable from other JavaScript variables. Locks are the number of references from native code. This comes into play when we consider garbage collection. A variable can possibly be freed if it has > 0 references but it can never be freed if it has > 0 locks.
We can create a new object using jspNewObject() or possible from
jsvNewWithFlags(JSV_OBJECT). We can set properties on the object using jsvObjectSetChild().
To create an array we use jsvNewWithFlags(JSV_ARRAY).
If we are passed a JsVar instance, we often want to know what kind of variable the
object represents. We can determine that with one of the jsvIs<type> methods. The types available to us to check are:
- jsvIsRoot
jsvIsPin- Is the variable a GPIO pin.- jsvIsSimpleInt
jsvIsInt- Is the variable an integer.jsvIsFloat- Is the variable a float.jsvIsBoolean- Is the variable a boolean.jsvIsString- Is the variable a string.- jsvIsStringExt
- jsvIsFlatString
- jsvIsNumeric
jsvIsFunction- Is the variable a function.- jsvIsFunctionParameter
jsvIsObject- Is the variable an object.jsvIsArray- Is the variable an array.- jsvIsArrayBuffer
- jsvIsArrayBufferName
- jsvIsNative
jsvIsUndefined- Is the variable undefined.jsvIsNull- Is the variable null.- jsvIsBasic
- jsvIsName
- jsvIsNameWithValue
- jsvIsNameInt
- jsvIsNameIntInt
- jsvIsNameIntBool
- jsvIsNewChild
- jsvIsIterable
- jsvIsStringNumericInt
- jsvIsStringNumericStrict
To construct a variable from a piece of C data we have the following:
jsvNewFromString- Create a new variable from a string.
To retrieve C data from a variable, we have the following:
jsvGetInteger- Get an integer.
######jsvInit
void jsvInit()
######jsvKill
void jsvKill()
######jsvSoftInit
void jsvSoftInit()
######jsvSoftKill
void jsvSoftKill()
######jsvFindOrCreateRoot
JsVar *jsvFindOrCreateRoot()
######jsvGetMemoryUsage
unsigned int jsvGetMemoryUsage()
######jsvGetMemoryTotal
unsigned int jsvGetMemoryTotal()
######jsvIsMemoryFull
bool jsvIsMemoryFull()
######jsvShowAllocated`
void jsvShowAllocated()
######jsvSetMemoryTotal
void jsvSetMemoryTotal(unsigned int jsNewVarCount)
######jsvNewWithFlags
JsVar *jsvNewWithFlags(JsVarFlags flags)
######jsvNewFlatStringOfLength
JsVar *jsvNewFlatStringOfLength(unsigned int byteLength)
######jsvNewFromString
Create a JS Variable from a string.
JsVar *jsvNewFromString(const char *str)
Create a JS Variable from a string.
######jsvNewStringOfLength
JsVar *jsvNewStringOfLength(unsigned int byteLength)
######jsvNewFromEmptyString
Create a new empty string.
JsVar *jsvNewFromEmptyString()
Create a new empty string.
######jsvNewNull
Create a new null.
JsVar *jsvNewNull()
Create a new null.
######jsvNewFromStringVar
JsVar *jsvNewFromStringVar(const JsVar *str, size_t stridx, size_t maxLength)
######jsvNewFromInteger
Create a new variable from an integer.
JsVar *jsvNewFromInteger(JsVarInt value)
Create a new variable from an integer.
######jsvNewFromBool
Create a new variable from a boolean.
JsVar *jsvNewFromBool(bool value)
######jsvNewFromFloat
JsVar *jsvNewFromFloat(JsVarFloat value)
######jsvNewFromLongInteger
JsVar *jsvNewFromLongInteger(long long value)
######jsvMakeIntoVariableName
JsVar *jsvMakeIntoVariableName(JsVar *var, JsVar *valueOrZero)
######jsvMakeFunctionParameter
void jsvMakeFunctionParameter(JsVar *v)
######jsvNewFromPin
JsVar *jsvNewFromPin(int pin)
######jsvNewArray
Create a new array variable.
JsVar *jsvNewArray(JsVar **elements, int elementCount)
Create a new array variable and optionally populate it with elements. If no elements are to be added ... i.e. all we want to do is create an empty array, we can provide NULL for elements and 0 for elementCount.
######jsvNewNativeFunction
JsVar *jsvNewNativeFunction(void (*ptr)(void), unsigned short argTypes)
######jsvNewArrayBufferFromString
JsVar *jsvNewArrayBufferFromString(JsVar *str, unsigned int lengthOrZero)
######jsvGetNativeFunctionPtr
void *jsvGetNativeFunctionPtr(const JsVar *function)
######jsvGetRef
JsVarRef jsvGetRef(JsVar *var)
######jsvLock
JsVar *jsvLock(JsVarRef ref)
######jsvLockAgain
Lock the variable.
JsVar *jsvLockAgain(JsVar *var)
Lock the variable.
######jsvLockAgainSafe
Lock the variable.
JsVar *jsvLockAgainSafe(JsVar *var)
Lock the variable.
######jsvUnLock
Unlock the variable.
void jsvUnLock(JsVar *var)
Unlock the variable.
######jsvUnLockMany
Unlock an array of variables.
void jsvUnLockMany(unsigned int count, JsVar **vars)
Unlock an array of variables.
######jsvRef
JsVar *jsvRef(JsVar *v)
######jsvUnRef
void jsvUnRef(JsVar *var)
######jsvRefRef
JsVarRef jsvRefRef(JsVarRef ref)
######jsvUnRefRef
JsVarRef jsvUnRefRef(JsVarRef ref)
######jsvIsRoot
bool jsvIsRoot(const JsVar *v)
######jsvIsPin
bool jsvIsPin(const JsVar *v)
######jsvIsSimpleInt
bool jsvIsSimpleInt(const JsVar *v)
######jsvIsInt
Does this variable represent an integer.
bool jsvIsInt(const JsVar *v)
Does this variable represent an integer.
######jsvIsFloat
Does this variable represent a float.
bool jsvIsFloat(const JsVar *v)
Does this variable represent a float.
######jsvIsBoolean
Does this variable represent a boolean.
bool jsvIsBoolean(const JsVar *v)
Does this variable represent a boolean.
######jsvIsString
Does this variable represent a string.
bool jsvIsString(const JsVar *v)
Does this variable represent a string.
######jsvIsStringExt
bool jsvIsStringExt(const JsVar *v)
######jsvIsFlatString
bool jsvIsFlatString(const JsVar *v)
######jsvIsNumeric
bool jsvIsNumeric(const JsVar *v)
######jsvIsFunction
Does this variable represent a function.
bool jsvIsFunction(const JsVar *v)
Does this variable represent a function.
######jsvIsFunctionParameter
bool jsvIsFunctionParameter(const JsVar *v)
######jsvIsObject
Does this variable represent an object.
bool jsvIsObject(const JsVar *v)
Does this variable represent an object.
######jsvIsArray
Does this variable represent an array.
bool jsvIsArray(const JsVar *v)
Does this variable represent an array.
######jsvIsArrayBuffer
bool jsvIsArrayBuffer(const JsVar *v)
######jsvIsArrayBufferName
bool jsvIsArrayBufferName(const JsVar *v)
######jsvIsNative
bool jsvIsNative(const JsVar *v)
######jsvIsNativeFunction
bool jsvIsNativeFunction(const JsVar *v)
######jsvIsUndefined
Is this variable undefined.
bool jsvIsUndefined(const JsVar *v)
Is this variable undefined.
######jsvIsNull
Is this variable null.
bool jsvIsNull(const JsVar *v)
Is this variable null.
######jsvIsBasic
bool jsvIsBasic(const JsVar *v)
######jsvIsName
bool jsvIsName(const JsVar *v)
######jsvIsNameWithValue
bool jsvIsNameWithValue(const JsVar *v)
######jsvIsNameInt
bool jsvIsNameInt(const JsVar *v)
######jsvIsNameIntInt
bool jsvIsNameIntInt(const JsVar *v)
######jsvIsNameIntBool
bool jsvIsNameIntBool(const JsVar *v)
######jsvIsNewChild
bool jsvIsNewChild(const JsVar *v)
######jsvCreateNewChild
JsVar *jsvCreateNewChild(JsVar *parent, JsVar *index, JsVar *child)
######jsvIsRefUsedForData
bool jsvIsRefUsedForData(const JsVar *v)
######jsvIsIntegerish
bool jsvIsIntegerish(const JsVar *v)
######jsvIsIterable
bool jsvIsIterable(const JsVar *v)
######jsvIsStringNumericInt
bool jsvIsStringNumericInt(const JsVar *var, bool allowDecimalPoint)
######jsvIsStringNumericStrict
bool jsvIsStringNumericStrict(const JsVar *var)
######jsvHasCharacterData
bool jsvHasCharacterData(const JsVar *v)
######jsvHasStringExt
bool jsvHasStringExt(const JsVar *v)
######jsvHasChildren
Can the variable have children?
bool jsvHasChildren(const JsVar *v)
Returns true if the variable can possibly have children.
######jsvHasSingleChild
bool jsvHasSingleChild(const JsVar *v)
######jsvHasRef
bool jsvHasRef(const JsVar *v)
######jsvGetMaxCharactersInVar
size_t jsvGetMaxCharactersInVar(const JsVar *v)
######jsvGetCharactersInVar
size_t jsvGetCharactersInVar(const JsVar *v)
######jsvSetCharactersInVar
void jsvSetCharactersInVar(JsVar *v, size_t chars)
######jsvIsBasicVarEqual
bool jsvIsBasicVarEqual(JsVar *a, JsVar *b)
######jsvIsEqual
Determine if two variables are equal.
bool jsvIsEqual(JsVar *a, JsVar *b)
Two variables are considered equal if both are basic and they contain the same value or else they are both objects and reference the same object.
######jsvGetConstString Return a string representation of the variable.
const char *jsvGetConstString(const JsVar *v)
Return a string representation of the variable where possible. Note that this is only for a few types including:
- undefined
- booleans (true or false)
- null
Anything else causes a return of NULL.
######jsvGetTypeOf
Return the 'type' of the JS variable (eg. JS's typeof operator).
const char *jsvGetTypeOf(const JsVar *v)
Return the 'type' of the JS variable (eg. JS's typeof operator). The mappings are:
undefined- "undefined"null, anobject, anarray- "object"function- "function"string- "string"boolean- "boolean"number- "number"
######jsvGetValueOf
JsVar *jsvGetValueOf(JsVar *v)
######jsvGetString Get the value of a variable as a string.
size_t jsvGetString(const JsVar *var, char *str, size_t len)
Retrieve the value of a variable as a sting. The variable is passed in via var. The buffer used to hold the return string is specified by str and the maximum length of the data to be returned is specified by len. The returned value is the size of the string returned. Note that the string is not NULL terminated.
######jsvGetStringChars
size_t jsvGetStringChars(const JsVar *v, size_t startChar, char *str, size_t len)
######jsvSetString
void jsvSetString(JsVar *v, char *str, size_t len)
######jsvAsString
JsVar *jsvAsString(JsVar *var, bool unlockVar)
######jsvAsFlatString
JsVar *jsvAsFlatString(JsVar *var)
######jsvIsEmptyString
Determine if the JS variable is an empty string.
bool jsvIsEmptyString(JsVar *v)
Returns true if the JS variable is an empty string.
######jsvGetStringLength Get the length of the string.
size_t jsvGetStringLength(JsVar *var)
Return the length of the string specified by the variable referred to by var.
######jsvGetFlatStringBlocks
size_t jsvGetFlatStringBlocks(JsVar *v)
######jsvGetFlatStringPointer
char *jsvGetFlatStringPointer(JsVar *v)
######jsvGetLinesInString
size_t jsvGetLinesInString(JsVar *v)
######jsvGetCharsOnLine
size_t jsvGetCharsOnLine(JsVar *v, size_t line)
######jsvGetLineAndCol
void jsvGetLineAndCol(JsVar *v, size_t charIdx, size_t* line, size_t *col)
######jsvGetIndexFromLineAndCol
size_t jsvGetIndexFromLineAndCol(JsVar *v, size_t line, size_t col)
######jsvIsStringEqualOrStartsWith
bool jsvIsStringEqualOrStartsWith(JsVar *var, const char *str, bool isStartsWith)
######jsvIsStringEqual
bool jsvIsStringEqual(JsVar *var, const char *str)
######jsvCompareString
int jsvCompareString(JsVar *va, JsVar *vb, size_t starta, size_t startb, bool equalAtEndOfString)
######jsvCompareInteger
int jsvCompareInteger(JsVar *va, JsVar *vb)
######jsvAppendString
Append the given string to this one.
void jsvAppendString(JsVar *var, const char *str)
Append the given string to this one.
######jsvAppendStringBuf
bool jsvAppendStringBuf(JsVar *var, const char *str, size_t length)
######jsvAppendPrintf
void jsvAppendPrintf(JsVar *var, const char *fmt, ...)
######jsvVarPrintf
JsVar *jsvVarPrintf( const char *fmt, ...)
######jsvAppendCharacter
Append a character to the string.
void jsvAppendCharacter(JsVar *var, char ch)
Append a character to the string.
######jsvAppendStringVar
void jsvAppendStringVar(JsVar *var, const JsVar *str, size_t stridx, size_t maxLength)
######jsvAppendStringVarComplete
void jsvAppendStringVarComplete(JsVar *var, const JsVar *str)
######jsvGetCharInString
char jsvGetCharInString(JsVar *v, size_t idx)
######jsvGetStringIndexOf
Find the location of a character in a string.
int jsvGetStringIndexOf(JsVar *str, char ch)
Given a JS string, return the index of the first match of a given character or -1 if the character is not present in the string.
######jsvGetInteger
Get the integer value of the variable.
JsVarInt jsvGetInteger(const JsVar *v)
Get the integer value of the variable.
######jsvSetInteger
Set the variable to be an integer value.
void jsvSetInteger(JsVar *var, JsVarInt value)
Set the variable to be an integer value.
######jsvGetFloat
Get the floating point value of a variable.
JsVarFloat jsvGetFloat(const JsVar *var)
Get the floating point value of a variable.
######jsvGetBool
Get the boolean value of a variable.
bool jsvGetBool(const JsVar *var)
Get the boolean value of a variable.
######jsvGetLongInteger
long long jsvGetLongInteger(const JsVar *v)
######jsvAsNumber
Convert the given variable to a number.
JsVar *jsvAsNumber(JsVar *var)
Convert the given variable to a number.
######jsvAsNumberAndUnLock
JsVar *jsvAsNumberAndUnLock(JsVar *v)
######jsvGetIntegerAndUnLock
JsVarInt jsvGetIntegerAndUnLock(JsVar *v)
######jsvGetFloatAndUnLock
JsVarFloat jsvGetFloatAndUnLock(JsVar *v)
######jsvGetBoolAndUnLock
bool jsvGetBoolAndUnLock(JsVar *v)
######jsvGetLongIntegerAndUnLock
long long jsvGetLongIntegerAndUnLock(JsVar *v)
######jsvGetArrayBufferLength
size_t jsvGetArrayBufferLength(JsVar *arrayBuffer)
######jsvGetArrayBufferBackingString
JsVar *jsvGetArrayBufferBackingString(JsVar *arrayBuffer)
######jsvArrayBufferGet
JsVar *jsvArrayBufferGet(JsVar *arrayBuffer, size_t index)
######jsvArrayBufferSet
void jsvArrayBufferSet(JsVar *arrayBuffer, size_t index, JsVar *value)
######jsvArrayBufferGetFromName
JsVar *jsvArrayBufferGetFromName(JsVar *name)
######jsvGetFunctionArgumentLength
JsVar *jsvGetFunctionArgumentLength(JsVar *function)
######jsvSkipName
JsVar *jsvSkipName(JsVar *a)
######jsvSkipOneName
JsVar *jsvSkipOneName(JsVar *a)
######jsvSkipToLastName
JsVar *jsvSkipToLastName(JsVar *a)
######jsvSkipNameAndUnLock
JsVar *jsvSkipNameAndUnLock(JsVar *a)
######jsvSkipOneNameAndUnLock
JsVar *jsvSkipOneNameAndUnLock(JsVar *a)
######jsvAsArrayIndex
JsVar *jsvAsArrayIndex(JsVar *index)
######jsvAsArrayIndexAndUnLock
JsVar *jsvAsArrayIndexAndUnLock(JsVar *a)
######jsvAsName
JsVar *jsvAsName(JsVar *var)
######jsvMathsOpSkipNames
JsVar *jsvMathsOpSkipNames(JsVar *a, JsVar *b, int op)
######jsvMathsOpTypeEqual
bool jsvMathsOpTypeEqual(JsVar *a, JsVar *b)
######jsvMathsOp
JsVar *jsvMathsOp(JsVar *a, JsVar *b, int op)
######jsvNegateAndUnLock
JsVar *jsvNegateAndUnLock(JsVar *v)
######jsvGetPathTo
JsVar *jsvGetPathTo(JsVar *root, JsVar *element, int maxDepth, JsVar *ignoreParent)
######jsvCopy
JsVar *jsvCopy(JsVar *src)
######jsvCopyNameOnly
JsVar *jsvCopyNameOnly(JsVar *src, bool linkChildren, bool keepAsName)
######jsvAddName
void jsvAddName(JsVar *parent, JsVar *nameChild)
######jsvAddNamedChild
Add a child, and create a name for it. Returns a LOCKED var. DOES NOT CHECK FOR DUPLICATES.
JsVar *jsvAddNamedChild(JsVar *parent, JsVar *child, const char *name)
Add a child, and create a name for it. Returns a LOCKED var. DOES NOT CHECK FOR DUPLICATES.
######jsvSetNamedChild
Add a child, and create a name for it. Returns a LOCKED name var. CHECKS FOR DUPLICATES.
JsVar *jsvSetNamedChild(JsVar *parent, JsVar *child, const char *name)
Add a child, and create a name for it. Returns a LOCKED name var. CHECKS FOR DUPLICATES.
######jsvSetValueOfName
JsVar *jsvSetValueOfName(JsVar *name, JsVar *src)
######jsvFindChildFromString
JsVar *jsvFindChildFromString(JsVar *parent, const char *name, bool createIfNotFound)
######jsvFindChildFromVar
JsVar *jsvFindChildFromVar(JsVar *parent, JsVar *childName, bool addIfNotFound)
######jsvRemoveChild
void jsvRemoveChild(JsVar *parent, JsVar *child)
######jsvRemoveAllChildren
void jsvRemoveAllChildren(JsVar *parent)
######jsvRemoveNamedChild
void jsvRemoveNamedChild(JsVar *parent, const char *name)
######jsvObjectGetChild
JsVar *jsvObjectGetChild(JsVar *obj, const char *name, JsVarFlags createChild)
######jsvObjectSetChild
Set a new child of the object.
JsVar *jsvObjectSetChild(JsVar *obj, const char *name, JsVar *child)
Set the child of the object passed by obj to have a new property (child) called name with a value of child.
######jsvGetChildren
int jsvGetChildren(JsVar *v)
######jsvGetFirstName
JsVar *jsvGetFirstName(JsVar *v)
######jsvIsChild
bool jsvIsChild(JsVar *parent, JsVar *child)
######jsvGetArrayLength
JsVarInt jsvGetArrayLength(const JsVar *arr)
######jsvSetArrayLength
JsVarInt jsvSetArrayLength(JsVar *arr, JsVarInt length, bool truncate)
######jsvGetLength
JsVarInt jsvGetLength(JsVar *src)
######jsvCountJsVarsUsed
size_t jsvCountJsVarsUsed(JsVar *v)
######jsvGetArrayItem
JsVar *jsvGetArrayItem(const JsVar *arr, JsVarInt index)
######jsvGetArrayItems
void jsvGetArrayItems(const JsVar *arr, unsigned int itemCount, JsVar **itemPtr)
######jsvGetArrayIndexOf
JsVar *jsvGetArrayIndexOf(JsVar *arr, JsVar *value, bool matchExact)
######jsvArrayAddToEnd
JsVarInt jsvArrayAddToEnd(JsVar *arr, JsVar *value, JsVarInt initialValue)
######jsvArrayPush
Adds a new element to the end of an array, and returns the new length.
JsVarInt jsvArrayPush(JsVar *arr, JsVar *value)
Adds a new element to the end of an array, and returns the new length.
######jsvArrayPushAndUnLock
JsVarInt jsvArrayPushAndUnLock(JsVar *arr, JsVar *value)
######jsvArrayPop
Removes the last element of an array, and returns that element (or 0 if empty). includes the NAME.
JsVar *jsvArrayPop(JsVar *arr)
Removes the last element of an array, and returns that element (or 0 if empty). includes the NAME.
######jsvArrayPopFirst
Removes the first element of an array, and returns that element (or 0 if empty). includes the NAME.
JsVar *jsvArrayPopFirst(JsVar *arr)
Removes the first element of an array, and returns that element (or 0 if empty). includes the NAME.
######jsvArrayAddString
Adds a new String element to the end of an array (IF it was not already there).
void jsvArrayAddString(JsVar *arr, const char *text)
Adds a new String element to the end of an array (IF it was not already there).
######jsvArrayJoin
JsVar *jsvArrayJoin(JsVar *arr, JsVar *filler)
######jsvArrayInsertBefore
void jsvArrayInsertBefore(JsVar *arr, JsVar *beforeIndex, JsVar *element)
######jsvArrayIsEmpty
bool jsvArrayIsEmpty(JsVar *arr)
######jsvTrace
void jsvTrace(JsVar *var, int indent)
######jsvGarbageCollect
bool jsvGarbageCollect()
######jsvStringTrimRight
Remove whitespace to the right of a string - on MULTIPLE LINES.
JsVar *jsvStringTrimRight(JsVar *srcString)
Remove whitespace to the right of a string - on MULTIPLE LINES.
######jsvIsInternalFunctionKey
bool jsvIsInternalFunctionKey(JsVar *v)
######jsvIsInternalObjectKey
bool jsvIsInternalObjectKey(JsVar *v)
######jsvGetInternalFunctionCheckerFor
JsvIsInternalChecker jsvGetInternalFunctionCheckerFor(JsVar *v)
######jsvReadConfigObject
bool jsvReadConfigObject(JsVar *object, jsvConfigObject *configs, int nConfigs)
######jsvNewTypedArray
JsVar *jsvNewTypedArray(JsVarDataArrayBufferViewType type, JsVarInt length)
#####GPIOs
######jshIsPinValid
bool jshIsPinValid(Pin pin)
######jshGetPinFromString Given a string, convert it to a pin ID (or -1 if it doesn't exist).
Pin jshGetPinFromString(const char *s)
######jshGetPinString Write the pin name to a string. String must have at least 8 characters (to be safe).
void jshGetPinString(char *result, Pin pin)
######jshGetPinFromVar Given a var, convert it to a pin ID (or -1 if it doesn't exist). safe for undefined!
Pin jshGetPinFromVar(JsVar *pinv)
######jshGetPinFromVarAndUnLock
Pin jshGetPinFromVarAndUnLock(JsVar *pinv)
######jshGetPinStateIsManual Is the pin state manual (has the user asked us explicitly to change it?)
bool jshGetPinStateIsManual(Pin pin)
######jshSetPinStateIsManual Set whether the pin state is manual (has the user asked us explicitly to change it?)
void jshSetPinStateIsManual(Pin pin, bool manual)
######jshPinInput
Retrieve a value from the given pin.
bool jshPinInput(Pin pin)
The pin is the identity of the pin to be read.
######jshPinOutput Set the output on a given pin.
void jshPinOutput(Pin pin, bool value)
Set the output on a given pin. The pin defines the pin to use for output and value defines the value to be set.
####Networking
#####net.idle
######Call type:
bool net.idle()
######Description
######Parameters None
######Returns Nothing.
#####net.init
#####net.kill
######Call type:
######Description
######Parameters None
######Returns Nothing.
#####net.init
######Call type:
######Description
######Parameters None
######Returns
Nothing.
#####net.createServer
#####Call type:
JsVar *jswrap_net_createServer(JsVar *callback)
#####Description
Create a Server
When a request to the server is made, the callback is called. In the callback you can use the methods on the connection to send data. You can also add connection.on('data',function() { ... }) to listen for received data
#####Parameters
callback- A function(connection) that will be called when a connection is made
####Returns
Returns a new Server Object.
######net.connect
#####Call type:
JsVar *jswrap_net_connect(JsVar *options, JsVar *callback, SocketType socketType)
#####Description
Create a socket connection
#####Parameters
options- An object containing host,port fieldscallback- A function(res) that will be called when a connection is made. You can then callres.on('data', function(data) { ... })andres.on('close', function() { ... })to deal with the response.socketType- One ofST_NORMAL,ST_HTTP.
####Returns Nothing.
######net.server_listen
#####Call type:
void jswrap_net_server_listen(JsVar *parent, int port)
#####Description
#####Parameters None
####Returns Nothing.
######net.server_close
#####Call type:
void jswrap_net_server_close(JsVar *parent)
#####Description
#####Parameters None
####Returns Nothing.
#####net.socket_write
######Call type:
bool jswrap_net_socket_write(JsVar *parent, JsVar *data)
######Description
######Parameters None
#####Returns Nothing.
######net.socket_end
######Call type:
void jswrap_net_socket_end(JsVar *parent, JsVar *data)
######Description
######Parameters None
#####Returns Nothing.