jcontrol.system
Class Management

java.lang.Object
  extended by jcontrol.system.Management

public class Management
extends Object

Controls JControls system management functions.

This class provides some system properties, some are not present on some boards:

KeyDescription of Associated ValueProvider
rs232.baudrate (int) RS232 baudrateRS232.setBaudrate(int)
rs232.params (int) RS232 parametersRS232.setParams(int)
io.adcchannels (r/o) # of useable ADC channelsADC
display.contrast (int) display contrastDisplay
display.dimensions (r/o) display dimensions (pixels)Display
flash.format (r/o) organisation of flash memoryFlash
buzzer.keyboardbeep (boolean)turns buzzer on for keyboard pressKeyboard
io.gpiochannels (r/o) # of useable portpinsGPIO
io.pwmchannels (r/o) # of useable PWM channelsPWM
profile.name (r/o) JControl board typeManagement
profile.date (r/o) the build date of the JControl VMManagement
buzzer.enable (boolean)turns buzzer on for some actionsManagement
buzzer.systembeep (boolean)turns buzzer on for some actionsManagement
system.standbytimer (int) time for automatic turn off (seconds)Management
system.userbank (int) flash bank to launch applicationManagement
system.heapsize (r/o) available memory for javaManagement
rtc.poweronbank (int) flash bank to launch on alarmRTC

Author:
Andreas Wesseler, Helge Böhme
Available on JControl Devices:
all

Constructor Summary
Management()
           
 
Method Summary
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
          Copies an array from the specified source array, beginning at the specified position, to the specified position of the destination array.
static short currentTimeMillis()
          Returns the current value of the virtual machines millisecond counter.
static void gc()
          Waits for completion of garbage collecton.
static int getPowerStatus()
          Get power (battery) status.
static String getProperty(String key)
          Returns the value of a JControl system property.
static void halt()
          Just stops the processor.
static String nextKey(String previousKey)
          Enumerates the system properties.
static void powerOff()
          Turn RTC equipped JControl modules off.
static void powerOff(int time)
          Turn RTC equipped JControl modules off.
static void reboot(boolean reset)
          Reboots the virtual machine.
static void saveProperties()
          Saves some properties to the persistent storage.
static void setClassPersistence(boolean keep)
          Marks the calling class not to be removed from the garbage collector.
static void setLock(Object obj, boolean lock)
          Locks or unlocks an object in memory.
static boolean setProperty(String key, String value)
          Sets the JControl system Property to the specified value.
static void start(String clss, String[] args, boolean asThread)
          Starts a Java application.
static void switchBank()
          Switches the flash bank to the bank specified by property system.userbank.
 
Methods inherited from class java.lang.Object
clone, equals, notifyAll, wait
 

Constructor Detail

Management

public Management()
Method Detail

arraycopy

public static void arraycopy(Object src,
                             int srcPos,
                             Object dest,
                             int destPos,
                             int length)
Copies an array from the specified source array, beginning at the specified position, to the specified position of the destination array. A subsequence of array components are copied from the source array referenced by src to the destination array referenced by dest. The number of components copied is equal to the length argument. The components at positions srcPos through srcPos+length-1 in the source array are copied into positions destPos through destPos+length-1, respectively, of the destination array.

If the src and dest arguments refer to the same array object, then the copying is performed as if the components at positions srcPos through srcPos+length-1 were first copied to a temporary array with length components and then the contents of the temporary array were copied into positions destPos through destPos+length-1 of the destination array.

If dest is null, then a NullPointerException is thrown.

If src is null, then a NullPointerException is thrown and the destination array is not modified.

Otherwise, if any of the following is true, an ArrayStoreException is thrown and the destination is not modified:

Otherwise, if any of the following is true, an IndexOutOfBoundsException is thrown and the destination is not modified:

Otherwise, if any actual component of the source array from position srcPos through srcPos+length-1 cannot be converted to the component type of the destination array by assignment conversion, an ArrayStoreException is thrown. In this case, let k be the smallest nonnegative integer less than length such that src[srcPos+k] cannot be converted to the component type of the destination array; when the exception is thrown, source array components from positions srcPos through srcPos+k-1 will already have been copied to destination array positions destPos through destPos+k-1 and no other positions of the destination array will have been modified. (Because of the restrictions already itemized, this paragraph effectively applies only to the situation where both arrays have component types that are reference types.)

Arrays of type boolean[] not supported.

