You can write your own applications using the ControlDeck framework. You don't even need a setup file! Here is an example that you might put in a main() loop:
cd_control_system* csys = new cd_control_system("MySystem");
CD2module* cdm = new CD2module("test module");
csys->add_control_module(cdm);
cd_control_deck* cdeck = new cd_control_deck();
cdeck->add_control_system(csys);
cdeck->initialize();
cdeck->start();
If you want to do more complex operations, cd_control_deck::run_step() and cd_control_deck::delay_step() can be used to control the execution.
The following sample module reads a number into a Control Deck system, and reads it back to confirm the software is working.
#include <iostream>
#import "CD2module.h"
using namespace std;
CD2module::CD2module(const char* mod_name) : cd_control_module(mod_name)
{
a = 1.234;
b = 9.999;
a1 = 0.000;
b1 = 0.000;
cout << "Constructing CD2module" << endl;
}
void CD2module::initialize_data()
{
a_ref = create_data(NULL, "a_path", sd_type_double, "m", "fake data in meters", &a);
}
void CD2module::initialize_data_requests()
{
a1_ref = request_data(NULL, "a_path", sd_type_double);
}
void CD2module::show_variables()
{
double t1(0.00);
double t2(0.00);
double t3(0.00);
double t4(0.00);
bool x1 = value_as_type(a_ref, sd_type_double, &t1);
bool x2 = value_as_type(a1_ref, sd_type_double, &t2);
cout << "did retrieving a_ref succeed? " << x1 << endl;
cout << "a: " << a << " and from CD: " << t1 << endl;
cout << "\n" << endl;
cout << "did retrieving a1_ref succeed? " << x2<< endl;
cout << "a: " << a << " and from CD: " << t2 << endl;
}
1.7.2