It certinly does Mr Bagnall, synchronized
JCSP is an implementation of Communicating Sequential Processes (CSP) for the Java programming language.
Here is the Java Doc for JCSP
http://www.cs.kent.ac.uk/projects/ofa/j ... 1-rc3-doc/
as you can see its quite large and as such not suitable for the small memory on Robots. So a masters student at my university has wrote a smaller version of JCSP which is being called JCSP RE (robot edition ) which gives us what we need to be able to implement parallelism on a smaller scale on the NXT we dont need the graphics packages for example and lots of other things mostly just the fundamentals. I was given the jcsp packages wrote by the masters student based on his research into what the University of Kents has been doing with JCSP and his work give me the parallel prgramming environment I needed to build a working program for the master and slave robots using a process-oriented design. From the JCSP RE packages I have been able to make Active Components which implement the CSP Process interface.
A CSP process is a component that encapsulates data structures and algorithms for manipulating data contained inside it. Its data and algorithms are private and the external world can not see the data and cannot execute its algorithms. Each process is considered alive, it executes its own algorithms on its own data. The Processes interacts through CSP synchronising primitives, channels and events.
A process in java using JCSP RE is an instance of a class which implements the CSProcess interface. Its actions are defined in the run method.
When one of these processes runs it interacts via CSP channels.
I never thought of my program as a general API as such Mr Bagnall just a program for my NXT but im sure with a bit of thinking it could be made into an API for others to get started with certinly the JCSP RE packages will be getting published along with a joint paper at conference some time this year, my professor was telling me a little bit about it because i was asking him will the org.jcsp.*(RE) packages that im using be getting published so others can use it and he said it would be along with the paper thats being wrote now. You got me thinking now Mr Bagnall I could possibly make general ActiveComponents such as the
ActivelightSensor Process
AcitveMotorProcess
ActiveSensor
ActiveUltrasonicSensor
ActiveBluetoothTx
ActiveBluetoothRx
and so on , i will run the idea past my professor and see if its possible I dont really know because without the JCSP RE you cant make the ActiveProcess mentioned above, unless as part of the release of the JCSP RE we include all the processes like the BTtx and BTrx , AM, ALS, AUS, with relevant documentation for people to start working with instead of building their own processes from scratch we can just include the ones we have already and people could just modify them as they need to and extend them for their own needs. I put this to my professor and see what needs to be done to make it all into and API and we can get that put into place.
My contribution is based around firstly making use of the JCSP RE effectively building active processes and having my (concurrent/multithreaded/parallel) program exploite the bluetooth technology on the NXT Brick by creating an Active Bluetooth transmit process that transmitted data to the slave robot and for the slave an Active Bluetooth Receive process as well as others to effectively control it by sending movement data via bluetooth.
Of course none of my work could have been done if it wasn't for you guys writing LeJOS giving us excellent classes to work with. When i post up my source code you will see how I have taken a simple BTtx class and converted to an ActiveProcess configured it to interact with my control processes to get movement data and send it via bluetooth to the slave robot.