Public Types | Public Member Functions | Protected Member Functions | Protected Attributes
rp::standalone::rplidar::RPlidarDriverSerialImpl Class Reference

#include <rplidar_driver_serial.h>

Inheritance diagram for rp::standalone::rplidar::RPlidarDriverSerialImpl:
Inheritance graph
[legend]

List of all members.

Public Types

enum  { MAX_SCAN_NODES = 2048 }
enum  { LEGACY_SAMPLE_DURATION = 476 }

Public Member Functions

virtual u_result ascendScanData (rplidar_response_measurement_node_t *nodebuffer, size_t count)
virtual u_result checkExpressScanSupported (bool &support, _u32 timeout=DEFAULT_TIMEOUT)
virtual u_result checkMotorCtrlSupport (bool &support, _u32 timeout=DEFAULT_TIMEOUT)
virtual u_result connect (const char *port_path, _u32 baudrate, _u32 flag)
virtual void disconnect ()
 Disconnect with the RPLIDAR and close the serial port.
virtual u_result getDeviceInfo (rplidar_response_device_info_t &, _u32 timeout=DEFAULT_TIMEOUT)
virtual u_result getFrequency (bool inExpressMode, size_t count, float &frequency, bool &is4kmode)
virtual u_result getHealth (rplidar_response_device_health_t &, _u32 timeout=DEFAULT_TIMEOUT)
virtual u_result getSampleDuration_uS (rplidar_response_sample_rate_t &rateInfo, _u32 timeout=DEFAULT_TIMEOUT)
virtual u_result grabScanData (rplidar_response_measurement_node_t *nodebuffer, size_t &count, _u32 timeout=DEFAULT_TIMEOUT)
virtual bool isConnected ()
 Returns TRUE when the connection has been established.
virtual u_result reset (_u32 timeout=DEFAULT_TIMEOUT)
 RPlidarDriverSerialImpl ()
virtual u_result setMotorPWM (_u16 pwm)
virtual u_result startMotor ()
 Start RPLIDAR's motor when using accessory board.
virtual u_result startScan (bool force=false, bool autoExpressMode=true)
virtual u_result startScanExpress (bool fixedAngle, _u32 timeout=DEFAULT_TIMEOUT)
virtual u_result startScanNormal (bool force, _u32 timeout=DEFAULT_TIMEOUT)
virtual u_result stop (_u32 timeout=DEFAULT_TIMEOUT)
virtual u_result stopMotor ()
 Stop RPLIDAR's motor when using accessory board.
virtual ~RPlidarDriverSerialImpl ()

Protected Member Functions

u_result _cacheCapsuledScanData ()
u_result _cacheScanData ()
void _capsuleToNormal (const rplidar_response_capsule_measurement_nodes_t &capsule, rplidar_response_measurement_node_t *nodebuffer, size_t &nodeCount)
void _disableDataGrabbing ()
u_result _sendCommand (_u8 cmd, const void *payload=NULL, size_t payloadsize=0)
u_result _waitCapsuledNode (rplidar_response_capsule_measurement_nodes_t &node, _u32 timeout=DEFAULT_TIMEOUT)
u_result _waitNode (rplidar_response_measurement_node_t *node, _u32 timeout=DEFAULT_TIMEOUT)
u_result _waitResponseHeader (rplidar_ans_header_t *header, _u32 timeout=DEFAULT_TIMEOUT)
u_result _waitSampleRate (rplidar_response_sample_rate_t *res, _u32 timeout=DEFAULT_TIMEOUT)
u_result _waitScanData (rplidar_response_measurement_node_t *nodebuffer, size_t &count, _u32 timeout=DEFAULT_TIMEOUT)

Protected Attributes

rplidar_response_capsule_measurement_nodes_t _cached_previous_capsuledata
_u16 _cached_sampleduration_express
_u16 _cached_sampleduration_std
rplidar_response_measurement_node_t _cached_scan_node_buf [2048]
size_t _cached_scan_node_count
rp::hal::Thread _cachethread
rp::hal::Event _dataEvt
bool _is_previous_capsuledataRdy
bool _isConnected
bool _isScanning
bool _isSupportingMotorCtrl
rp::hal::Locker _lock
rp::hal::serial_rxtx_rxtx

