@@ -32,17 +32,17 @@ namespace Modbus {
3232 // ---------------------------------------------------------------------------
3333
3434 // ---------------------------------------------------------------------------
35- AsciiLayer::AsciiLayer (AsciiLayer::Private & dd) : NetLayer (dd ) {}
35+ AsciiLayer::AsciiLayer (std::unique_ptr< AsciiLayer::Private> && dd) : NetLayer (std::move(dd) ) {}
3636
3737 // ---------------------------------------------------------------------------
3838 AsciiLayer::AsciiLayer (const std::string & port, const std::string & settings) :
39- NetLayer (* new Private (port, settings)) {}
39+ NetLayer (std::unique_ptr<AsciiLayer::Private>( new AsciiLayer:: Private (port, settings) )) {}
4040
4141 // ---------------------------------------------------------------------------
4242 SerialMode AsciiLayer::serialMode () {
4343 PIMP_D (AsciiLayer);
4444
45- int m = modbus_serial_get_serial_mode (d->ctx );
45+ int m = modbus_serial_get_serial_mode (d->ctx . get () );
4646 if (m != -1 ) {
4747 return static_cast <SerialMode> (m);
4848 }
@@ -53,14 +53,14 @@ namespace Modbus {
5353 bool AsciiLayer::setSerialMode (SerialMode mode) {
5454 PIMP_D (AsciiLayer);
5555
56- return (modbus_serial_set_serial_mode (d->ctx , static_cast <int > (mode)) != -1 );
56+ return (modbus_serial_set_serial_mode (d->ctx . get () , static_cast <int > (mode)) != -1 );
5757 }
5858
5959 // ---------------------------------------------------------------------------
6060 SerialRts AsciiLayer::rts () {
6161 PIMP_D (AsciiLayer);
6262
63- int r = modbus_serial_get_rts (d->ctx );
63+ int r = modbus_serial_get_rts (d->ctx . get () );
6464 if (r != -1 ) {
6565
6666 return static_cast <SerialRts> (r);
@@ -72,21 +72,21 @@ namespace Modbus {
7272 bool AsciiLayer::setRts (SerialRts r) {
7373 PIMP_D (AsciiLayer);
7474
75- return (modbus_serial_set_rts (d->ctx , static_cast <int > (r)) != -1 );
75+ return (modbus_serial_set_rts (d->ctx . get () , static_cast <int > (r)) != -1 );
7676 }
7777
7878 // ---------------------------------------------------------------------------
7979 int AsciiLayer::rtsDelay () {
8080 PIMP_D (AsciiLayer);
8181
82- return modbus_serial_get_rts_delay (d->ctx );
82+ return modbus_serial_get_rts_delay (d->ctx . get () );
8383 }
8484
8585 // ---------------------------------------------------------------------------
8686 bool AsciiLayer::setRtsDelay (int delay) {
8787 PIMP_D (AsciiLayer);
8888
89- return (modbus_serial_set_rts_delay (d->ctx , delay) != -1 );
89+ return (modbus_serial_set_rts_delay (d->ctx . get () , delay) != -1 );
9090 }
9191
9292 // ---------------------------------------------------------------------------
@@ -131,7 +131,7 @@ namespace Modbus {
131131 setRts (r);
132132 usleep (rtsDelay ());
133133
134- size = write (modbus_get_socket (d->ctx ), msg->adu (), msg->aduSize ());
134+ size = write (modbus_get_socket (d->ctx . get () ), msg->adu (), msg->aduSize ());
135135
136136 usleep (d->oneByteTime * msg->aduSize () + rtsDelay ());
137137 setRts ( (r == RtsDown) ? RtsUp : RtsDown); // restore initial state
@@ -140,7 +140,7 @@ namespace Modbus {
140140 }
141141 else {
142142#endif
143- return write (modbus_get_socket (d->ctx ), msg->adu (), msg->aduSize ());
143+ return write (modbus_get_socket (d->ctx . get () ), msg->adu (), msg->aduSize ());
144144#if MODBUSPP_HAVE_TIOCM_RTS
145145 }
146146#endif
@@ -265,17 +265,17 @@ static char nibble_to_hex_ascii(uint8_t nibble)
265265 NetLayer::Private (Ascii, port, settings, MODBUS_ASCII_MAX_ADU_LENGTH) {
266266
267267 // RTU MUST BE 8-bits
268- ctx = modbus_new_ascii (port.c_str (), AsciiLayer::baud (settings),
268+ ctx. reset ( modbus_new_ascii (port.c_str (), AsciiLayer::baud (settings),
269269 AsciiLayer::parity (settings), 8 ,
270- AsciiLayer::stop (settings));
270+ AsciiLayer::stop (settings)) ) ;
271271
272272 if (! ctx) {
273273
274274 throw std::invalid_argument (
275275 " Unable to create ASCII Modbus Backend("
276276 + port + " ," + settings + " )\n " + lastError ());
277277 }
278- oneByteTime = modbus_serial_get_rts_delay (ctx);
278+ oneByteTime = modbus_serial_get_rts_delay (ctx. get () );
279279 }
280280}
281281
0 commit comments