smr99 Posted April 20, 2011 Posted April 20, 2011 I don't have a Delta Tau system, but we're about to embark on a project that includes one. I'm responsible for an auxiliary workstation that is to do perform set-up and present status of the Delta Tau. The two systems will communicate over ethernet. The workstation will send commands to the Delta Tau (e.g. "give me your status") that will return results. Naively, that seems like a "remote procedure call". Is it reasonable to implement it this way? For example, to run a server on the Linux side of the Delta Tau that accepts commands and returns results over a TCP socket? Would this process be able to access state of the Real Time side (e.g. to return system status)? I'm thinking of using a lightweight RPC library like Apache Thrift [ http://incubator.apache.org/thrift/ ]. I'd appreciate knowing whether someone has tried this or whether this is a bad idea for some reason. Thanks, -Steve
Sina.Sattari Posted April 20, 2011 Posted April 20, 2011 smr99, Power PMAC runs both Telnet and SSH clients which allows you to send/receive data to/from it. This allows you to communicate with General Purpose Operating System side of the Power PMAC CPU. after the connection is established, you can call a program called "gpascii" which will allow you to access the shared memory through ASCII communication and you can query all available data through predefined structures and commands. Please let me know if this is clear enough.
smr99 Posted April 20, 2011 Author Posted April 20, 2011 Sina, Thanks for the reply. I'd like to clarify a couple of points. Power PMAC runs both Telnet and SSH clients which allows you to send/receive data to/from it. This allows you to communicate with General Purpose Operating System side of the Power PMAC CPU. I expect you meant to say "Telnet and SSH servers" -- i.e. that I can telnet to the PMAC device from my PC. Is that correct? after the connection is established, you can call a program called "gpascii" which will allow you to access the shared memory through ASCII communication and you can query all available data through predefined structures and commands. So it sounds like I can telnet/ssh to the PMAC, log into the linux machine, then run "pgascii" on the machine that provides a command-line interface to the realtime loop. Have I got that right? This will allow me to view and change parameters (e.g. turn on/off a motion scaling mode) of the realtime loop? If the above is true, it sounds like the PMAC has enough horsepower to run my putative lightweight RPC; it shouldn't be any more demanding than the SSH server. My preference is to avoid using gpascii, for a couple of reasons: 1. The PMAC is done by another group and I'd like to define an interface at a high level. I worry that using gpascii means that my PC would need intimate knowledge of the PMAC details, making it hard for them to evolve the PMAC software without affecting me. My hope is to define the interface at a "message" level using an Interface Description Language and leave the PMAC group free to modify things without breaking this interface. 2. I'd prefer to avoid string processing on each end by using a binary packet format. Is this approach feasible? For example, is there a C++-callable API on the linux side that provides a mechanism to view and modify the realtime loop? Is there another way to achieve my goals? Are there examples of systems that do this without using gpascii? Thanks, -Steve
Sina.Sattari Posted April 21, 2011 Posted April 21, 2011 smr99, I expect you meant to say "Telnet and SSH servers" -- i.e. that I can telnet to the PMAC device from my PC. Is that correct? You're 100% correct. Power PMAC has Telnet and SSH servers which allows clients to get connected. So it sounds like I can telnet/ssh to the PMAC, log into the linux machine, then run "pgascii" on the machine that provides a command-line interface to the realtime loop. Have I got that right? This will allow me to view and change parameters (e.g. turn on/off a motion scaling mode) of the realtime loop? Again 100% correct. Once connected, logged in and ran "gpascii", you have access to all the settings inside the Power PMAC, including turning things on/off and changing parameters. it sounds like the PMAC has enough horsepower to run my putative lightweight RPC; Yes. Power PMAC can run your custom server, however, we strongly discourage you from doing so. The main reason is dependency of your server compilation to a specific firmware version of Power PMAC. In order for your server to access Power PMAC motion controller data, you have to use our libraries during your compilation of server. These libraries will be updated every six month which is the cycle for our firmware update. By tying yourself as a separate piece of code, now you have to have a build for every version of firmware and also version control. In contrast, if you utilize the SSH/Telnet + gpascii, you will not face any of these complications. The other suggestion would be to include your server as a background C application as a part of Power PMAC project which the other group is working on. This way, it will be built and downloaded to Power PMAC and any change in firmware will not affect your server since Power PMAC's libraries will be used for compilation. Regards,
Recommended Posts