1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2024-12-10 18:24:11 +01:00
Commit Graph

4231 Commits

Author SHA1 Message Date
Corvus Corax
407817f959 backport of complementary filter bugfix 2013-06-23 18:37:43 +02:00
Corvus Corax
4bf934ae69 prevent positionSensor updates if GPS lock is low quality. Sometimes bad updates are worse than no updates. 2013-06-22 23:15:10 +02:00
Corvus Corax
3392622d2b backporting change on next to modified Attitude module 2013-06-22 23:07:53 +02:00
Corvus Corax
6163c5f53a Merge branch 'next' into corvuscorax/OP-947_stateestimator-module
Conflicts:
	flight/modules/AltitudeHold/altitudehold.c
	ground/openpilotgcs/share/openpilotgcs/pfd/default/AltitudeScale.qml
	ground/openpilotgcs/share/openpilotgcs/pfd/default/PfdIndicators.qml
	ground/openpilotgcs/share/openpilotgcs/pfd/default/SpeedScale.qml
	ground/openpilotgcs/src/plugins/pfd/pfdgadgetwidget.cpp
2013-06-22 18:44:03 +02:00
Oleg Semyonov
7f84307714 OP-997: fix release notes. This change was reverted but not documented 2013-06-22 18:29:40 +02:00
Corvus Corax
ee1465fd9a OP-1018: Fix ETASv3 Airspeed sensor autocalibration 2013-06-22 12:53:23 +02:00
Alessio Morale
57c8cd7872 Merge branch 'amorale/OP-1019_simple_altitudehold' into next 2013-06-21 17:16:24 +02:00
Alessio Morale
d2893fd32b OP-1019 fix sanitychecks and other uavo definition sanity checks for the newly defined altitudevario mode 2013-06-20 19:39:19 +02:00
Werner Backes
e5b68382e0 Keep TODO comment. 2013-06-20 14:35:40 +02:00
Werner Backes
0f5e354f99 Removed first occurance of accel_err scaling. We don't want to do this
twice.
2013-06-20 12:42:22 +02:00
Alessio Morale
5318c20de6 OP-1019 add a simple altitude hold 2013-06-20 11:27:45 +02:00
Alessio Morale
f41f7ade66 Merge remote-tracking branch 'origin/amorale/OP-1009_reset_gyrobias' into next 2013-06-18 20:39:55 +02:00
Alessio Morale
5cc3645b96 Uncrustify 2013-06-18 20:23:46 +02:00
Alessio Morale
54af41765e OP-1009 missing initialization on a previously static variable.
+review OPReview-516
2013-06-17 21:42:30 +02:00
Alessio Morale
b012d55f26 OP-1009 fix comments and fixes review
+review OPReview-516
2013-06-17 21:01:24 +02:00
Alessio Morale
2b232ae155 Fix bootloader usb issues caused by USB reconnection fixes.
Issues were related to missing usb detection and broken communication while updloading fw.
They are now skipped in NON FreeRTOS mode (aka bootloader).

