# Changelog

## Unreleased

## v1.5.2 2022-05-20

### Added
- Support RSP128/RSP80/RSP48 lidars
- Support EOS lidar
- Add option to usleep() when no packets to be handled

### Changed
- Limit error information when error happens
- Use raw buffer for packet callback
- Split frame by seq 1 (for MEMS lidars)
- Remove difop handle thread

## v1.5.1 - 2022-04-28

### Changed
- When replay MSOP/DIFOP file, use the timestamp when it is recording.
For Mechanical LiDARs,
- Split frame by block instead of by packet
- Let every point has its own timestamp, instead of using the block's one.
- 

## v1.5.0 - 2022-04-21
-- Refactory the coder part

## v1.4.6 - 2022-04-21

### Added
- Check msop timeout
- Support M2
- add cmake option ENABLE_RECVMMSG

### Changed
- Optimize point cloud transform

## v1.4.5 - 2022-03-09

### Added
- Support dense attribute
- Support to bind to a specifed ip
- Limit max size of packet queue
- Apply SO_REUSEADDR option to the receiving socket
- Support user layer and tail layer
- add macro option to disable the PCAP function.

### Changed
- Join multicast group with code instead of shell script

### Fixed
- Fix memory leaks problem
- Fix temperature calculation (for M1 only)

## v1.4.0 - 2021-11-01

### Changed
Optimazation to decrease CPU uage, includes: 
- Replace point with point cloud as template parameter
- Instead of alloc/free packet, use packet pool
- Instead of alloc/free point cloud, always keep point cloud memory
- By default, use conditional macro to disable scan_msg/camera_trigger related code

## V1.3.1
### Added
- Add vlan support
- Add somip support
- Add split frame when pkt_cnt < last_pkt_cnt in mems
- Add temperature in mems
- Add ROCK support

### Fixed
- Fix don't get time when PointType doesn't have timestamp member
- Fix ROCK light center compensation algorithm

### Removed
- Remove redundance condition code in vec.emplace_back(std::move(point)) in mech lidars

## v1.3.0 - 2020-11-10

### Added

- Add RSHELIOS support
- Add RSM1 (B3) support
- Add Windows support
- Add rs_driver_viewer, a small tool to show point cloud
- Add save_by_rows argument
- Add multi-cast support
- Add points transformation function

### Changed

- Update some decoding part for LiDARs
- Change the definition of packet message
- Update documents



## v1.2.1 - 2020-09-04

### Fixed

- Fix the timestamp calculation for RS16,RS32 & RSBP. Now the output lidar timestamp will be UTC time and will not be affected by system time zone.

## v1.2.0 - 2020-09-01

### Added

- Add interface in driver core to get lidar temperature
- Add support for point type XYZIRT (R - ring id)(T - timestamp)
- Add RS80 support
- Add interface in driver core to get camera trigger info

### Changed

- Update the decoding part for ruby in echo-dual mode
- Update the compiler version from C++11 to C++14

## v1.1.0 - 2020-07-01

### Added

- Add the limit of the length of the msop queue 
- Add the exception capture when loading .csv file

### Fixed
- Fix the bug in calculating the timestamp of 128
- Fix the bug in calculating RPM

### Changed
- Update some functions' names
- Update the program structure

### Removed
- Remove unused variables in point cloud message

## v1.0.0 - 2020-06-01

### Added 

- New program structure

- Easy to do advanced development

- Remove the redundant code in old driver.

  
