[Home]History of RemappingStatus

LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org

Revision 25 . . (edit) January 8, 2012 3:55 am by KimK [fixed some minor typos (Thanks, mhaberler, for all your hard work!)]
Revision 24 . . (edit) January 8, 2012 3:35 am by KimK [fixed some minor typos (Thanks, mhaberler, for all your hard work!)]
Revision 23 . . (edit) November 8, 2011 7:42 am by MichaelHaberler
Revision 22 . . (edit) November 7, 2011 5:32 pm by MichaelHaberler
Revision 21 . . (edit) November 7, 2011 5:31 pm by MichaelHaberler
Revision 20 . . (edit) November 6, 2011 9:40 pm by MichaelHaberler
Revision 19 . . (edit) November 6, 2011 11:45 am by MichaelHaberler
Revision 18 . . (edit) November 4, 2011 7:55 pm by MichaelHaberler
Revision 17 . . (edit) November 4, 2011 7:45 pm by MichaelHaberler
Revision 16 . . (edit) November 2, 2011 12:30 am by MichaelHaberler
Revision 15 . . (edit) November 2, 2011 12:22 am by MichaelHaberler
Revision 14 . . (edit) November 1, 2011 5:46 pm by MichaelHaberler
Revision 13 . . November 1, 2011 5:45 pm by MichaelHaberler [*describe example configs]
Revision 12 . . (edit) October 30, 2011 7:51 pm by MichaelHaberler
Revision 11 . . (edit) October 28, 2011 1:35 pm by MichaelHaberler
Revision 10 . . (edit) October 28, 2011 12:21 pm by MichaelHaberler
Revision 9 . . (edit) October 28, 2011 11:31 am by MichaelHaberler
Revision 8 . . (edit) October 28, 2011 11:21 am by MichaelHaberler
Revision 7 . . (edit) October 28, 2011 11:18 am by MichaelHaberler
Revision 6 . . (edit) October 28, 2011 11:15 am by MichaelHaberler
Revision 5 . . (edit) October 28, 2011 11:11 am by MichaelHaberler
Revision 4 . . (edit) October 28, 2011 11:06 am by MichaelHaberler
Revision 3 . . (edit) October 28, 2011 10:48 am by MichaelHaberler
Revision 2 . . (edit) October 28, 2011 10:42 am by MichaelHaberler
Revision 1 . . (edit) October 28, 2011 10:21 am by MichaelHaberler [*describe status of the remapping branch]
  

Difference (from prior major revision) (minor diff, author diff)

Changed: 5c5
merge could be considered, barring outside review. Note I'm not saying
merge could be considered, barring outside review (done-merged into master; dust still settling). Note I'm not saying

Changed: 8c8
ontop of master. Many of those are cleanups; a few times backing out a
on top of master. Many of those are cleanups; a few times backing out a

Changed: 17c17
Configurations to explore would be under configs/sim/remap . A simulator build is good enough to exercise them.
Configurations to explore would be under configs/sim/remap . Those aren't listed in the configuration selector - cd to the directory of the demo and run 'emc <the ini file>'.