Detailed Description

Definition at line 39 of file rplidar_driver_serial.h.


Member Enumeration Documentation

anonymous enum
Enumerator:
MAX_SCAN_NODES 

Definition at line 43 of file rplidar_driver_serial.h.

anonymous enum
Enumerator:
LEGACY_SAMPLE_DURATION 

Definition at line 47 of file rplidar_driver_serial.h.


Constructor & Destructor Documentation

Definition at line 70 of file rplidar_driver.cpp.

Definition at line 81 of file rplidar_driver.cpp.


Member Function Documentation

Definition at line 474 of file rplidar_driver.cpp.

Definition at line 371 of file rplidar_driver.cpp.

void rp::standalone::rplidar::RPlidarDriverSerialImpl::_capsuleToNormal ( const rplidar_response_capsule_measurement_nodes_t &  capsule,
rplidar_response_measurement_node_t *  nodebuffer,
size_t &  nodeCount 
) [protected]

Definition at line 414 of file rplidar_driver.cpp.

Definition at line 878 of file rplidar_driver.cpp.

u_result rp::standalone::rplidar::RPlidarDriverSerialImpl::_sendCommand ( _u8  cmd,
const void *  payload = NULL,
size_t  payloadsize = 0 
) [protected]

Definition at line 784 of file rplidar_driver.cpp.

u_result rp::standalone::rplidar::RPlidarDriverSerialImpl::_waitCapsuledNode ( rplidar_response_capsule_measurement_nodes_t &  node,
_u32  timeout = DEFAULT_TIMEOUT 
) [protected]

Definition at line 702 of file rplidar_driver.cpp.

u_result rp::standalone::rplidar::RPlidarDriverSerialImpl::_waitNode ( rplidar_response_measurement_node_t *  node,
_u32  timeout = DEFAULT_TIMEOUT 
) [protected]

Definition at line 616 of file rplidar_driver.cpp.

u_result rp::standalone::rplidar::RPlidarDriverSerialImpl::_waitResponseHeader ( rplidar_ans_header_t *  header,
_u32  timeout = DEFAULT_TIMEOUT 
) [protected]

Definition at line 827 of file rplidar_driver.cpp.

u_result rp::standalone::rplidar::RPlidarDriverSerialImpl::_waitSampleRate ( rplidar_response_sample_rate_t *  res,
_u32  timeout = DEFAULT_TIMEOUT 
) [protected]
u_result rp::standalone::rplidar::RPlidarDriverSerialImpl::_waitScanData ( rplidar_response_measurement_node_t *  nodebuffer,
size_t &  count,
_u32  timeout = DEFAULT_TIMEOUT 
) [protected]

Definition at line 675 of file rplidar_driver.cpp.

u_result rp::standalone::rplidar::RPlidarDriverSerialImpl::ascendScanData ( rplidar_response_measurement_node_t *  nodebuffer,
size_t  count 
) [virtual]

Ascending the scan data according to the angle value in the scan.

Parameters:
nodebufferBuffer provided by the caller application to do the reorder. Should be retrived from the grabScanData
countThe caller must initialize this parameter to set the max data count of the provided buffer (in unit of rplidar_response_measurement_node_t). Once the interface returns, this parameter will store the actual received data count. The interface will return RESULT_OPERATION_FAIL when all the scan data is invalid.

Implements rp::standalone::rplidar::RPlidarDriver.

Definition at line 551 of file rplidar_driver.cpp.

Check whether the device support express mode.

Parameters:
supportReturn the result.
timeoutThe operation timeout value (in millisecond) for the serial port communication.

Implements rp::standalone::rplidar::RPlidarDriver.

Definition at line 272 of file rplidar_driver.cpp.

Check whether the device support motor control. Note: this API will disable grab.

Parameters:
supportReturn the result.
timeoutThe operation timeout value (in millisecond) for the serial port communication.

Implements rp::standalone::rplidar::RPlidarDriver.

Definition at line 934 of file rplidar_driver.cpp.

u_result rp::standalone::rplidar::RPlidarDriverSerialImpl::connect ( const char *  port_path,
_u32  baudrate,
_u32  flag 
) [virtual]

Open the specified serial port and connect to a target RPLIDAR device

Parameters:
port_paththe device path of the serial port e.g. on Windows, it may be com3 or \. on Unix-Like OS, it may be /dev/ttyS1, /dev/ttyUSB2, etc
baudratethe baudrate used For most RPLIDAR models, the baudrate should be set to 115200
flagother flags Reserved for future use, always set to Zero

Implements rp::standalone::rplidar::RPlidarDriver.

Definition at line 89 of file rplidar_driver.cpp.

Disconnect with the RPLIDAR and close the serial port.

Implements rp::standalone::rplidar::RPlidarDriver.

Definition at line 114 of file rplidar_driver.cpp.

u_result rp::standalone::rplidar::RPlidarDriverSerialImpl::getDeviceInfo ( rplidar_response_device_info_t &  info,
_u32  timeout = DEFAULT_TIMEOUT 
) [virtual]

Get the device information of the RPLIDAR include the serial number, firmware version, device model etc.

Parameters:
infoThe device information returned from the RPLIDAR
timeoutThe operation timeout value (in millisecond) for the serial port communication

Implements rp::standalone::rplidar::RPlidarDriver.

Definition at line 179 of file rplidar_driver.cpp.

u_result rp::standalone::rplidar::RPlidarDriverSerialImpl::getFrequency ( bool  inExpressMode,
size_t  count,
float &  frequency,
bool &  is4kmode 
) [virtual]

Calcuate RPLIDAR's current scanning frequency from the given scan data Please refer to the application note doc for details Remark: the calcuation will be incorrect if the specified scan data doesn't contains enough data

Parameters:
inExpressModeIndicate whether the RPLIDAR is in express mode
countThe number of sample nodes inside the given buffer
frequencyThe scanning frequency (in HZ) calcuated by the interface.
is4kmodeReturn whether the RPLIDAR is working on 4k sample rate mode.

Implements rp::standalone::rplidar::RPlidarDriver.

Definition at line 218 of file rplidar_driver.cpp.

u_result rp::standalone::rplidar::RPlidarDriverSerialImpl::getHealth ( rplidar_response_device_health_t &  health,
_u32  timeout = DEFAULT_TIMEOUT 
) [virtual]

Retrieve the health status of the RPLIDAR The host system can use this operation to check whether RPLIDAR is in the self-protection mode.

Parameters:
healthThe health status info returned from the RPLIDAR
timeoutThe operation timeout value (in millisecond) for the serial port communication

Implements rp::standalone::rplidar::RPlidarDriver.

Definition at line 141 of file rplidar_driver.cpp.

u_result rp::standalone::rplidar::RPlidarDriverSerialImpl::getSampleDuration_uS ( rplidar_response_sample_rate_t &  rateInfo,
_u32  timeout = DEFAULT_TIMEOUT 
) [virtual]

Get the sample duration information of the RPLIDAR.

Parameters:
rateInfoThe sample duration information returned from the RPLIDAR
timeoutThe operation timeout value (in millisecond) for the serial port communication

Implements rp::standalone::rplidar::RPlidarDriver.

Definition at line 884 of file rplidar_driver.cpp.

u_result rp::standalone::rplidar::RPlidarDriverSerialImpl::grabScanData ( rplidar_response_measurement_node_t *  nodebuffer,
size_t &  count,
_u32  timeout = DEFAULT_TIMEOUT 
) [virtual]

Wait and grab a complete 0-360 degree scan data previously received. The grabbed scan data returned by this interface always has the following charactistics:

1) The first node of the grabbed data array (nodebuffer[0]) must be the first sample of a scan, i.e. the start_bit == 1 2) All data nodes are belong to exactly ONE complete 360-degrees's scan 3) Note, the angle data in one scan may not be ascending. You can use API ascendScanData to reorder the nodebuffer.

Parameters:
nodebufferBuffer provided by the caller application to store the scan data
countThe caller must initialize this parameter to set the max data count of the provided buffer (in unit of rplidar_response_measurement_node_t). Once the interface returns, this parameter will store the actual received data count.
timeoutMax duration allowed to wait for a complete scan data, nothing will be stored to the nodebuffer if a complete 360-degrees' scan data cannot to be ready timely.

The interface will return RESULT_OPERATION_TIMEOUT to indicate that no complete 360-degrees' scan can be retrieved withing the given timeout duration.

caller application can set the timeout value to Zero(0) to make this interface always returns immediately to achieve non-block operation.

Implements rp::standalone::rplidar::RPlidarDriver.

Definition at line 524 of file rplidar_driver.cpp.

Returns TRUE when the connection has been established.

Implements rp::standalone::rplidar::RPlidarDriver.

Definition at line 121 of file rplidar_driver.cpp.

Ask the RPLIDAR core system to reset it self The host system can use the Reset operation to help RPLIDAR escape the self-protection mode.

Implements rp::standalone::rplidar::RPlidarDriver.

Definition at line 127 of file rplidar_driver.cpp.

Set the RPLIDAR's motor pwm when using accessory board, currently valid for A2 only.

Parameters:
pwmThe motor pwm value would like to set

Implements rp::standalone::rplidar::RPlidarDriver.

Definition at line 981 of file rplidar_driver.cpp.

Start RPLIDAR's motor when using accessory board.

Implements rp::standalone::rplidar::RPlidarDriver.

Definition at line 998 of file rplidar_driver.cpp.

u_result rp::standalone::rplidar::RPlidarDriverSerialImpl::startScan ( bool  force = false,
bool  autoExpressMode = true 
) [virtual]

Ask the RPLIDAR core system to enter the scan mode(Normal/Express, Express mode is 4k mode) A background thread will be created by the RPLIDAR driver to fetch the scan data continuously. User Application can use the grabScanData() interface to retrieved the scan data cached previous by this background thread.

Parameters:
forceForce the core system to output scan data regardless whether the scanning motor is rotating or not.
autoExpressModeForce the core system to trying express mode first, if the system does not support express mode, it will use normal mode.
timeoutThe operation timeout value (in millisecond) for the serial port communication.

Implements rp::standalone::rplidar::RPlidarDriver.

Definition at line 337 of file rplidar_driver.cpp.

Implements rp::standalone::rplidar::RPlidarDriver.

Definition at line 292 of file rplidar_driver.cpp.

Implements rp::standalone::rplidar::RPlidarDriver.

Definition at line 232 of file rplidar_driver.cpp.

Ask the RPLIDAR core system to stop the current scan operation and enter idle state. The background thread will be terminated

Parameters:
timeoutThe operation timeout value (in millisecond) for the serial port communication

Implements rp::standalone::rplidar::RPlidarDriver.

Definition at line 355 of file rplidar_driver.cpp.

Stop RPLIDAR's motor when using accessory board.

Implements rp::standalone::rplidar::RPlidarDriver.

Definition at line 1012 of file rplidar_driver.cpp.


Member Data Documentation

rplidar_response_capsule_measurement_nodes_t rp::standalone::rplidar::RPlidarDriverSerialImpl::_cached_previous_capsuledata [protected]

Definition at line 106 of file rplidar_driver_serial.h.

Definition at line 104 of file rplidar_driver_serial.h.

Definition at line 103 of file rplidar_driver_serial.h.

rplidar_response_measurement_node_t rp::standalone::rplidar::RPlidarDriverSerialImpl::_cached_scan_node_buf[2048] [protected]

Definition at line 100 of file rplidar_driver_serial.h.

Definition at line 101 of file rplidar_driver_serial.h.

Definition at line 109 of file rplidar_driver_serial.h.

Definition at line 98 of file rplidar_driver_serial.h.

Definition at line 107 of file rplidar_driver_serial.h.

Definition at line 93 of file rplidar_driver_serial.h.

Definition at line 94 of file rplidar_driver_serial.h.

Definition at line 95 of file rplidar_driver_serial.h.

Definition at line 97 of file rplidar_driver_serial.h.

Definition at line 99 of file rplidar_driver_serial.h.


The documentation for this class was generated from the following files:


rplidar_ros
Author(s):
autogenerated on Fri Dec 16 2016 03:59:16