source: pacpussensors/trunk/Sick/SickSocket.h@ 37

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

First commit of Sick lidars interfaces.

File size: 2.3 KB
Line 
1/*********************************************************************
2// created: 2014/02/02
3// filename: SickSocket.h
4//
5// author: Gerald Dherbomez & Cyril Fougeray
6// Copyright Heudiasyc UMR UTC/CNRS 6599
7//
8// version: $Id: $
9//
10// purpose: Defintion of the SickSocket class
11// Management of the socket connection with Sick sensors
12*********************************************************************/
13
14#ifndef _SICKSOCKET_H_
15#define _SICKSOCKET_H_
16
17#include <cmath>
18#include <QObject>
19#include <QTcpSocket>
20#include <QMutex>
21#include <QEvent>
22
23#include "Pacpus/kernel/road_time.h"
24
25namespace pacpus {
26
27class AbstractSickSensor;
28
29// Sensors classes :
30class SickLDMRSSensor;
31class SickLMSSensor;
32
33class SickFrame
34{
35public:
36 SickFrame()
37 {
38 size = 0;
39 time = 0;
40 msg = NULL;
41 }
42
43 ~SickFrame()
44 {
45 delete[] msg; // check for NULL is not necessary
46 }
47
48 qint64 size;
49 road_time_t time;
50 char * msg;
51};
52
53// forward declaration
54
55class SickFrameEvent
56 : public QEvent
57{
58public:
59 SickFrameEvent()
60 : QEvent((QEvent::Type)(QEvent::User + 522))
61 {}
62
63 ~SickFrameEvent()
64 {}
65
66 SickFrame * frame;
67};
68
69class SickSocket
70 : public QObject
71{
72 Q_OBJECT
73
74public:
75 SickSocket(AbstractSickSensor * parent);
76 ~SickSocket();
77
78public Q_SLOTS:
79 // enable the connection to the server
80 void connectToServer(QString host, int port);
81
82 //avertit que le socket est connecté
83 int socketConnected();
84
85 // appelé lorsque de nouvelles données sont arrivées sur le socket
86 void socketReadyRead();
87
88 // close the connection with the server
89 void closeSocket() { socket->close(); }
90
91 // fonction d'envoi des données au télémètre
92 void sendToServer(QString data);
93Q_SIGNALS:
94 // signal emis pour demander la configuration du télémètre
95 void configuration();
96
97protected slots:
98
99 // le socket est fermé par le serveur
100 void socketConnectionClosed();
101
102 // une erreur est survenue
103 void socketError(QAbstractSocket::SocketError e);
104
105private:
106 QTcpSocket *socket;
107 QMutex mutex;
108
109 AbstractSickSensor *myParent;
110};
111
112} // namespace pacpus
113
114#endif // _SICKSOCKET_H_
Note: See TracBrowser for help on using the repository browser.