forked from chiragmajithia/libcaer
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathChangeLog
More file actions
551 lines (499 loc) · 28.7 KB
/
ChangeLog
File metadata and controls
551 lines (499 loc) · 28.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
Release 2.5.0 - 17.07.2018
INCOMPATIBLE CHANGES
- davis.h: removed support for stereo microphones, this was never used in any
released devices, only for internal experiments on a limited prototype run.
- Events: event packet allocation functions are now in the various headers,
making it possible to create, use and destroy event packets and events by
just including the headers, without having to link to the full library.
CAER_EVENTS_HEADER_ONLY needs to be set before inclusion for this to fully
work, else there is a dependency on caerLog(), which is still in the library.
This is very useful for tools or network receivers. A re-compile of any
programs using these functions is required to avoid runtime linking errors.
- CMake: cleanup linked libraries, libm and librt are not part of the
default dependencies anymore, they need to be added manually to programs
that actually use them. Same goes for thread support, which is now only
exported as the 'CAER_C_THREAD_LIBS' CMake variable but not automatically
included anywhere.
NEW FEATURES
- Device Discovery: added capability of finding any accessible supported
devices on a system, getting information on them, and then opening them.
New header 'devices/device_discover.h' with functions caerDeviceDiscover()
and caerDeviceDiscoverOpen(), example provided in 'examples/device_discovery.c'.
C++ interface available in 'devices/device_discover.hpp', namespace is
'libcaer::devices::discover'.
- Error reporting: both caerDeviceOpen() and caerDeviceOpenSerial() now
set 'errno' on failure to provide more precise reasons for the failure,
error codes are available in the enum 'caer_error_codes'.
- log.h: new functions caerLogDisable(true/false) to turn off all logging
for a region of code (per-thread), and caerLogDisabled() to check current
status of logging. C++ interface available in 'libcaer::log'.
- C++ packetContainer.hpp: support construction of a new packet container
based on a C-style caerEventPacketContainer, with optional memory
ownership take-over for the contained packets.
- C++ utils.hpp: libcaer::events::utils::makeShared/Unique now support the
Matrix 4x4 event type too.
- C++ frame.hpp: new define LIBCAER_FRAMECPP_OPENCV_INSTALLED to enable
special getOpenCVMat() support independently of libcaer itself having
support for OpenCV.
- events/common.h: add new functions caerEventPacketGetDataSizeEvents()
and caerEventPacketGetSizeEvents() to get size of data part of an
event packet, disregarding capacity.
- Examples: added 'davis_simple_2cam.c' example for a two camera setup.
- device.h: CAER_SUPPORTED_DEVICES_NUMBER define is now public.
- eDVS: added 'serialPortName' and 'serialBaudRate' members to its info
structure, contents are OS-specific.
- eDVS: analyze startup message to confirm the presence of an eDVS device.
- eDSV: flush buffers on open to avoid possible garbage data from previous
open attempts to interfere with eDVS detection.
- USB: check both firmware and logic version always and notify users of
needed upgrades for both at the same time; this avoids multiple notify
and upgrade cycles if both change quickly or the user hasn't upgraded
in a long time.
- filters/dvs_noise.h: new filter module to reduce noise from the DVS
output, integrates a hot pixel filter (with learning), a background-
activity filter and a refractory period filter. C++ interface available.
New example 'davis_cvgui_filters.cpp' shows usage.
- devices/davis.h: new define DAVIS_CONFIG_DVS_FILTER_PIXEL_AUTO_TRAIN to
automatically discover abnormally active pixels (hot-pixels) in the camera
output and then filter them at the hardware level (FPGA/CPLD). This only
works on newer camera that support the hardware pixel filtering, it does
nothing on older systems and just returns 'false' on get/set.
- devices/davis.h: support new DAVIS346 with InvenSense MPU 9250, new IMU
options via defines DAVIS_CONFIG_IMU_GYRO_DLPF and DAVIS_CONFIG_IMU_ACCEL_DLPF.
- CMake: new flag ENABLE_STATIC available to enable static compilation
of libcaer in addition to shared library.
- Code is now formatted using clang-format.
BUG FIXES
- C++: add header inclusions for possibly missing types.
- C++ devices/serial.hpp: fix warning about shadowed variable, improve
error message on failure to open by adding serial baud-rate to message.
- C++ packetContainer.hpp: fix construction of event packets, resulting
size was incorrect due to wrong vector sizing at initialization.
- C++ events/common.hpp: shrink_to_fit() fails on empty packets, since
resize to zero is not allowed. Now correctly detects this case.
- Devices: documentation updates, fix typos and precise usage of
'deviceString' member in device info structures; it is only valid
during the life-time of the device!
- eDVS: name case changed to 'EDVS-4337' to follow firmware.
- eDVS: faster startup due to shorter delays.
- eDVS: request exclusive access to serial device on Unix (Linux/MacOSX),
this was already the default on Windows.
- Dynap-SE: delay after initial configuration extended from 1s to 4s,
some devices seem to need longer delays to start up properly.
- USB: better log messages on failure, reduce event handling timeout to
10ms from 1s for quicker response to shutdown requests.
- AutoExposure: debug log messages from the auto-exposure module now
respect the per-device log-level settings.
Release 2.4.2 - 23.03.2018
NEW FEATURES
- Install shared CMake file 'caer-base.cmake' to simplify common build
steps and checks used in libcaer, cAER and its modules.
- examples/davis_cvgui.cpp: improved example, checks for libcaer compiled
with proper OpenCV support (issue #55), shows events in a separate
window, compilation documented in README (PR #53).
BUG FIXES
- Improve Python examples, use numpby for better performance.
- C++ Devices: let users derive from device classes (PR #56).
- C++ EventPackets: fix iteration over empty packet, due to back()
incorrectly throwing an exception when size is zero because of the
usage of the -1 backwards lookup notation.
Release 2.4.0 - 05.12.2017
INCOMPATIBLE CHANGES
- DAVIS: require new firmware version 4 and logic version 9912.
- Dynap-SE: require new logic version 5.
- devices/dynapse.h: the chip IDs are now mapped to be 0,1,2,3 for
U0,U1,U2,U3 respectively, making them as easy to use and loop over
as the core IDs. The defines have been updated, so if you've been
properly using them, no change is needed other than a recompile.
- src/dynapse.c: spike events coming from a Dynap-SE's chip ID 0 (U0) do
now have a chip ID of 0, the same as the chip ID used to configure the
system, removing this small inconsistency. All usages of
'DYNAPSE_CONFIG_DYNAPSE_U0+1' must now remove the '+1', chip U0 is not
to be treated differently anymore in regards to its USB output chip ID.
- events/spike.h: caerSpikeEventGetX() and caerSpikeEventGetY() were
inverting the meaning of column/row, resulting in inconsistencies
when using those two functions in comparison to system configuration.
This has now been corrected, and the functions moved to devices/dynapse.h
with the new names of caerDynapseSpikeEventGetX/Y(), due to them being
specific to the architecture of the Dynap-SE neuromorphic processor.
Now both chips, cores and neurons, as interpreted through these functions,
are set out in row-major order (similar to computer vision).
- devices/dynapse.h: the caerDynapseWriteSram() function is being deprecated
in favour of its newer variant caerDynapseWriteSramN().
- devices/dynapse.h: removed define DYNAPSE_CONFIG_SRAMROW.
Use DYNAPSE_CONFIG_NUMNEURONS and DYNAPSE_CONFIG_NUMSRAM_NEU.
- devices/dynapse.h: removed defines DYNAPSE_MAX_USER_USB_PACKET_SIZE,
DYNAPSE_CONFIG_MAX_USB_TRANSFER and DYNAPSE_CONFIG_MAX_PARAM_SIZE.
Those are internal implementation details, and caerDynapseSendDataToUSB()
now accepts arbitrarily sized data to send, the user does not have to
divide it in chunks of a particular size anymore.
- devices/dynapse.h: improved and changed 'struct caer_bias_dynapse' to
reflect actual biasing of device correctly.
- devices/device.h: CAER_HOST_CONFIG_PACKETS_MAX_CONTAINER_PACKET_SIZE's
default value has been changed to zero, disabling the size division of
packets by default. Packet size is now dictated, by default, only by
the time interval, with a value of 10 milliseconds.
NEW FEATURES
- Packaging: packages for Fedora, Debian and Gentoo Linux, as well as
MacOS X via Homebrew are now available for each new libcaer release.
For more information please visit:
https://inivation.com/support/software/libcaer/#automated-installation
- Python bindings: added bindings for Python 2/3 using SWIG. See
bindings/python_swig/ and bindings/python_swig/examples/ for examples.
NOTE: this needs a patched Swig, see 'https://github.com/swig/swig/pull/1166'.
- CMake: added support for generating RPM/DEB files via CPack, to
easily be able to package one's own build.
- DAVIS/Dynap-SE: added support for AER and Multiplexer statistics, to
examine number of events received, filtered and dropped.
- DAVIS: added support for hardware DVS Refractory Period filter on
newer FX3 based devices.
- DAVIS: added support for DVS ROI filtering.
- DAVIS: added support for APS Quad-ROI (up to four independent
regions of interest can be configured and enabled). The number of
supported ROI regions is defined with DAVIS_APS_ROI_REGIONS_MAX.
- devices/davis.h: added 'caerDavisROIConfigure()' function to atomically
and efficiently configure and enable ROI regions.
- devices/davis.h: expanded 'struct caer_davis_info' to account for the
above new features: 'dvsHasROIFilter', 'dvsHasStatistics' and 'muxHasStatistics'.
- devices/dynapse.h: expanded 'struct caer_dynapse_info' to account for
the above new features: 'aerHasStatistics' and 'muxHasStatistics'.
- devices/device.h: added 'caerDeviceConfigGet64()' to read 64-bit
configuration parameters, needed for statistics support.
- src/dynapse.c: the Dynap-SE caerDeviceSendDefaultConfig() function now
performs full initialization of the device and its chips. To reliably
work with the device, make sure to always call this before setting
your own custom configuration afterwards.
- devices/dynapse.h: added caerDynapseWriteSramN() function, uses global
neuron ID [0,1023] instead of core ID/neuron ID syntax. Arguments are
also directly compatible with caerDynapseGenerateSramBits().
- devices/dynapse.h: renamed define DYNAPSE_CONFIG_NUMCAM to
DYNAPSE_CONFIG_NUMCAM_NEU to better explain what it is.
- devices/dynapse.h: added caerBiasDynapseGenerate() and caerBiasDynapseParse()
functions to handle the improved 'struct caer_bias_dynapse' and
transform it to/from the bit-wise bias configuration representation.
- devices/dynapse.h: added caerDynapseGenerateSramBits() function to
generate SRAM configuration bits based on input arguments.
- devices/dynapse.h: added caerDynapseCoreXYToNeuronId() and
caerDynapseCoreAddrToNeuronId() functions to calculate chip global
neuron addresses (range [0,1023]).
- devices/dynapse.h: added caerDynapseSpikeEventFromXY() function to
have a reverse transformation to caerDynapseSpikeEventGetX/Y().
- devices/dynapse.h: added DYNAPSE_CONFIG_TAU2_SET, DYNAPSE_CONFIG_TAU1_RESET
and DYNAPSE_CONFIG_TAU2_RESET defines for caerDeviceConfigSet()
usage, to allow configuration of which neuron leakage bias to use.
- events/common.h: added caerGenericEventCopy() function to copy
events from one place in memory to another.
- events/*.h: added two new functions 'caerXXXEventPacketFromPacketHeader()'
and 'caerXXXEventPacketFromPacketHeaderConst()' to transform a packet
header pointer to the proper event packet pointer. This checks the
type, and is needed for proper bindings support.
- ringbuffer.h/hpp: the ring-buffer functions for producer-consumer
high-performance communication between two threads are now exposed
as part of the API, to allow re-use in other projects such as cAER.
- examples/dynapse_simple.c: added simple example for Dynap-SE access.
- examples/davis_cvgui.cpp: added example for converting frames to OpenCV
Mat and visualizing them using OpenCV's GUI.
- src/timestamps.h: added timestamp debugging code, to measure drift
between host and device. Only enabled in debug builds.
- src/davis.h: improved APS_DEBUG_FRAME support, now splits signal and
reset read for debugging over all ROI regions.
- New device: support for upcoming DAVIS128 Raspberry-Pi integration.
- events/matrix4x4.h: new event type for 4x4 Matrices.
- C++ support: added toString() for devices.
BUG FIXES
- devices/dynapse.h: major API documentation cleanup.
- devices/dynapse.h: several function parameters of integer type were
sized more correctly to reflect the range of their arguments.
- src/dynapse.c: DYNAPSE_CONFIG_CLEAR_CAM now clears all 64 CAMs for
each neuron in a chip, resulting in all CAMs being fully cleared.
- Dynap-SE: default low-power biases are now the same across all cores.
- DAVIS: improved default timings for APS, providing better image quality,
especially on new chips with internal ADC support.
- DAVIS/AutoExposure: fixed auto-exposure on FX3 devices, sometimes didn't
run due to rounding errors when correcting for clock skew between
parameters sent to the devices and parameters received back.
- events/frame.h: added documentation that using the assignment operator
to copy Frame events is not possible, caerGenericEventCopy() should
be used instead. The C++ variant deletes the assignment operator to
enforce this. This fixes issue #26.
- src/usb_utils.c: fixed shutdown callback not being called on MacOS X.
Also fixed possible dead-lock on USB transfer re-submit on Windows.
This fixes issue #32.
- src/date_exchange.h: prevent possible dead-lock inside dataExchangeGet(),
if signals are delivered always while not sleeping.
- portable_endian.h, portable_time.h: fixed stand-alone compilation.
- Fixed many code quality warnings by Sonarcloud.
- Travis-CI: fixed automatic test build issues on MacOS X.
Release 2.3.0 - 30.06.2017
INCOMPATIBLE CHANGES
- device.hpp: removed C++ dataStart() method with no arguments. As with
the C interface, only the variant with all notification arguments
remains. This is to ensure users think about the possible arguments,
especially with regards to the shutdown notification, which usually
should be defined and used.
- Dynap-SE: requires new logic version 4. Adds new features related
to DAVIS integration and spike generation/playback.
NEW FEATURES
- CI: test builds are now done by Travis-CI and results sent off to
Sonarcloud for code quality analysis.
- Examples: added example to show how to bias a DAVIS camera and
configure it for external AER control (davis_enable_aer.cpp).
- Examples: added shutdown notification handler to all examples.
BUG FIXES
- CMake: fix CMake 3.X support on MacOS X.
- caerDeviceDataGet(): now properly returns NULL in blocking mode when
the device goes away or stops sending any data, thus preventing a
dead-lock when using blocking mode with this function.
Release 2.2.0 - 13.06.2017
INCOMPATIBLE CHANGES
- frame_utils.h: the frame utilities API was simplified. Now only one
function for demosaic support respective contrast enhancement support
exists, with the type (standard or OpenCV) as an enumeration argument.
NEW FEATURES
- Added support for the eDVS4337 serial port device. Serial port devices
require the libserialport library (version 0.1.1 or newer), and as such
are optional; enable them by passing -DENABLE_SERIALDEV=1 to cmake.
The presence of this support can be verified with the libcaer.h define
LIBCAER_HAVE_SERIALDEV. When disabled, the API for serial devices is
still available, but will simply return false/NULL on any operation to
indicate missing support. For usage details, see 'examples/edvs_simple.c'.
To open the device, use the new caerDeviceOpenSerial() function with
'deviceType' set to 'CAER_DEVICE_EDVS'. The usual caerDeviceOpen()
will only work for supported USB devices. All other functions, such
as caerDeviceDataGet(), remain the same and work for all device types.
- DAVIS Examples: added example for frame parsing. Thanks to Jonathan Müller.
BUG FIXES
- DVS128/DAVIS/Dynap-se: fix log messages on failure to open device and
on successful shutdown.
- Dynap-se: calculate rate in caerDynapseWritePoissonSpikeRate() as float.
- IMU and PointXD Events: fix conversion of floating-point data to/from
little-endian in-memory format. On MacOS X, this resulted in a function
call with integer arguments and thus conversion to an integer value,
destroying the original floating-point value.
Release 2.1.5 - 03.06.2017
NEW FEATURES
- Dynap-se: added support for experimental DYNAPSE_CONFIG_POISSONSPIKEGEN
control (thanks to Carsten Nielsen).
BUG FIXES
- DAVIS FX3: require new logic revision 9910 for FX3 devices.
This fixes a bug in timestamp synchronization between multiple
cameras, and improves precision of some time related parameters,
namely APS_EXPOSURE, APS_FRAME_DELAY and USB_EARLY_PACKET_DELAY.
- DAVIS: fix incorrect extra log message when opening FX3 devices.
Release 2.1.4 - 30.05.2017
BUG FIXES
- C++: functions defined in C++ header files, such as happens in log or
utils, need the inline keyword to allow the linker to resolve symbols
properly. Fixes #14.
Release 2.1.3 - 28.05.2017
NEW FEATURES
- DAVIS: new device type CAER_DEVICE_DAVIS is now available, handles both
FX2 and FX3 board-based devices transparently.
BUG FIXES
- C++ devices/usb.hpp: add missing std::string include.
- Devices: log failure to put new event packet containers on ring-buffer for
consumption by clients with higher log-level of CAER_LOG_NOTICE.
Release 2.1.2 - 24.05.2017
BUG FIXES
- FrameUtils/C++ FrameEvent: fix detection of OpenCV presence.
- CMake: add dependency on libm for math.h functions.
Release 2.1.1 - 23.05.2017
BUG FIXES
- AutoExposure: disable debug logging.
- AutoExposure: get out of highly over/under-exposed situations much faster.
Release 2.1.0 - 22.05.2017
INCOMPATIBLE CHANGES
- usb.h: the 'dataShutdownNotify' callback of caerDeviceDataStart() will only
be called on exceptional shutdowns now. Normal shutdowns, such as those from
calling caerDeviceDataStop(), will not execute the callback anymore.
The documentation for caerDeviceDataStart() and caerDeviceDataStop() has been
updated accordingly.
- DAVIS: requires new logic revision 9880.
NEW FEATURES
- davis.h: added automatic exposure control, can be turned on/off with
the DAVIS_CONFIG_APS_AUTOEXPOSURE configuration parameter, defaults to off.
- EventPackets (C/C++): added caerEventPacketGetDataSize() and
caerEventPacketGetSize() functions to easily get packet size in bytes.
- C++ FrameEvent: added new function getOpenCVMat() to frame event, if
OpenCV is enabled. Returns a cv::Mat representing the frame's pixels, with
support for deep-const by cloning (can be disabled for efficiency).
- C++ Utils: enhanced makeUniqueFromCStruct() and makeSharedFromCStruct() to
also allow a 'takeMemoryOwnership' parameter that is forwarded to the event
packet constructors; it defaults to true like the constructors themselves.
- Devices (C/C++): added new CAER_HOST_CONFIG_LOG config module with parameter
CAER_HOST_CONFIG_LOG_LEVEL to set per-device log-level; by default the
log-level is equal to the current global one at device opening.
BUG FIXES
- libcaer.hpp: undefine log-level names to avoid name clashes.
- DAVIS: removed variable APS ADC Shift, is not used by any camera currently
offered, all have 10 bits precision.
- DAVIS: fix black APS pixels on very high illumination.
- DAVIS240: fix low range of APS pixels due to reduced ADC dynamic range.
- USB: libusb-based USB communication completely rewritten, now there is one
thread responsible for USB event handling only, while transfers are sent,
started/stopped etc. from other threads. This avoids possible dead-locks,
or other threads stealing the USB event handling, or new settings not being
sent to the device under certain load conditions. This required a small
change in the API, please see "INCOMPATIBLE CHANGES" above for more details.
Release 2.0.2 - 27.04.2017
NEW FEATURES
- Logging: added caerLogFileDescriptorsGetFirst(), caerLogFileDescriptorsGetSecond()
functions to get the two file descriptors where log messages go to.
- Logging: added caerLogVAFull() function to allow full control over all
parameters involved in logging, especially the log-level.
- Dynap-se: added support for experimental DYNAPSE_CONFIG_SPIKEGEN
control and improved DYNAPSE_CONFIG_SRAM control (thanks to Carsten Nielsen).
- Updated C++ examples to use C++ logging functions.
- Updated C++ interface to reflect above changes.
Release 2.0.1 - 16.03.2017
NOTE: this release is numbered 2.0.1 and not 2.0.0, because 2.0.0 was the
development version. To ensure people can depend on the now actually released
version, the version number was increased to 2.0.1 for the official release.
INCOMPATIBLE CHANGES
- The Frame Event format changed to have the origin (0, 0) in the upper left
corner of the image, following standard computer graphics conventions now.
Before it was in the lower left corner, following the OpenGL convention.
This was changed to more easily be able to benefit from the wealth of
computer graphics libraries available, such as OpenCV.
caerFrameEventGetPixelArrayCGFormat() has been removed as a consequence.
- The Polarity Event format has also changed its origin to the upper left corner.
- Device INFO structures have additional data members now, be sure to
recompile anything depending on those!
- CAER_HOST_CONFIG_PACKETS_MAX_*_SIZE and MAX_*_INTERVAL options have been
removed, the whole data packeting system is now much simpler with only
two configuration options to control it:
- CAER_HOST_CONFIG_PACKETS_MAX_CONTAINER_PACKET_SIZE
- CAER_HOST_CONFIG_PACKETS_MAX_CONTAINER_INTERVAL
These act at the event packet container level. See packetContainer.h
documentation on more information for how this works.
- Removed LIBCAER_LOG_NONE define from headers, it is now not possible
to completely suppress log output anymore.
- caerGenericEventGetEvent() has had its bounds restricted to [0,eventNumber[
instead of [0,eventCapacity[.
- Event packet copy functions have been renamed to:
- caerEventPacketCopy()
- caerEventPacketCopyOnlyEvents()
- caerEventPacketCopyOnlyValidEvents()
NEW FEATURES
- Support for the aiCTX DYNAP-SE neuromorphic chip was added.
- Added new event type Spike Event for spiking neurons.
- Added new event types Point1D, Point2D, Point3D and Point4D to
hold floating point data in multiple dimensions.
- New event packet functions were added:
- caerEventPacketEquals()
- caerEventPacketClear()
- caerEventPacketClean()
- caerEventPacketResize()
- caerEventPacketGrow()
- caerEventPacketAppend()
- Full native support for C++11 through header library (libcaercpp).
- Improved const-qualification of functions, to allow better compile
time checks for read-only data. A GetEventConst() function was added
to each event type as part of this, to get read-only events.
- Const, reverse and const-reverse iterators were added to all event types.
- davis.h: added support for stereo microphones on DAVIS346mini.
- davis.h: added support for extra signal detectors.
- network.h: added header with functions to help parse AEDAT 3.X
network stream headers.
- frame.h: added support for more color filter configurations.
- packetContainer.h: better documentation, now tracks lowest and highest
timestamps contained, as well as number of total and valid events.
- packetContainer.h: added caerEventPacketContainerUpdateStatistics() to
update above statistics. Automatically called on each addition or
removal of an event packet from the container.
- packetContainer.h: added caerEventPacketContainerFindEventPacketByType*(),
caerEventPacketContainerCopyAllEvents() and caerEventPacketContainerCopyValidEvents()
functions to search for event packets by type and to make deep-copies of them.
- special.h: added new Special Event types, to support extra signal detection
schemes and add Frame Event related timing information.
- special.h: added caerSpecialEventPacketFindEventByType*() and
caerSpecialEventPacketFindValidEventByType*() functions to search for
a specified type of special event.
- libcaer.h: added LIBCAER_VERSION, LIBCAER_NAME_STRING,
LIBCAER_VERSION_STRING and LIBCAER_HAVE_OPENCV defines.
- log.h: added caerLogVA() function to pass va_list arguments directly.
Release 1.0.3 - 28.03.2016
INCOMPATIBLE CHANGES
- davis_fx2.c: removed specific FX2 code, now uses same backend as FX3
for sending all configuration values, due to new firmware version 3
for FX2 DAVIS small-board cameras. A firmware update is required,
please follow the instructions at https://inivation.com/support/software/reflashing/.
NEW FEATURES
- frame.h: add function caerFrameEventGetPixelArrayCGFormat() to
Frame Event, allows to get a copy of the pixels array in the
standard computer graphics format (pixel (0, 0) in upper left
corner) efficently.
- davis.h: add DAVIS_CONFIG_APS_ADC_TEST_MODE parameter to APS module.
Release 1.0.2 - 08.01.2016
IMCOMPATIBLE CHANGES
- frame.h: rename channel number to color channels and add color
filter information, to better specify the information needed
to reconstruct color frames. The 'enum caer_frame_event_color_channels'
and 'enum caer_frame_event_color_filter' hold the possible values.
This change is backwards-compatible with older frame format!
- davis.h, dvs128.h: changed info data structure's integers to be
signed for better cross-language compatibility. Also 'deviceID'
can now be compared directly with 'sourceID' from event packets.
- davis.h: changed type of 'apsColorFilter' in info data structure
to take advantage of new 'enum caer_frame_event_color_filter'.
NEW FEATURES
- common.h: add generic functions for event packet copying, with
support for packet size reductions (copy only valid).
- libcaer.h: add generic clear, get and set functions for bitfields,
and use them in all the event functions to avoid errors.
- config.h: add device configuration event type, for tracking
of device configuration changes in the event stream.
- log.c: add timezone information to log message time information.
- dvs128_simple.cpp, davis_simple.cpp: add C++11 example variants.
- Enable more Clang compiler warnings.
BUG FIXES
- davis_common.c: only update the ROI size information if ROI
updates actually came in from the device.
- Fix and improve documentation, especially for the frame event.
- Fix off-by-one in event's GetEvent() function's warning log message.
- device.c: mark global function pointer arrays static.
- common.h, frame.h: fix compilation of inline functions in
strict C++11 mode.
Release 1.0.1 - 06.11.2015
INCOMPATIBLE CHANGES
- Requires firmware version 2 and logic revision 7449.
- usb.h: improved caerDeviceDataStart() API to also allow for
notification of data acquisition shutdown, to be able to react
to abnormal shutdown cases, like when a device is unplugged.
- frame.h: changed in-memory format for easier handling and compatibility
with the other event formats (all-in-one memory block).
- davis.h: rename DAVIS240 APSOVERFLOWLEVEL to APSOVERFLOWLEVELBN.
NEW FEATURES
- Headers are C++ compatible and stand-alone now.
- MacOS X support.
- Added pkg-config file for library.
- Full API documentation (see docs/ for PDF).
- Various cmake/build improvements. Support out-of-tree builds.
- Add iterator macros for EventPackets.
- frame.h: added ROI region ID tracking, as well as ROI position.
Added caerFrameEventGetExposureLength() and caerFrameEventGetTimestamp(),
which is defined as the median of the exposure times.
Added caerFrameEventPacketGetPixelsSize() and caerFrameEventPacketGetPixelsMaxIndex()
for EventPacket-level size information.
Added caerFrameEventGetPixelsSize() and caerFrameEventGetPixelsMaxIndex()
for Event-level size information.
- log.h: added caerLogFileDescriptorsSet() to allow logging to
up to two different file descriptors (defaults to STDERR only).
- davis.h: added chipID check macros.
- davis.h: added DAVIS_CONFIG_APS_SNAPSHOT to take one frame snapshots.
- dvs128.h: added DVS128_CONFIG_DVS_TS_MASTER to select timestamp
master or slave behavior (timestamp synchronization).
- davis_common.c: added support for outputting only reset read or
signal read frames, for debugging purposes.
- c11threads_posix.h: C11-compatible thread abstraction, for
both Linux and MacOS X, based on POSIX Threads.
BUG FIXES
- Relaxed atomic operations memory constraints for better
performance on weakly-ordered architectures (like ARM).
- log.c: call tzset() before localtime_r(), as per standard.
- davis_common.c: improved Region of Interest support (APS).
- davis_fx2.c: keep GlobalShutter flag correctly in-sync.
- davis_fx3.c: fixed support for new FX3 devices.
- packetContainer.h: handle container being NULL by returning NULL.
Release 1.0.0 - 02.10.2015
- Initial release.