Changed: 19,21c19
Since this branch (currently at
http://git.mah.priv.at/gitweb/emc2-dev.git/shortlog/refs/heads/remapping-preview-1)
contains several areas of work, here's a rundown and their status. It's also meant as an aide to reviewers (hint, hint, handwave!):
A simulator build is good enough to exercise them.

Changed: 23c21
Update: it's now http://git.mah.priv.at/gitweb/emc2-dev.git/shortlog/refs/heads/remapping-preview-2 - rebased on master (wont fast-forward)
If you are building yourself by pulling from git.linuxcnc.org, you need to 'sudo apt-get install libboost-python-dev' .

Added: 24a23,32
This is what the example configs do:

* getting-started: introduces defining new codes in NGC procedures and Python
* extend-builtins: demonstrates remapping builtins T,M6,M61,S,F. This could be a starting point for your own configuration. Also shows how to refer to the builtin behaviour of codes.
* manual-toolchange-with-tool-length-switch: extend M6 so it does a tool length probe after the change.
* rack-toolchange: this tries to mimic the racktoolchanger patch - without a patch, but with remapping codes
* iocontrol-removed: a 'research part' of the remapping branch: It demonstrates removing iocontrol altogether, and replacing it by a Python plugin in task. Other than that, the rack-toolchanger example is used. Also, experimentally use sqlite3 for tooltable storage. Not suggested for production use.

Since this work
contains several areas of changes, here's a rundown and their status. It's also meant as an aide to reviewers (hint, hint, handwave!):

Changed: 29c37
Remapping basically means 'you can define the behaviour of a code by means of an NGC oword procedure'.
Remapping basically means 'you can define the behaviour of a code by means of an NGC Oword procedure'.

Changed: 40c48
Please note that the current support for user-defined toolchange in master (M6_COMMAND, T_COMMAND in the ini file) is badly broken and must be replaced anyway. It does not deal with queuebusters properly, which I didnt sufficiently understand at the time.
Please note that the current support for user-defined toolchange in master (M6_COMMAND, T_COMMAND in the ini file) is badly broken and must be replaced anyway. It does not deal with queuebusters properly, which I didn't sufficiently understand at the time.

Changed: 44c52
there are several Python *extension* modules (Pyhton is the main
there are several Python *extension* modules (Python is the main

Changed: 48,49c56,57
Powers' ;-) but it isnt for the faint of heart. Towards that end I'm
looking into some 'standard Python glue' and establish standard
Powers' ;-) but it isn't for the faint of heart. Towards that end I'm
looking into some 'standard Python glue' and establishing standard

Changed: 51,52c59,60
easier to use. I think in most cases folks wouldnt need to touch upon
Python glue code even if its used.
easier to use. I think in most cases folks wouldn't need to touch upon
Python glue code even if it's used.

Changed: 57c65
Embdedded Python brings in a new build dependency,
Embedded Python brings in a new build dependency,

Changed: 66c74
The homebrew data structures, in particular named params, oword label
The homebrew data structures, in particular named params, Oword label

Changed: 78,79c86,87
std::map is a bit of an overkill because sorted access isnt
needed. But that requires compiling with the --c0xx flag and that I
std::map is a bit of an overkill because sorted access isn't
needed. But that requires compiling with the --c0xx flag, and that I

Changed: 91c99
probably will be deleted. This is superseded by the '(abort, msg)'
probably will be deleted (done). This is superseded by the '(abort, msg)'

Changed: 96c104
(interp_namedparams.cc). I need to check wether they are all documented.
(interp_namedparams.cc). I need to check whether they are all documented (done).

Changed: 98,99c106,107
INI file variables can now be referenced by the interpreter directly,
without going through some pathetic HAL cludge (like setting a pin
INI file variables can now be referenced read-only by the interpreter directly,
without going through some pathetic HAL kludge (like setting a pin

Changed: 126c134
Some of the features I wasnt sure about, some are potentially
Some of the features I wasn't sure about, some are potentially

Added: 129a138,142

rs274 -i <inifile> option




The standalone interpreter, aka 'sai' (src/emc/sai), which is used mostly for regression tests, now sports a '-i <inifile>' option.
That was was essential for remap regression tests, and reduces the excuse potential for not writing regression tests 'because those can't be tested with rs274'.


Changed: 160c173
That changed by introduction of context-free features, like oword
That changed by introduction of context-free features, like Oword

Changed: 162c175
recognizer. Suddenly, you couldnt read()/execute() by just by looking
recognizer. Suddenly, you couldn't read()/execute() by just by looking

Changed: 167,168c180,181
inadaequate at that point. However, either that issue wasnt
recognized, or ignored - the consequence was a set of kludges around
inadequate at that point. However, either that issue wasn't recognized,
or ignored - the consequence was a set of kludges around

Changed: 170c183
bugtracker and search for oword and MDI bugs - most of those bugs
bugtracker and search for Oword and MDI bugs - most of those bugs

Changed: 174,175c187,188
- it is upside down. Instead of reading a block, and trying out to
figure what to do next and what the interpreter's state could be at
- it is upside down. Instead of reading a block, and trying to
figure out what to do next and what the interpreter's state could be at

Changed: 179c192
'execute it on its own' until done, or some action on the using code
'execute it on its own' until done, or some action on using the code

Changed: 184,185c197,198
should signal that by setting a conditon variable like in pthreads,
describe its state and wait. This would in effect completely
should signal that by setting a condition variable like in pthreads,
describe its state, and wait. This would in effect completely

Changed: 191,192c204,205
control structures and queuebusters in the interpreter, with it
reducing potential for bugs.
control structures and queuebusters in the interpreter, and with it
reduce the potential for bugs.

Changed: 201c214
for handling MDI commands.
for handling MDI commands, or executing a remapped code for that matter.

Changed: 215c228
for hard realtime, but it is severly limited by two issues:
for hard realtime, but it is severely limited by two issues:

Changed: 227c240
* communication between several UI's and task, for instance gladevcp, Axis and milltask.
* communication between several UI's and task, for instance gladevcp, Axis, and milltask.

Changed: 233c246
* classifiying interpreter state into:
* classifying interpreter state into:

Changed: 235,237c248,250
** shared config/UI parameter information
** shared interpreter state (modal state)
** per-instance unshared execution state (oword, call stack etc)
** potentially shared config/UI parameter information
** potentially shared interpreter state (modal state)
** per-instance unshared execution state (Oword, call stack etc)

Changed: 239c252
* introduce a 'extensible distributed shared memory mechanism with late binding' to enable sharing of the stuff which isnt currently shared, but should be, and which is not hard-realtime (eg tooltable + extensions, UI parameterization etc).
* introduce a 'extensible distributed shared memory mechanism with late binding' to enable sharing of the stuff which isn't currently shared, but should be, and which is not hard-realtime (e.g., tooltable + extensions, UI parameterization, etc.)

Changed: 242c255
The second to last item sounds complex, but isnt IMV. There is a good candidate,
The second to last item sounds complex, but isn't, in my view. There is a good candidate,

Changed: 245c258
doesnt necessarily mean a lot of code changes to the interpreter; a
doesn't necessarily mean a lot of code changes to the interpreter; a

Changed: 247c260
long way. And it's really fast and low overhead.
long way. And it's really fast and low overhead. Here's a 5-slide introduction: http://www.slideshare.net/jasoncbooth/exploring-redis - a more thorough intro (61 slides) is here http://www.slideshare.net/phpguru/redis-101-10043219 .

Changed: 253c266
;logging: this is a mess, and dysfunctional (eg a separate interpreter log not intertwined with task logging is next to useless). a unified logging approach is overdue. I guess selecting a logging framework is the next step. I'd see Apache's log4cxx as a candidate. Probably a similar decision should be made for Python code.
;logging: this is a mess, and dysfunctional (e.g., a separate interpreter log not intertwined with task logging is next to useless). A unified logging approach is overdue. I guess selecting a logging framework is the next step. I'd see Apache's log4cxx as a candidate. Probably a similar decision should be made for Python code.

Changed: 257c270
;Axis-NG: Axis is a great piece of work. That said, it is extensible probably only by jepler, which is why people come up with desparate extension workarounds like pyvcp or gladevcp. Second, the Tkinter/Tcl? usage was appropriate at the time, but that base is deprecating. It would be great to come up with a direction statement which addresses those two issues: a extension/plugin mechanism, and the Gui software vehicle. IMO for the latter GTK and Qt are candidates; wxWidgets i'd prefer to avoid. If if nobody starts working on this tomorrow, it would be good to have a direction, even if only to read up on the prerequisites.
;Axis-NG: Axis is a great piece of work. That said, it is extensible probably only by jepler, which is why people come up with desperate extension workarounds like pyvcp or gladevcp. Second, the Tkinter/Tcl? usage was appropriate at the time, but that base is deprecating. It would be great to come up with a direction statement which addresses those two issues: a extension/plugin mechanism, and the Gui software vehicle. IMO for the latter GTK and Qt are candidates; wxWidgets I'd prefer to avoid. If nobody starts working on this tomorrow, it would be good to have a direction, even if only to read up on the prerequisites.

Changed: 261,262c274
I entertaining opinions (especially by the EMC2 Board of Directors), in particular on the work items.

I am entertaining opinions (especially by the EMC2 Board of Directors), in particular on the work items.

LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org
Search:
Published under a Creative Commons License