Add option to disable signal handlers (#65)
This gives the user the option to create their own signal handler without having create::Create interfere. They can disable the sigint/sigterm handler and be responsible for disconnecting from the robot themselves. Signed-off-by: Jacob Perron <jacobmperron@gmail.com>
This commit is contained in:
parent
fbc87dea3f
commit
1563e2b3e1
8 changed files with 35 additions and 19 deletions
|
@ -14,7 +14,7 @@ namespace create {
|
|||
|
||||
namespace ublas = boost::numeric::ublas;
|
||||
|
||||
void Create::init() {
|
||||
void Create::init(bool install_signal_handler) {
|
||||
mainMotorPower = 0;
|
||||
sideMotorPower = 0;
|
||||
vacuumMotorPower = 0;
|
||||
|
@ -44,18 +44,21 @@ namespace create {
|
|||
dtHistoryLength = 100;
|
||||
data = std::shared_ptr<Data>(new Data(model.getVersion()));
|
||||
if (model.getVersion() == V_1) {
|
||||
serial = std::make_shared<SerialQuery>(data);
|
||||
serial = std::make_shared<SerialQuery>(data, install_signal_handler);
|
||||
} else {
|
||||
serial = std::make_shared<SerialStream>(data);
|
||||
serial = std::make_shared<SerialStream>(
|
||||
data, create::util::STREAM_HEADER, install_signal_handler);
|
||||
}
|
||||
}
|
||||
|
||||
Create::Create(RobotModel m) : model(m) {
|
||||
init();
|
||||
Create::Create(RobotModel m, bool install_signal_handler) : model(m) {
|
||||
init(install_signal_handler);
|
||||
}
|
||||
|
||||
Create::Create(const std::string& dev, const int& baud, RobotModel m) : model(m) {
|
||||
init();
|
||||
Create::Create(const std::string& dev, const int& baud, RobotModel m, bool install_signal_handler)
|
||||
: model(m)
|
||||
{
|
||||
init(install_signal_handler);
|
||||
serial->connect(dev, baud);
|
||||
}
|
||||
|
||||
|
|
|
@ -7,14 +7,19 @@
|
|||
|
||||
namespace create {
|
||||
|
||||
Serial::Serial(std::shared_ptr<Data> d) :
|
||||
signals(io, SIGINT, SIGTERM),
|
||||
Serial::Serial(std::shared_ptr<Data> d, bool install_signal_handler) :
|
||||
signals(io),
|
||||
port(io),
|
||||
dataReady(false),
|
||||
isReading(false),
|
||||
data(d),
|
||||
corruptPackets(0),
|
||||
totalPackets(0) {
|
||||
totalPackets(0)
|
||||
{
|
||||
if (install_signal_handler) {
|
||||
signals.add(SIGINT);
|
||||
signals.add(SIGTERM);
|
||||
}
|
||||
}
|
||||
|
||||
Serial::~Serial() {
|
||||
|
|
|
@ -8,7 +8,8 @@
|
|||
|
||||
namespace create {
|
||||
|
||||
SerialQuery::SerialQuery(std::shared_ptr<Data> d) : Serial(d),
|
||||
SerialQuery::SerialQuery(std::shared_ptr<Data> d, bool install_signal_handler)
|
||||
: Serial(d, install_signal_handler),
|
||||
streamRecoveryTimer(io),
|
||||
packetID(ID_BUMP_WHEELDROP),
|
||||
packetByte(0),
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
namespace create {
|
||||
|
||||
SerialStream::SerialStream(std::shared_ptr<Data> d, const uint8_t& header) : Serial(d), readState(READ_HEADER), headerByte(header) {
|
||||
SerialStream::SerialStream(std::shared_ptr<Data> d, const uint8_t& header, bool install_signal_handler) : Serial(d, install_signal_handler), readState(READ_HEADER), headerByte(header) {
|
||||
}
|
||||
|
||||
bool SerialStream::startSensorStream() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue