source: pacpussensors/trunk/Sick/SickComponent.cpp@ 38

Last change on this file since 38 was 37, checked in by cfougera, 11 years ago

First commit of Sick lidars interfaces.

File size: 4.4 KB
Line 
1/*********************************************************************
2// created: 2014-02-01 - 12:08
3// filename: SickComponent.cpp
4//
5// author: Cyril Fougeray
6// Copyright Heudiasyc UMR UTC/CNRS 6599
7//
8// version: $Id: $
9//
10// purpose: The acquisition component of the Sick sensors (parent class)
11//
12*********************************************************************/
13
14#include "SickComponent.h"
15
16//#include "AlascaDataGenerator.h"
17#include "SickSocket.h"
18#include "Pacpus/kernel/ComponentFactory.h"
19#include "Pacpus/kernel/DbiteException.h"
20#include "Pacpus/kernel/DbiteFileTypes.h"
21#include "Pacpus/kernel/Log.h"
22#include "Pacpus/PacpusTools/ShMem.h"
23
24#include <iostream>
25#include <QTcpSocket>
26#include <string>
27
28using namespace std;
29
30
31namespace pacpus {
32
33DECLARE_STATIC_LOGGER("pacpus.base.SickComponent");
34
35// Construct the factory
36static ComponentFactory<SickComponent> sFactory("SickComponent");
37
38
39//////////////////////////////////////////////////////////////////////////
40/// Constructor.
41SickComponent::SickComponent(QString name)
42 : ComponentBase(name)
43{
44 LOG_TRACE("constructor(" << name << ")");
45
46 S_sensors = new std::vector<AbstractSickSensor*>();
47}
48
49//////////////////////////////////////////////////////////////////////////
50/// Destructor.
51SickComponent::~SickComponent()
52{
53 LOG_TRACE("destructor");
54}
55
56//////////////////////////////////////////////////////////////////////////
57/// Called by the ComponentManager to start the component
58void SickComponent::startActivity()
59{
60 for(std::vector<AbstractSickSensor*>::iterator it = S_sensors->begin(); it != S_sensors->end(); ++it){
61 (*it)->startActivity();
62 }
63}
64
65//////////////////////////////////////////////////////////////////////////
66/// Called by the ComponentManager to stop the component
67void SickComponent::stopActivity()
68{
69 for(std::vector<AbstractSickSensor*>::iterator it = S_sensors->begin(); it != S_sensors->end(); ++it){
70 (*it)->stopActivity();
71 }
72}
73
74//////////////////////////////////////////////////////////////////////////
75/// Called by the ComponentManager to pass the XML parameters to the
76/// component
77ComponentBase::COMPONENT_CONFIGURATION SickComponent::configureComponent(XmlComponentConfig config)
78{
79 /*
80 * <SickComponent sickldmrs_1="192.168.0.1:1202" >
81 */
82 /// Sick LD-MRS
83 int num = 0;
84 while (param.getProperty("sickldmrs_"+QString::number(num)) != QString::null){
85 QString information = param.getProperty("sickldmrs_"+QString::number(num));
86 QStringList list = information.split(":");
87 int recording = 0;
88 if (param.getProperty("sickldmrs_"+QString::number(num)+"_recording") != QString::null)
89 {
90 recording = param.getProperty("sickldmrs_"+QString::number(num)+"_recording").toInt();
91 }
92
93 S_sensors->push_back(new SickLDMRSSensor(this, "sickldmrs_"+QString::number(num), list.at(0), list.at(1).toInt(), recording));
94 ++num;
95 }
96
97 /// Sick LMS 151
98 num = 0;
99 while (param.getProperty("sicklms151_"+QString::number(num)) != QString::null){
100 QString information = param.getProperty("sicklms151_"+QString::number(num));
101 QStringList list = information.split(":");
102 int recording = 0;
103 if (param.getProperty("sicklms151_"+QString::number(num)+"_recording") != QString::null)
104 {
105 recording = param.getProperty("sicklms151_"+QString::number(num)+"_recording").toInt();
106 }
107
108 S_sensors->push_back(new SickLMSSensor(this, "sicklms151_"+QString::number(num), list.at(0), list.at(1).toInt(), recording));
109 ++num;
110 }
111
112 num = 0;
113 while (param.getProperty("sicklms511_"+QString::number(num)) != QString::null){
114 QString information = param.getProperty("sicklms511_"+QString::number(num));
115 QStringList list = information.split(":");
116 int recording = 0;
117 if (param.getProperty("sicklms511_"+QString::number(num)+"_recording") != QString::null)
118 {
119 recording = param.getProperty("sicklms511_"+QString::number(num)+"_recording").toInt();
120 }
121
122 S_sensors->push_back(new SickLMSSensor(this, "sicklms511_"+QString::number(num), list.at(0), list.at(1).toInt(), recording));
123 ++num;
124 }
125
126 return ComponentBase::CONFIGURED_OK;
127}
128
129
130} // namespace pacpus
Note: See TracBrowser for help on using the repository browser.