Parameters:
src - the source array.
srcPos - starting position in the source array.
dest - the destination array.
destPos - starting position in the destination data.
length - the number of array elements to be copied.
Throws:
java.lang.IndexOutOfBoundsException - if copying would cause access of data outside array bounds.
UnsupportedArrayTypeException - if an element in the src array could not be stored into the dest array because of a type mismatch.
java.lang.NullPointerException - if either src or dest is null.

currentTimeMillis

public static short currentTimeMillis()
Returns the current value of the virtual machines millisecond counter. You can use this for measuring periods.

Returns:
the difference between system startup and now (measured in milliseconds, modulo 65536)

gc

public static void gc()
Waits for completion of garbage collecton. This method blocks until the GC passed its loop twice, since classes are unloaded with a delay the heap still don't need to be in its optimal free to used ratio. During gc() other threads may continue unaffected.


getPowerStatus

public static int getPowerStatus()
Get power (battery) status. Only makes sense on battery powered Devices.

Returns:
integer indicating battery power (range 0 (empty) ... 255 (good))

getProperty

public static String getProperty(String key)
Returns the value of a JControl system property. Refer to the properties list at this class desciption above.

Parameters:
key - speciefies the property to get
Returns:
the value of the Property or null if this property doesn't exist

halt

public static void halt()
Just stops the processor. All threads are haltet, the virtual machine is halted and even most of the peripheral components of the processor are halted. Only a reset is able to get JControl back to work. Use this only for debugging.


nextKey

public static String nextKey(String previousKey)
Enumerates the system properties. The properties are dependent from the JControl implementation.

Parameters:
previousKey - some system property key, or null
Returns:
the first key in the internal list if previousKey is null, the next key or null if previousKey is the last key in the list.

powerOff

public static void powerOff()
Turn RTC equipped JControl modules off. The module is shut down immediately.


powerOff

public static void powerOff(int time)
Turn RTC equipped JControl modules off. If time is set to a positive value, the module is shut down after the specified time in seconds (use this method or any keypress on the JControl module to reset this counter). Use time=0 to disable auto powering off.

Parameters:
time - to delay powering off

reboot

public static void reboot(boolean reset)
Reboots the virtual machine. The virtual Machine is terminated and re-initialized from scratch.

Parameters:
reset - set to true if a full reset has to be done, otherwise the VM is only restarted in the previously selected bank

saveProperties

public static void saveProperties()
Saves some properties to the persistent storage. Refer to the properties list at this class desciption above.

See Also:
setProperty(String, String)

setClassPersistence

public static void setClassPersistence(boolean keep)
Marks the calling class not to be removed from the garbage collector. This is reasonable for classes that keep runtime data in static variables and do not have any instances.

Parameters:
keep - true sets the flag, false removes it

setLock

public static void setLock(Object obj,
                           boolean lock)
Locks or unlocks an object in memory. A locked object can't be moved around by the garbage collector so it's contents can be used by interrupt routines. Only useful for native code. Before an object is locked the current thread stops until all garbage collection is finished to avoid strong memory fragmentation. Locked objects also rely on garbage collection as unlocked objects. Class-, Thread- and String-Objects cannot be locked.

Parameters:
obj - the object to lock or unlock
lock - true if the lock is to be set, false to unset

setProperty

public static boolean setProperty(String key,
                                  String value)
Sets the JControl system Property to the specified value. Note that some properties are read-only, changing properties could affect JControl hardware immediately. Refer to the properties list at this class desciption above.

Parameters:
key - specifies the property to change
value - for the property to change to
Returns:
true if the property changed successfully, false if the property is read-only or the value is not valid

start

public static void start(String clss,
                         String[] args,
                         boolean asThread)
Starts a Java application. Invokes the public static void main(String[] args)-method of a class. The class name could be determined at runtime. Class package names must be delemitered with '/'. The method parameters are fixed to String[] (like main(String[] args)).

Parameters:
clss - name of the the class to locate
args - the args to be submitted to main
asThread - set to true to start the application in a new Thread
Throws:
java.lang.NoClassDefFoundError - if the class could not be found
java.lang.NoSuchMethodError - if the method main(String[] args) isn't accessible in the class

switchBank

public static void switchBank()
Switches the flash bank to the bank specified by property system.userbank. Currently there are up to four banks supported (depends on hardware model), bank 0 is reserved for JControls internal use the other banks are for user applications. After reset bank 0 is automatically selected then JControl may switch to a user bank. If the current bank is already switched this method returns normally otherwise the virtual machine is restarted in the new bank.

See Also:
reboot(boolean)