This is a short summary of Andy's and my discussion of the issue at Wichita, 
and several longer offline discussions before that. It sketches how in the 
future the handling of tool information (and likely all persistent data) will 
be handled in LinuxCNC.


1. the storage and retrieval of all tool related information, and other 
persistent values in linuxcnc will be move to a server process, tentatively 
called toolstore.

2. the toolstore server will be the _only_ place to store any persistent data 
in linuxcnc (this is a bit wider scope that just "tooltable replacement"); in 
particular persistent parameters, but possibly also configuration information 
(again, due to a future distributed setup remote access to config data becomes 
a theme).

3. this server process will be accessible over a networked API consisting of 
request/response sequences of messages, which will be defined in the protobuf 
format, and transported over zeroMQ sockets. There will be no NML version of 
this work.

4. the networked API is needed because the entities relying on the information 
stored might not reside on the same host. Such entities will include, but not 
be limited to, the interpreter, HAL components dealing with tool information, 
UI elements for viewing/changing tool related information etc. 

5. entities accessing the toolstore might request, and operate on, different 
views of the same data, in particular machine view and readahead view. There 
will be an API primitive to synchronize views as needed (see also 8).

6. The semantics of the toolstore is defined by the API, and we envisage the 
toolstore server process to be done in Python, having found no good reason for 
C++. Note that does _not_ prescribe how information will actually be stored, 
which is an implementation aspect of the toolstore server, and might well be 
different subject to needs and integrator discretion. While for the purpose of 
designing an encompassing data model a particular route (sqlite3 and a 
relational data model) have been chosen for good reasons this does not dictate 
in any way what is being used at the storage level.

7. Since iocontrol will not manage any persistent state any more, its role will 
evolve into a scripted interface to the toolchange process and exclusively that 
(HAL pin prototocol as needed); in particular we believe it should become a 
piece of Python amenable to integrator adaptation; there is no good reason left 
to retain a blob of rather immutable C++ for the remaining purposes. There 
might be very well different 'iocontrols' as needed to support a particular 
change process.

8. It might make sense to consider this proposal in the context of this work: 
http://wiki.linuxcnc.org/cgi-bin/wiki.pl?QueuebustersRevisited - what it would 
yield is a completely language-independent way of treating state information, 
which would ease implementation of a new interpreter, or different languages 
downstream.

- Michael


------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers

Reply via email to