Related Documentation:
Previously we created a solver object called PulseGen{}. In this document we will outline the process for adding our objects functionality to the gshell. Up to this point, the PulseGen{} Object should:
Now to make our solver object useable from the ghsell we must add code to some sections of the GENESIS.pm Perl module located in the directory:
Since the PulseGen{} is a standalone solver object, it must be imported into the gshell as an input class. To make the gshell aware of the presence of our solver object, we must add an entry for it to the module variable $all_inputclass_templates located in the GENESIS.pm file. Here we add a hash entry for our pulsegen object to the inputclass template variable.
our $all_inputclass_templates = { perfectclamp => { module_name => ’Experiment’, options => { name => ’name of this inputclass’, command => ’command value’, }, package => ’Experiment::PerfectClamp’, }, pulsegen => { module_name => ’Experiment’, options => { name => ’name of this inputclass’, width1 => ’First pulse width’, level1 => ’First pulse level’, delay1 => ’First pulse delay’, width2 => ’Second pulse width’, level2 => ’Second pulse level’, delay2 => ’Second pulse delay’, baselevel => ’The pulse base level’, triggermode => ’The pulse triggermode, 0 - freerun, 1 - ext trig, 2 - ext gate’, }, package => ’Experiment::PulseGen’, }, }; |
Our entry is named pulsegen and should have three keys:
You can check to see if the gshell properly reads the template by typing list template_classes on the gshell prompt:
genesis > list inputclass_templates
all input class templates: perfectclamp: module_name: Experiment options: command: command value name: name of this inputclass package: Experiment::PerfectClamp pulsegen: module_name: Experiment options: baselevel: The pulse base level delay1: First pulse delay delay2: Second pulse delay level1: First pulse level level2: Second pulse level name: name of this inputclass triggermode: ’The pulse triggermode, 0 - freerun, 1 - ext trig, 2 - ext gate’ width1: First pulse width width2: Second pulse width package: Experiment::PulseGen |