SVHReceiveThread.h
Go to the documentation of this file.
1 //
3 // © Copyright 2022 SCHUNK Mobile Greifsysteme GmbH, Lauffen/Neckar Germany
4 // © Copyright 2022 FZI Forschungszentrum Informatik, Karlsruhe, Germany
5 //
6 // This file is part of the Schunk SVH Library.
7 //
8 // The Schunk SVH Library is free software: you can redistribute it and/or
9 // modify it under the terms of the GNU General Public License as published by
10 // the Free Software Foundation, either version 3 of the License, or (at your
11 // option) any later version.
12 //
13 // The Schunk SVH Library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
16 // Public License for more details.
17 //
18 // You should have received a copy of the GNU General Public License along with
19 // the Schunk SVH Library. If not, see <https://www.gnu.org/licenses/>.
20 //
22 
23 //----------------------------------------------------------------------
39 //----------------------------------------------------------------------
40 #ifndef DRIVER_SVH_SVH_RECEIVE_THREAD_H_INCLUDED
41 #define DRIVER_SVH_SVH_RECEIVE_THREAD_H_INCLUDED
42 
45 
47 
48 #include <atomic>
49 #include <chrono>
50 #include <functional>
51 #include <memory>
52 
54 
55 namespace driver_svh {
56 
59  std::function<void(const SVHSerialPacket& packet, unsigned int packet_count)>;
60 
68 {
69 public:
76  SVHReceiveThread(const std::chrono::microseconds& idle_sleep,
77  std::shared_ptr<Serial> device,
78  ReceivedPacketCallback const& received_callback);
79 
82 
84  void run();
85 
87  void stop() { m_continue = false; };
88 
90  unsigned int receivedPacketCount() { return m_packets_received; }
91 
97 
98 private:
100  std::atomic<bool> m_continue{true};
101 
103  std::chrono::microseconds m_idle_sleep;
104 
106  std::shared_ptr<Serial> m_serial_device;
107 
109  enum
110  {
120  } typedef tState;
121 
124 
126  uint16_t m_length;
127 
129  uint8_t m_checksum1;
130  uint8_t m_checksum2;
131 
133  std::vector<uint8_t> m_data;
134 
137 
139  std::atomic<unsigned int> m_packets_received;
140 
142  unsigned int m_skipped_bytes;
143 
145  bool receiveData();
146 
149 };
150 
151 } // namespace driver_svh
152 
153 #endif
driver_svh::SVHReceiveThread::m_checksum1
uint8_t m_checksum1
Checksum of packet.
Definition: SVHReceiveThread.h:129
driver_svh::SVHReceiveThread::m_length
uint16_t m_length
length of received serial data
Definition: SVHReceiveThread.h:126
driver_svh::SVHSerialPacket
The SerialPacket holds the (non generated) header and data of one message to the SVH-Hardware.
Definition: SVHSerialPacket.h:80
driver_svh::SVHReceiveThread::receivedPacketCount
unsigned int receivedPacketCount()
return the count of received packets
Definition: SVHReceiveThread.h:90
driver_svh::ArrayBuilder
Definition: ByteOrderConversion.h:146
driver_svh::SVHReceiveThread::m_skipped_bytes
unsigned int m_skipped_bytes
counter for skipped bytes in case no packet is detected
Definition: SVHReceiveThread.h:142
driver_svh::SVHReceiveThread::receiveData
bool receiveData()
state machine processing received data
Definition: SVHReceiveThread.cpp:102
driver_svh::SVHReceiveThread::~SVHReceiveThread
~SVHReceiveThread()
Default DTOR.
Definition: SVHReceiveThread.h:81
driver_svh::SVHReceiveThread::RS_HEADE_R2
@ RS_HEADE_R2
Definition: SVHReceiveThread.h:112
driver_svh::SVHReceiveThread::m_received_callback
ReceivedPacketCallback m_received_callback
function callback for received packages
Definition: SVHReceiveThread.h:148
driver_svh
Definition: SVHControlCommand.h:39
driver_svh::SVHReceiveThread::RS_ADDRESS
@ RS_ADDRESS
Definition: SVHReceiveThread.h:114
driver_svh::SVHReceiveThread::m_received_state
tState m_received_state
current state of the state machine
Definition: SVHReceiveThread.h:123
driver_svh::SVHReceiveThread::m_checksum2
uint8_t m_checksum2
Definition: SVHReceiveThread.h:130
ByteOrderConversion.h
driver_svh::SVHReceiveThread::RS_CHECKSU_M2
@ RS_CHECKSU_M2
Definition: SVHReceiveThread.h:119
driver_svh::SVHReceiveThread::resetReceivedPackageCount
void resetReceivedPackageCount()
resetReceivedPackageCount Resets the received package count to zero. This can be usefull to set all c...
Definition: SVHReceiveThread.h:96
driver_svh::SVHReceiveThread::m_data
std::vector< uint8_t > m_data
length of received serial data
Definition: SVHReceiveThread.h:133
driver_svh::SVHReceiveThread::m_ab
driver_svh::ArrayBuilder m_ab
pointer to array builder object for packet receive
Definition: SVHReceiveThread.h:136
driver_svh::SVHReceiveThread::run
void run()
run method of the thread, executes the main program in an infinite loop
Definition: SVHReceiveThread.cpp:62
driver_svh::SVHReceiveThread::m_packets_received
std::atomic< unsigned int > m_packets_received
packets counter
Definition: SVHReceiveThread.h:139
driver_svh::SVHReceiveThread::RS_LENGT_H1
@ RS_LENGT_H1
Definition: SVHReceiveThread.h:115
driver_svh::SVHReceiveThread::RS_CHECKSU_M1
@ RS_CHECKSU_M1
Definition: SVHReceiveThread.h:118
driver_svh::SVHReceiveThread::RS_INDEX
@ RS_INDEX
Definition: SVHReceiveThread.h:113
SVHSerialPacket.h
driver_svh::ReceivedPacketCallback
std::function< void(const SVHSerialPacket &packet, unsigned int packet_count)> ReceivedPacketCallback
definition of function callback for received packages
Definition: SVHReceiveThread.h:59
Serial.h
Contains a class that enables access to serial devices.
driver_svh::serial::Serial
Enables acces to serial devices.
Definition: Serial.h:68
driver_svh::SVHReceiveThread::m_continue
std::atomic< bool > m_continue
Flag to end the run() method from external callers.
Definition: SVHReceiveThread.h:100
driver_svh::SVHReceiveThread::RS_LENGT_H2
@ RS_LENGT_H2
Definition: SVHReceiveThread.h:116
driver_svh::SVHReceiveThread
Class for receiving messages from the serial device.
Definition: SVHReceiveThread.h:67
driver_svh::SVHReceiveThread::RS_HEADE_R1
@ RS_HEADE_R1
Definition: SVHReceiveThread.h:111
driver_svh::SVHReceiveThread::m_serial_device
std::shared_ptr< Serial > m_serial_device
pointer to serial device object
Definition: SVHReceiveThread.h:106
driver_svh::SVHReceiveThread::SVHReceiveThread
SVHReceiveThread(const std::chrono::microseconds &idle_sleep, std::shared_ptr< Serial > device, ReceivedPacketCallback const &received_callback)
SVHReceiveThread Constructs a new Receivethread.
Definition: SVHReceiveThread.cpp:47
driver_svh::SVHReceiveThread::tState
tState
enum for receive packet state machine states
Definition: SVHReceiveThread.h:109
driver_svh::SVHReceiveThread::RS_DATA
@ RS_DATA
Definition: SVHReceiveThread.h:117
driver_svh::SVHReceiveThread::stop
void stop()
stop the run() method
Definition: SVHReceiveThread.h:87
driver_svh::SVHReceiveThread::m_idle_sleep
std::chrono::microseconds m_idle_sleep
sleep time during run() if idle
Definition: SVHReceiveThread.h:103


schunk_svh_library
Author(s): Georg Heppner, Lars Pfotzer, Felix Exner, Johannes Mangler, Stefan Scherzinger, Pascal Becker
autogenerated on Fri Apr 14 2023 02:53:52