blob: 4fe08c9477f7dffedac17ea488d1a1b7ee4cd25b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
#include <distrio_helper.h>
#include <distrio_error.h>
#include <distrio_ioI.h>
#include <ace/Task.h>
#include <iostream>
class Io_manager : public ACE_Task < ACE_MT_SYNCH > {
public:
Io_manager () { }
~Io_manager () { }
private:
int svc (void) {
while (1) {
/** TODO: implement some cyclic gpio stuff */
sleep (1);
}
}
};
class My_digital : public Distrio_Digital_i {
public:
My_digital (std::string _name) { my_name = _name; }
~My_digital () { };
::CORBA::Long id (void) { return my_id; }
::Distrio::Error *name (::CORBA::String_out _name) {
_name = CORBA::string_dup (my_name.c_str ());
return distrio_success ();
}
::Distrio::Error *set () {
std::cout << "set" << std::endl;
return distrio_success ();
}
::Distrio::Error *reset () {
std::cout << "reset" << std::endl;
return distrio_success ();
}
void id (::CORBA::Long id) { my_id = id; }
private:
std::string my_name;
::CORBA::Long my_id;
};
ACE_TMAIN (int argc, ACE_TCHAR *argv[])
{
int ret = 0;
My_digital *digital;
/* Io_manager manager; */
if (init_corba (argc, argv))
return -EINVAL;
if (run_orb ())
return -EINVAL;
digital = new My_digital (std::string ("pin huhu"));
if (register_digital (digital)) {
ret = -EINVAL;
goto out;
}
std::cout << "registered id: " << digital->id () << std::endl;
/* TODO: activate if cyclic stuff is needed
manager.activate ();
manager.wait ();
*/
join_orb ();
out:
free (digital);
return ret;
}
|