+review OPReview
2013-06-17 20:24:07 +02:00
Alessio Morale
840e6aa4f7 OP-994 Move temp calculation to a macro defined in pios_board.h as it is achitecture dependant
+review OPReview-506
2013-06-15 18:47:33 +02:00
Alessio Morale
d5a77fb525 OP-1009 prevent gyro zeroing from raise an alarm when arming 2013-06-15 17:28:30 +02:00
Alessio Morale
517c331dd4 OP-1012 fixed speeds to make easy to distinguish flash rates 2013-06-15 17:27:48 +02:00
Alessio Morale
f2431b2868 GPS module is builtin so there is no way to shut the gps alarm when gps is not used.
This change does remove any alarm when no port is configured for gps.
Things depending on GPS will continue to raise their own alarm when no gps data are feed.
2013-06-15 16:39:29 +02:00
Alessio Morale
354fdf4bdf OP-1012 implement several messages for alarm led 2013-06-15 16:38:53 +02:00
Alessio Morale
49da1aca86 OP-1009 Redo gyro zero in Complementary after calibration parameters changes 2013-06-15 16:22:24 +02:00
Corvus Corax
1d17d08cca Merge branch 'next' into corvuscorax/OP-947_stateestimator-module 2013-06-12 18:32:01 +02:00
Alessio Morale
3c39b049d6 Fixed wrong deadband range for AH 2013-06-11 21:17:17 +02:00
Alessio Morale
04326e2386 Merge remote-tracking branch 'origin/amorale/OP-999_ah_failsafe' into next 2013-06-11 15:39:43 +02:00
Alessio Morale
ad123a2761 Merge remote-tracking branch 'origin/amorale/OP-980_connection_reliability_issue' into next 2013-06-11 15:39:34 +02:00
Alessio Morale
2c0f7794a9 Merge remote-tracking branch 'origin/amorale/OP-997_revolution_settings_to_ext_flash' into next 2013-06-11 15:39:13 +02:00
Alessio Morale
f767d64f0c OP-980 Remove the timeout logic as it causing troubles with windows
platform
2013-06-11 10:27:32 +02:00
Alessio Morale
c1a1c04ad8 OP-999 trigger a failsafe condition in AH module when throttle is below 0 for more than 200ms
+review OPReview
2013-06-10 23:48:08 +02:00
Brian Webb
789930db45 Moved PIOS_TASK_MONITOR_Initialize to before EventDispatcherInitialize. The event dispatcher creates a task that registers itself with the task monitor. It is unlikely that the task will start before the task monitor is initialized, but not impossible (at least on the F4 targets, I don't think). 2013-06-09 20:16:40 -07:00
Corvus Corax
88071b1078 Merge remote-tracking branch 'next' into corvuscorax/OP-947_stateestimator-module 2013-06-09 22:43:25 +02:00
Corvus Corax
47523bfe15 update PositionSensor whenever there is a 3d fix position update, even if its not good quality... 2013-06-09 22:42:14 +02:00
Corvus Corax
6f59c49506 just uncrustification 2013-06-09 22:09:04 +02:00
Corvus Corax
d8f9f839f2 startup grace time for filter initialisation 2013-06-09 21:49:04 +02:00
Alessio Morale
e9b3ee52f3 OP-997: add fields to SystemStatsUavo to monitor storage status 2013-06-09 19:20:00 +02:00
Alessio Morale
1cb69e6a0e OP-997: Revert Revolution settings storage to external flash to prevent freezes during sector erase/garbage collection 2013-06-09 19:17:12 +02:00
Corvus Corax
218e15ce61 Merge branch 'next' into corvuscorax/OP-947_stateestimator-module 2013-06-09 17:24:08 +02:00
Alessio Morale
87db5d30b0 OP-980 change how the semaphore is used on PIOS_USB_CheckAvailable to prevent deadlocks 2013-06-09 16:14:44 +02:00
Corvus Corax
a99255a36a allow smaller nonzero variances during runtime 2013-06-09 13:57:36 +02:00
Corvus Corax
022f1a1ac0 Merge branch 'next' into corvuscorax/OP-947_stateestimator-module
Conflicts:
	flight/modules/Attitude/revolution/attitude.c
2013-06-09 13:49:52 +02:00
Alessio Morale
6d71d92860 Merge remote-tracking branch 'origin/amorale/OP-990_revo_bias_with_shaken_startup' into next 2013-06-09 09:10:33 +02:00
Alessio Morale
0f28920e5f Merge remote-tracking branch 'origin/amorale/OP-988_gps_not_configured_alarm' into next 2013-06-09 09:09:44 +02:00
Alessio Morale
107b930573 Merge remote-tracking branch 'origin/amorale/OP-980_revolution_usb_reconnect' into next 2013-06-09 09:07:24 +02:00
Alessio Morale
59eaf01089 OP-990 Change initial delay before calibration to 4 seconds to allow to put the craft on the ground after battery connection
+review OPReview-505
2013-06-09 08:59:35 +02:00
Alessio Morale
cea6496866 OP-995: Cleanup of Battery Module 2013-06-08 13:53:19 +02:00
Alessio Morale
bdd80a63c9 OP-994: Refactor/Cleanup of cpu temp measurement: fixed declarations for Voltage Scale constants 2013-06-08 13:46:57 +02:00
Alessio Morale
ab1c9c157f OP-995: Fixes for correct battery monitor readout 2013-06-08 13:40:01 +02:00
Alessio Morale
51a7f27b99 OP-994 Add an API to PIOS_ADC to get directly the Voltage value 2013-06-08 13:36:54 +02:00
Alessio Morale
6671a404ca OP-994 Refactor/Cleanup of cpu temp measurement 2013-06-08 13:36:18 +02:00
Alessio Morale
7a6b5c5681 OP-990 Fixed the main cause of wrong bias calculation:
The initial bias calculation done between 1 and 7 seconds
since power on was completely skipped due to a wrong condition.
2013-06-08 13:10:23 +02:00
Alessio Morale
3ad123718e Revert "OP-990 zeroed the rollpitch bias rate at startup and incremented at arming."
This reverts commit c0b926a2d5.
2013-06-08 13:10:23 +02:00
Corvus Corax
f79c227def Merge branch 'corvuscorax/uavobjmanagerfix' into corvuscorax/OP-947_stateestimator-module 2013-06-06 22:41:31 +02:00
Corvus Corax
115b991f86 Bugfix in UAVObjectmanager. LoadFromFile() is not allowed to use GetByID since its called from Register, where the uavobject is not registered yet. 2013-06-06 21:22:17 +02:00
Corvus Corax
6fdf554d4a Merge branch 'next' into corvuscorax/OP-947_stateestimator-module
Conflicts:
	flight/modules/Attitude/revolution/attitude.c
	ground/openpilotgcs/src/plugins/opmap/opmapgadgetwidget.cpp
	shared/uavobjectdefinition/attitudesettings.xml
2013-06-06 19:25:54 +02:00
Corvus Corax
fcc3f519d8 filterekf: Remember critical divergence and set error flag to prevent (re)arming so the user will notice 2013-06-06 17:59:27 +02:00
Corvus Corax
b0db191703 Divide mag variance by Be squared to cope with normalization correctly 2013-06-06 17:54:59 +02:00
Alessio Morale
ee7887c406 OP-980 Extended the memory barrier macros and fixed barrier kind in pios_usb_hid
+review OPReview-501
2013-06-06 10:26:41 +02:00
Mathieu Rondonneau
45391abd55 OP-976: RE-run uncrustify 2013-06-05 19:48:56 -07:00
Mathieu Rondonneau
a8c946dcb2 OP-976: Fix uncrustify changes that put a space before the ";" in the macro 2013-06-05 19:46:55 -07:00
Mathieu Rondonneau
89273146df Merge branch 'next' into Mathieu/OP-976_module_macro 2013-06-05 19:17:54 -07:00
Mathieu Rondonneau
d2fae1abed OP-976: fixing function name in the macro although don't have any effect since the linker directives are local. 2013-06-05 19:15:47 -07:00
Alessio Morale
c340bfc294 OP-980 Insert locking while checking status in PIOS_USB_CheckAvailable
+review OPReview-501
2013-06-06 01:42:26 +02:00
Alessio Morale
5fa73624da OP-980 Added memory barrier to preserve sequence to ensure callback validation
+review OPReview-501
2013-06-06 01:39:45 +02:00
Corvus Corax
bab95e7ca8 check variances for validity and reinitialize if invalid 2013-06-06 00:07:11 +02:00
Corvus Corax
f22a0d299e EKF: Averaging term for dT
- prevent scheduling jitter from screwing with the filter while keeping dT accurate
2013-06-06 00:06:12 +02:00
Alessio Morale
c0b926a2d5 OP-990 zeroed the rollpitch bias rate at startup and incremented at arming. 2013-06-05 22:19:20 +02:00
Corvus Corax
6f6ca2481e Changed CoordinateConversion to use doubles for LLA2NED conversion, so coordinates can be represented in ECEF with sufficient resolution 2013-06-05 20:40:49 +02:00
Corvus Corax
5e306250a5 Enabled simulated sensors in SimPosix for debugging of EKF behaviour including:
- SimPosix again stores and reads UAVObjects to disk (was disabled by someone)
- simulated sensors moved to allow automated module initialisation in simposix
- fixed a categorization bug in a uavobject
2013-06-05 19:34:48 +02:00
Alessio Morale
b4f8b02a42 Revert "some optimizations, use real rx and tx buffer size instead of max buffer leghts"
It does not work in Windows so need further investigation prior to undo this revert
This reverts commit 901db6f828.
+review OPReview-501
2013-06-05 19:01:01 +02:00
Corvus Corax
dc68d7d94e changed insgps, removed unnecessary gain representation 2013-06-05 17:52:49 +02:00
Brian Webb
f9706132f7 Fixed setting of timestampLength in UAVTalk parsing when the UAVObject is not initialize in the firmware. This mostly affects the OPLink, which doesn't initialize most of the UAVObjects, but does need to parse them. 2013-06-04 20:37:51 -07:00
Alessio Morale
8fb81ae17b OP-980 uncrustify
+review OPReview-501
2013-06-05 01:02:37 +02:00
Alessio Morale
f1f48b0ec6 OP-980 Fix usb reconnection issue for Revolution target.
step 3: add a timeout on rx_active to prevent rx locks
2013-06-05 00:54:08 +02:00
Alessio Morale
901db6f828 some optimizations, use real rx and tx buffer size instead of max buffer leghts 2013-06-05 00:53:50 +02:00
Alessio Morale
ce2bce353f OP-980 Fix usb reconnection issue for Revolution target.
step 2: check for cable disconnection (vbus) and issue a SW reconnection
2013-06-05 00:04:26 +02:00
Mathieu Rondonneau
23b2907d08 OP-976: Add the ';' back
This compile successfuly with make all_flight
2013-06-03 20:37:40 -07:00
Alessio Morale
14b87383b9 OP-980 Fix usb reconnection issue for Revolution target.
step 1: reset tx/rx_active flags on disconnection/reconnection
2013-06-04 01:52:44 +02:00
Alessio Morale
cfe057c573 OP-988 Raise SYSTEMALARMS_ALARM_CRITICAL when no gps port is configured, the same alarm as no gps case.
+review OPReview
2013-06-03 20:30:41 +02:00
Oleg Semyonov
65c463bf03 Update Windows USB driver file 2013-06-03 16:39:41 +03:00
Richard Flay (Hyper)
8c494dce00 OP-982: Further updates to Strings in response to review feedback.
+review OPReview-493
2013-06-02 18:43:37 +09:30
Richard Flay (Hyper)
3e6389d9b6 OP-982: Updates to spacing and Strings in response to review feedback.
+review OPReview-493
2013-06-02 18:11:04 +09:30
Richard Flay (Hyper)
35b580a34e OP-982: Adds Revolution related entries to OpenPilot-CDC.inf for Windows.
+review OPReview
2013-06-02 08:44:54 +09:30
Corvus Corax
6435604182 some fixes and corrections as suggested in review 2013-05-29 22:18:08 +02:00
Corvus Corax
e82a52e8ff filterekf: changed mag variance to 1/1000000 to compensate for normalization, as it was done on old AHRS 2013-05-29 22:02:39 +02:00
Alessio Morale
6b2218d1df Merge remote-tracking branch 'origin/amorale/OP-925_Cyr_patches_for_revo_cf' into next 2013-05-28 18:39:42 +02:00
Alessio Morale
a286a20cb0 OP-925 Changed dT to comply with revo sensor rate
+review OPReview-484
2013-05-27 21:05:39 +02:00
Fredrik Arvidsson
d9d2b7d167 Merge remote-tracking branch 'origin/os/OP-770_version_info_stuff' into thread/OP-770_UAV_Export_Version_Info_Fix 2013-05-27 19:30:18 +02:00
Brian Webb
50162333d8 Merge remote-tracking branch 'origin/dankers/minor-modem-renames' into next 2013-05-27 09:44:17 -07:00
Brian Webb
16b787179c Merge branch 'next' of ssh://git.openpilot.org/OpenPilot into next 2013-05-26 08:37:05 -07:00
Brian Webb
e9f83bcc80 Fixes a bug in the rfm22b driver that was reading past the end of the bindings list when receiving a status message. Also adds some formatting changes that came about after doing a make uncrustify_all. 2013-05-26 08:36:38 -07:00
Alessio Morale
9bfce1bcd6 Merge remote-tracking branch 'origin/amorale/OP-925_Cyr_patches_for_revo_cf' into next 2013-05-26 16:18:05 +02:00
David Ankers
69ede538c9 Update date bu just an easy ay to start review +review OPReview-485 2013-05-26 17:50:44 +10:00
David Ankers
2f9c9df736 Increase the size of the USB Descriptor array to take extra char 2013-05-26 17:03:48 +10:00
David Ankers
7a9466bbf9 State in the header which board this is for 2013-05-26 16:12:35 +10:00
David Ankers
f7a9f94a36 Missing file header 2013-05-26 16:09:55 +10:00
David Ankers
a5b856d1bc Change board description name to OPLink Mini 2013-05-26 16:04:55 +10:00
David Ankers
d5eccea78f Comment and header renames, change PipX to OPLink Mini 2013-05-26 15:48:02 +10:00
Oleg Semyonov
444431579e OP-770: add/rename some version-info.py template variables 2013-05-25 23:02:29 +02:00
Corvus Corax
7bf58f09c5 filterekf gyro bias adjustment bugfix 2013-05-25 16:18:18 +02:00
Brian Webb
4036e95bd5 Merge remote-tracking branch 'origin/next' into OP-932-Modularize_Radio_Driver 2013-05-25 06:56:13 -07:00
Corvus Corax
6c25e82633 fixed bugs in GPS, corrected zeroing of updated flags in stateestimation 2013-05-25 12:28:32 +02:00
Richard Flay (Hyper)
bd538703ea OP-962: Tweaked C2U_STACK_SIZE_BYTES to be a multiple of 4.
+review OPReview-480
2013-05-25 17:10:41 +09:30
Corvus Corax
87b1b4873c bugfix in baro alt filter plugin 2013-05-25 02:02:53 +02:00
Corvus Corax
902bf29c92 some small bugfixes to filterekf 2013-05-25 00:05:06 +02:00
Corvus Corax
b916df5448 ported cyr's patch to new CF 2013-05-24 23:59:12 +02:00
Corvus Corax
259eeecbbc Put Macros in StateEstimation into the file header after request in review.
Author expresses concernes about the code readability in this layout
(Commit message edited, was: "HATE THIS")
2013-05-24 19:19:40 +02:00
Corvus Corax
40864b2d3b some cleanups 2013-05-23 21:21:14 +02:00
Alessio Morale
711f1ad35b Fix indentation 2013-05-23 00:47:38 +02:00
Corvus Corax
53ba3f4b74 removed GPS check from ekf and put into GPS 2013-05-22 23:20:31 +02:00
Alessio Morale
697874b315 Port of OP-754 On Revo. Fixed signs on bias calculation. Added rate zeroing at startup to yaw 2013-05-22 23:17:09 +02:00
Corvus Corax
843db63cf6 some last issues from review 2013-05-22 23:08:48 +02:00
Corvus Corax
9b95af2006 refaktored GPS Sensor UAVObjects 2013-05-22 22:36:23 +02:00
Corvus Corax
b56de3b66b filterchain rework 2013-05-22 21:26:18 +02:00
Corvus Corax
8fe159c457 some changes... 2013-05-22 19:05:28 +02:00
Brian Webb
ac4847c8ac OP-932 Moves the configuration of the com ports on the coordinator OPLink to startup. 2013-05-21 19:48:21 -07:00
Brian Webb
dbce08a151 OP-932 Changes the radio task loop to loop every 1ms, and reduces the tx transmit period back down to 8ms. Also reduces the Tx windows to 1ms for each modem, and reserves the latter half of the Tx window for channel changing. 2013-05-21 17:40:05 -07:00
Alessio Morale
294a295510 Port CF patch from Cyr that filters accel to reduce attitude drift due to vibrations 2013-05-22 00:55:10 +02:00
Alessio Morale
0b5a28f19e Port OP-754 to Revolution attitude estimation module: subtract GyroBIAS to work on raw value
Added MagKp and MagKi to AttitudeSetting UAVO
2013-05-21 23:44:12 +02:00
a*morale
464d2be9f7 Port OP-754 to Revolution attitude estimation module 2013-05-21 22:40:35 +02:00
Corvus Corax
ecc4a529a3 some fixes to filtercf and stateestimation and filterekf - Thanks Werner for help :-) 2013-05-21 20:06:33 +02:00
Brian Webb
d4a4588011 OP-932 Changes the RFM22 frequency hopping to change channels every Tx period. Also increases the Tx clock period from 8ms to 16ms, and adds a check on calculation the the time delta that it doesn't change the previous estimated time delta by too much. If the delta between the current time delta and the previously estimated time delta is too large it could indicate that there was a delay somewhere that makes the calculated time delta inaccurate.
Rearanges the packet send priority in the rfm22b driver so that PPM packets are top priority.
2013-05-20 20:49:24 -07:00
Alessio Morale
8e7e7e052a OP-962 Fix Stack size for ComUSBBridge
+review OPReview
2013-05-21 00:45:45 +02:00
Corvus Corax
3dda543608 Merge branch 'corvuscorax/OP-946_refaktor_sensor_and_state' into corvuscorax/OP-947_stateestimator-module 2013-05-20 20:53:46 +02:00
Corvus Corax
fb433a97d7 Bugfix: add gyro bias to correct axis 2013-05-20 20:52:45 +02:00
Corvus Corax
3cb4f59c94 failsafe, fallback to attitude for now until StateEstimation works reliably 2013-05-20 20:49:34 +02:00
Corvus Corax
a04b76f836 some bugfixes to make it boot on revo 2013-05-20 20:25:20 +02:00
Corvus Corax
8a36959d39 OP-945: Filter refaktoring - last fixes to make it compile 2013-05-20 17:04:52 +02:00
Corvus Corax
e7c35a94f6 added EKF filter 2013-05-20 16:31:10 +02:00
Corvus Corax
a286cc6b24 update settings during initialisation only 2013-05-20 15:28:18 +02:00
Corvus Corax
a03f87efb5 Complementary filter added 2013-05-20 15:04:36 +02:00
Corvus Corax
741c70cda4 barometric bias filter added 2013-05-20 12:56:40 +02:00
Corvus Corax
7ea258a895 airspeed filter added 2013-05-20 12:45:39 +02:00
Corvus Corax
2f082dbf87 added filter for magnetometer bias drift compensation 2013-05-20 11:24:57 +02:00
Corvus Corax
1bd9cdafab added missing attitude state variable ;) 2013-05-20 10:43:40 +02:00
Corvus Corax
34294d2635 Magneto to Mag fix 2013-05-20 10:35:54 +02:00
Corvus Corax
d258caad3f Merge branch 'corvuscorax/OP-946_refaktor_sensor_and_state' into corvuscorax/OP-947_stateestimator-module 2013-05-20 10:34:40 +02:00
Corvus Corax
1236bf3ed9 renamed Magneto to Mag 2013-05-20 10:33:02 +02:00
Corvus Corax
49b8e0d699 Merge branch 'next' into corvuscorax/OP-946_refaktor_sensor_and_state 2013-05-20 10:07:55 +02:00
Oleg Semyonov
0798d8e330 OP-891: move firmware_info template under flight directory 2013-05-20 01:12:45 +03:00
Corvus Corax
46e7d2121f fake filter for stationary position data added 2013-05-19 22:49:11 +02:00
Corvus Corax
bf80b3f103 readded missing header 2013-05-19 22:40:50 +02:00
Corvus Corax
bc6f06e943 first filter implemented and some bugs fixed 2013-05-19 22:24:12 +02:00
Corvus Corax
b62c758831 statefilter main file almost complete, time to start work on filter classes 2013-05-19 22:24:12 +02:00
Corvus Corax
2ab9f938c9 ongoing dev work, incomplete 2013-05-19 22:24:12 +02:00
Corvus Corax
d97934cf86 Merge branch 'next' into corvuscorax/OP-946_refaktor_sensor_and_state 2013-05-19 22:05:48 +02:00
Brian Webb
649667d338 Addes ifdef PIOS_INCLUDE_WDG around several calls to the wathdog functions for the Revolution firmware (allows you to turn off the watchdog). 2013-05-19 12:56:23 -07:00
Sexy Pony
900f643bbd Reformat source code with 'make uncrustify_all' run twice. NO CODE CHANGES 2013-05-19 17:37:30 +03:00
Alessio Morale
ab7af16be3 Merge branch 'amorale/OP-901_lib_udates-usb_fixes' into HEAD
Conflicts:
	flight/pios/stm32f10x/library.mk
	flight/targets/boards/revoproto/firmware/pios_board.c
2013-05-19 15:01:08 +02:00
Corvus Corax
f630351c75 Merge branch 'next' ... 2013-05-19 12:17:40 +02:00
Alessio Morale
37eabb0931 Pointed type is explicitly used with sizeof when dealing with struct pointers.
+review OPReview-474
2013-05-19 12:00:16 +02:00