[Rock-dev] Syskit: change behaciour of syskit shell
Matthias Goldhoorn
matthias.goldhoorn at dfki.de
Fri Jan 24 08:58:22 CET 2014
On 23.01.2014 13:39, Matthias Goldhoorn wrote:
> On 23.01.2014 11:57, Sylvain Joyeux wrote:
>> On Thursday, January 23, 2014 08:26:04 AM Matthias Goldhoorn wrote:
>>> On 22.01.2014 17:00, Sylvain Joyeux wrote:
>>>> On 01/22/2014 04:31 PM, Matthias Goldhoorn wrote:
>>>>> I had in my controllerscript a method like this:
>>>>> 40 module Robot
>>>>> 41 def set_state(state, substate)
>>>>> 42 State.lowlevel_state = state
>>>>> 43 State.lowlevel_substate = substate
>>>>> 44 end
>>>>> 45 end
>>>>>
>>>>> As far as i remember i could call the method directly from the
>>>>> commandline.
>>>>> Is this not possible anymore, what's the way to do this?
>>>> The only this feature could have ever worked is if you had
>>>>
>>>> def self.set_state(...)
>>>> end
>>> Even this does not work anymore...
>> OK ... Sorry for the change.
>>
>> Reimplementing it is not really possible neither really nice. There is however
>> a way to extend the shell interface with custom commands. See e.g.
>> lib/syskit/shell.rb for an example.
> I implemented my extension like:
>
> module Avalon
> class ShellInterface < Roby::Interface::CommandLibrary
>
> def set_state(state, substate)
> State.lowlevel_state = state
> State.lowlevel_substate = substate
> end
> command :set_state, "set the current runstate for Avalon as
> state,substate pair",
> :state => "The given State (0=> off, 3=> autonomous)",
> :substate => "The given substate"
>
> def tester
> STDOUT.puts "hallo test funktion"
> end
> command :tester, "This tests this module"
> end
> end
> module Robot
> def self.avalon
> STDOUT.puts "Loading the new avalon interface"
> @avalon_interface_internal ||= Avalon::ShellInterface.new(Roby.app)
> end
> end
>
> Roby::Interface::Interface.subcommand 'avalon', Avalon::ShellInterface,
> 'Commands specific to Avalon'
>
> Unfortunatly it seems it does not get loaded.
>
> localhost:48902 > avalon.class
> => NilClass
>
> localhost:48902 > help
>
> Commands
> --------
> actions(): lists a summary of the available actions
> describe(action): gives details about the given action
> disable_notifications(): disables the forwarding of notifications
> enable_notifications(): enables the forwarding of notifications
> jobs(): returns the list of non-finished jobs
> kill_job(job_id): kills the given job
> reload_actions(): reloads the files in models/actions/
>
> Subcommands (use help <subcommand name> for more details)
> -----------
> syskit: Commands specific to Syskit
> =>
>
>
> What's missing here?
>
> Matthias
>
>
>
Found it,
the code has to be executed before the syskit shell get's initiated.
I moved the code to config/<robot_model>.rb
Only to keep this information within the ML ;)
Matthias
--
Dipl.-Inf. Matthias Goldhoorn
Space and Underwater Robotic
Universität Bremen
FB 3 - Mathematik und Informatik
AG Robotik
Robert-Hooke-Straße 1
28359 Bremen, Germany
Zentrale: +49 421 178 45-6611
Besuchsadresse der Nebengeschäftstelle:
Robert-Hooke-Straße 5
28359 Bremen, Germany
Tel.: +49 421 178 45-4193
Empfang: +49 421 178 45-6600
Fax: +49 421 178 45-4150
E-Mail: matthias.goldhoorn at informatik.uni-bremen.de
Weitere Informationen: http://www.informatik.uni-bremen.de/robotik
More information about the Rock-dev
mailing list