Skip to content

Flag Implementation in modes #100

@Kupaianaha

Description

@Kupaianaha

Expand camerad mode command:

if ( cmd == CAMERAD_MODE ) {
        ret = interface->controller_cmd(cmd, args, retstring);
      }

Ability to take flag and map the flags functionality to an instrument function. An example for this would be a readout flag. Current behavior; mode <?|help|mode>. New behavior: mode <mode> <flag> <etc>. The flag is optional, the instrument developer could use it to designate a function pertaining to mode switched. This flag would map to the instrument designated function. example

mode <fullframe> -r <rxr>

The camera-interface mode handles the fullframe attribute while the instrument specific flag then maps to a function that handles parameters for the readout.

long ArchonInterface::set_camera_mode(std::string args, std::string &retstring) {
    const std::string function("Camera::ArchonInterface::set_camera_mode");
    // Help
    if (args=="?" || args=="help") {
      retstring = CAMERAD_MODE;
      retstring.append( " <name>\n" );
      retstring.append( "  Applies camera settings associated with MODE_<name> specified in the ACF file.\n");
      retstring.append( "  Valid modes are: {" );
      for (const auto &mode : this->controller->modemap) {
        retstring.append(" "); retstring.append(mode.first);
      }
      retstring.append( " }\n" );
      return HELP;
    }
    // call the work function
    return( this->set_camera_mode(args) );
  }
  /***** Camera::ArchonInterface::set_camera_mode *****************************/
  /**
   * @brief      set a camera "mode"
   * @details    This version is for internal use.
   * @param[in]  modeselect  requested mode name
   * @return     ERROR|NO_ERROR
   *
   */
  long ArchonInterface::set_camera_mode(std::string modeselect)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions