User Tools

Site Tools


eeros_architecture:hal:feature_functions

This is an old revision of the document!


Feature Functions

All inputs and outputs of the HAL have a common set of properties and functions for reading or writing them. Some hardware channels have specific properties not common to other channels, e.g. a pulse width modulated output needs to be assigned its base frequency. Another example would be a digital to analog converter which has a calibration function which needs to be called upon request.
Feature functions are functions which are specific to a HAL object. They can be called by a user with

  void callOutputFeature(OutputInterface *obj, std::string featureName, ArgTypesOut... args);
  void callInputFeature(InputInterface *obj, std::string featureName, ArgTypesIn... args);

The parameter are as follows:

  1. OutputInterface / InputInterface: the HAL object
  2. featureName: name of the function as defined in the appropriate hardware wrapper library, see Hardware Libraries.
  3. args: arguments to this function

The following example shows how to set the frequency of a pulse width modulated output. This is usually done just once. After this you can release the object. Later the control system defines a peripheral output objects which is connected to our HAL object. The control system will then periodically write to this output and set the duty cycle.

  HAL& hal = HAL::instance();
  eeros::hal::Output<double>* pwm = hal.getScalableOutput("pwm1");
  hal.callOutputFeature(pwm, "setPwmFrequency", 100.0);
  hal.releaseOutput("pwm1");
  ...
  PeripheralOutput<double> motorSpeed("pwm1");
  motorSpeed.callOutputFeature("setPwmFrequency", 200.0);
  ...

Accessing Feature Functions from the Control System

  HAL& hal = HAL::instance();
  eeros::hal::Output<double>* pwm = hal.getScalableOutput("pwm1");
  hal.callOutputFeature(pwm, "setPwmFrequency", 100.0);
  hal.releaseOutput("pwm1");
  ...
  PeripheralOutput<double> motorSpeed("pwm1");
  motorSpeed.callOutputFeature("setPwmFrequency", 200.0);
  ...
eeros_architecture/hal/feature_functions.1498125351.txt.gz · Last modified: 2017/06/22 11:55 (external edit)