Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 2224 → Rev 2225

/C-OSD/trunk/CHANGE.LOG
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
18,6 → 18,9
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
****************************************************************************/
 
20160302-0700
*adapted structs to reflect FC/NC software V2.14a
 
20151026-0630
*adapted structs to reflect FC/NC software V2.12a
/C-OSD/trunk/README.TXT
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
33,7 → 33,7
 
Instructions:
Connect the "To FC" port from EPi-OSD to the Debug port of the NaviCtrl.
You will need at least NaviCtrl 2.12a soft to fully enjoy the software.
You will need at least NaviCtrl 2.14a soft to fully enjoy the software.
 
S1 enters a menu where you can cycle through using S2 and toggle/accept choice with S1
 
/C-OSD/trunk/buttons.c
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/buttons.h
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/characters.c
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/characters.h
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/config.c
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/config.h
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/default/Makefile
1,5 → 1,5
#/****************************************************************************
# * Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
# * Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
# * admiralcascade@gmail.com *
# * Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
# * *
/C-OSD/trunk/default/dist.bat
1,6 → 1,6
@echo off
:: /****************************************************************************
:: * Copyright (C) 2010-2015 by Claas Anders "CaScAdE" Rathje *
:: * Copyright (C) 2010-2016 by Claas Anders "CaScAdE" Rathje *
:: * admiralcascade@gmail.com *
:: * Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
:: * *
20,7 → 20,7
:: ****************************************************************************/
 
set OSDBUILDDATE=%DATE:~-4,4%%DATE:~-7,2%%DATE:~0,2%-%TIME:~0,2%%TIME:~3,2%
set OSDBUILDDATE=20151026-0630
set OSDBUILDDATE=20160302-0700
echo "Building: %OSDBUILDDATE%"
 
:: date /T
/C-OSD/trunk/default/dist.sh
1,6 → 1,6
#!/bin/sh
#/****************************************************************************
# * Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
# * Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
# * admiralcascade@gmail.com *
# * Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
# * *
/C-OSD/trunk/default/flash-usbasp.bat
1,6 → 1,6
@echo off
:: /****************************************************************************
:: * Copyright (C) 2014-2015 by Claas Anders "CaScAdE" Rathje *
:: * Copyright (C) 2014-2016 by Claas Anders "CaScAdE" Rathje *
:: * admiralcascade@gmail.com *
:: * Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
:: * *
20,7 → 20,7
:: ****************************************************************************/
 
:: set FIRMWAREFILE to current version
set FIRMWAREFILE=C-OSD-20151026-0630-pal.hex
set FIRMWAREFILE=C-OSD-20160302-0700-pal.hex
 
:: Read fuses as test
avrdude -c usbasp -p m162 -n -v
/C-OSD/trunk/main.c
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/main.h
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/max7456_software_spi.c
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/max7456_software_spi.h
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/mk-data-structs.h
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
95,36 → 95,36
#define NAVIDATA_VERSION 5
 
typedef struct {
u8 Version; // version of the data structure
GPS_Pos_t CurrentPosition; // see gpspos.h for details
GPS_Pos_t TargetPosition;
GPS_PosDev_t TargetPositionDeviation;
GPS_Pos_t HomePosition;
GPS_PosDev_t HomePositionDeviation;
u8 WaypointIndex; // index of current waypoints running from 0 to WaypointNumber-1
u8 WaypointNumber; // number of stored waypoints
u8 SatsInUse; // number of satellites used for position solution
s16 Altimeter; // hight according to air pressure
s16 Variometer; // climb(+) and sink(-) rate
u16 FlyingTime; // in seconds
u8 UBat; // Battery Voltage in 0.1 Volts
u16 GroundSpeed; // speed over ground in cm/s (2D)
s16 Heading; // current flight direction in ° as angle to north
s16 CompassHeading; // current compass value in °
s8 AngleNick; // current Nick angle in 1°
s8 AngleRoll; // current Rick angle in 1°
u8 RC_Quality; // RC_Quality
u8 FCStatusFlags; // Flags from FC
u8 NCFlags; // Flags from NC
u8 Errorcode; // 0 --> okay
u8 WP_OperatingRadius; // current WP operation radius around the Home Position in m
s16 TopSpeed; // velocity in vertical direction in cm/s
u8 TargetHoldTime; // time in s to stay at the given target, counts down to 0 if target has been reached
u8 FCStatusFlags2; // StatusFlags2 (since version 5 added)
s16 SetpointAltitude; // setpoint for altitude
u8 Gas; // for future use
u16 Current; // actual current in 0.1A steps
u16 UsedCapacity; // used capacity in mAh
u8 Version; // version of the data structure
GPS_Pos_t CurrentPosition; // see gpspos.h for details
GPS_Pos_t TargetPosition;
GPS_PosDev_t TargetPositionDeviation;
GPS_Pos_t HomePosition;
GPS_PosDev_t HomePositionDeviation;
u8 WaypointIndex; // index of current waypoints running from 0 to WaypointNumber-1
u8 WaypointNumber; // number of stored waypoints
u8 SatsInUse; // number of satellites used for position solution
s16 Altimeter_5cm; // hight according to air pressure
s16 Variometer; // climb(+) and sink(-) rate
u16 FlyingTime; // in seconds
u8 UBat; // Battery Voltage in 0.1 Volts
u16 GroundSpeed; // speed over ground in cm/s (2D)
s16 Heading; // current flight direction in ° as angle to north
s16 CompassHeading; // current compass value in °
s8 AngleNick; // current Nick angle in 1°
s8 AngleRoll; // current Rick angle in 1°
u8 RC_Quality; // RC_Quality
u8 FCStatusFlags; // Flags from FC
u8 NCFlags; // Flags from NC
u8 Errorcode; // 0 --> okay
u8 WP_OperatingRadius; // current WP operation radius around the Home Position in m
s16 TopSpeed; // velocity in vertical direction in cm/s
u8 TargetHoldTime; // time in s to stay at the given target, counts down to 0 if target has been reached
u8 FCStatusFlags2; // StatusFlags2 (since version 5 added)
s16 SetpointAltitude; // setpoint for altitude
u8 Gas; // for future use
u16 Current; // actual current in 0.1A steps
u16 UsedCapacity; // used capacity in mAh
} __attribute__((packed)) NaviData_t;
 
/*
159,13 → 159,16
#define FC_STATUS2_OUT1_ACTIVE 0x08
#define FC_STATUS2_OUT2_ACTIVE 0x10
#define FC_STATUS2_WAIT_FOR_TAKEOFF 0x20 // Motor Running, but still on the ground
#define FC_STATUS2_AUTO_STARTING 0x40
#define FC_STATUS2_AUTO_LANDING 0x80
 
 
// FC.StatusFlags3
#define FC_STATUS3_REDUNDANCE_AKTIVE 0x01
#define FC_STATUS3_BOAT 0x02
#define FC_STATUS3_REDUNDANCE_ERROR 0x04
#define FC_STATUS3_REDUNDANCE_TEST 0x08
#define FC_STATUS3_NOT_CALIBRATED 0x10
#define FC_STATUS3_MOTORS_STOPPED_BY_RC 0x20
 
// FC ERRORS FLAGS
#define FC_ERROR0_GYRO_NICK 0x01
192,8 → 195,8
* http://svn.mikrokopter.de/filedetails.php?repname=FlightCtrl&path=/tags/V2.12a/eeprom.h
*/
 
#define EEPARAM_REVISION 106 // is count up, if paramater stucture has changed (compatibility)
#define EEMIXER_REVISION 1 // is count up, if mixer stucture has changed (compatibility)
#define EEPARAM_REVISION 108 // is count up, if paramater stucture has changed (compatibility)
#define EEMIXER_REVISION 1 // is count up, if mixer stucture has changed (compatibility)
 
typedef struct
{
317,6 → 320,9
unsigned char LandingPulse;
unsigned char SingleWpControlChannel;
unsigned char MenuKeyChannel;
unsigned char CamCtrlModeChannel;
unsigned char CamCtrlZoomChannel;
unsigned char reserved[32]; // for later use
//------------------------------------------------
unsigned char BitConfig; // (war Loop-Cfg) Bitcodiert: 0x01=oben, 0x02=unten, 0x04=links, 0x08=rechts / wird getrennt behandelt
unsigned char ServoCompInvert; // // 0x01 = Nick, 0x02 = Roll, 0x04 = relative moving // WICHTIG!!! am Ende lassen
323,8 → 329,8
unsigned char ExtraConfig; // bitcodiert
unsigned char GlobalConfig3; // bitcodiert
char Name[12];
unsigned char crc; // must be the last byte!
} paramset_t; // 134 bytes (V1.06)
unsigned char crc; // must be the last byte!
} paramset_t; // since 2.14 -> size is always 179 Bytes
 
 
typedef struct {
/C-OSD/trunk/osd_fcmode_default.c
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/osd_fcmode_default.h
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/osd_fcmode_jopl.c
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/osd_fcmode_jopl.h
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/osd_helpers.c
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/osd_helpers.h
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/osd_ncmode_default.c
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
120,15 → 120,15
}
} else {
if (COSD_FLAGS_CONFIG & COSD_FLAG_FEET) {
write_ndigit_number_s(23, top_line, naviData.Altimeter / 10 * 32 / 20, 4, 0); // BARO
write_ndigit_number_s(23, top_line, naviData.Altimeter_5cm / 10 * 32 / 20, 4, 0); // BARO
} else {
//cite:killagreg "Faktor 20 bis 21 w�re korrekt." (http://forum.mikrokopter.de/topic-post211192.html#post211192)
if (naviData.Altimeter > 200 || naviData.Altimeter < -200) {
if (naviData.Altimeter_5cm > 200 || naviData.Altimeter_5cm < -200) {
// above 10m only write full meters
write_ndigit_number_s(23, top_line, naviData.Altimeter / 20, 4, 0); // BARO
write_ndigit_number_s(23, top_line, naviData.Altimeter_5cm / 20, 4, 0); // BARO
} else {
// up to 10m write meters.dm
write_ndigit_number_s_10th(23, top_line, naviData.Altimeter / 2, 3, 0); // BARO
write_ndigit_number_s_10th(23, top_line, naviData.Altimeter_5cm / 2, 3, 0); // BARO
}
}
}
170,7 → 170,7
if (COSD_FLAGS_CONFIG & COSD_FLAG_GPSHEIGHT) {
altimeter_offset = naviData.CurrentPosition.Altitude / 1000; // GPS
} else {
altimeter_offset = naviData.Altimeter / 20; // BARO
altimeter_offset = naviData.Altimeter_5cm / 20; // BARO
}
// set wasted counter to current offset
if ((COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) && !(COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT)) {
297,7 → 297,7
if (COSD_FLAGS_CONFIG & COSD_FLAG_GPSHEIGHT) {
if (naviData.CurrentPosition.Altitude / 1000 - altimeter_offset > max_Altimeter) max_Altimeter = naviData.CurrentPosition.Altitude / 1000;
} else {
if (naviData.Altimeter / 20 > max_Altimeter) max_Altimeter = naviData.Altimeter / 20;
if (naviData.Altimeter_5cm / 20 > max_Altimeter) max_Altimeter = naviData.Altimeter_5cm / 20;
}
if (naviData.GroundSpeed > max_GroundSpeed) max_GroundSpeed = naviData.GroundSpeed;
if (naviData.HomePositionDeviation.Distance > max_Distance) {
/C-OSD/trunk/osd_ncmode_default.h
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/osd_ncmode_minimal.c
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
51,12 → 51,12
uint16_t heading_home = (naviData.HomePositionDeviation.Bearing + 360 - naviData.CompassHeading) % 360;
write_char_xy(17, top_line, 0xa0 + heading_fine_conv(heading_home));
 
if (naviData.Altimeter > 200 || naviData.Altimeter < -200) {
if (naviData.Altimeter_5cm > 200 || naviData.Altimeter_5cm < -200) {
// above 10m only write full meters
write_ndigit_number_s(22, top_line, naviData.Altimeter / 20, 4, 0);
write_ndigit_number_s(22, top_line, naviData.Altimeter_5cm / 20, 4, 0);
} else {
// up to 10m write meters.dm
write_ndigit_number_s_10th(22, top_line, naviData.Altimeter / 2, 3, 0);
write_ndigit_number_s_10th(22, top_line, naviData.Altimeter_5cm / 2, 3, 0);
}
 
draw_variometer(27, top_line, naviData.Variometer);
124,7 → 124,7
if (COSD_FLAGS_CONFIG & COSD_FLAG_GPSHEIGHT) {
if (naviData.CurrentPosition.Altitude / 1000 - altimeter_offset > max_Altimeter) max_Altimeter = naviData.CurrentPosition.Altitude / 1000;
} else {
if (naviData.Altimeter / 20 > max_Altimeter) max_Altimeter = naviData.Altimeter / 20;
if (naviData.Altimeter_5cm / 20 > max_Altimeter) max_Altimeter = naviData.Altimeter_5cm / 20;
}
if (naviData.GroundSpeed > max_GroundSpeed) max_GroundSpeed = naviData.GroundSpeed;
if (naviData.HomePositionDeviation.Distance > max_Distance) {
/C-OSD/trunk/osd_ncmode_minimal.h
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/ppm.c
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/ppm.h
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/spi.c
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/spi.h
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/usart0.c
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/usart0.h
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/usart1.c
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *
/C-OSD/trunk/usart1.h
1,5 → 1,5
/****************************************************************************
* Copyright (C) 2009-2015 by Claas Anders "CaScAdE" Rathje *
* Copyright (C) 2009-2016 by Claas Anders "CaScAdE" Rathje *
* admiralcascade@gmail.com *
* Project-URL: http://www.mylifesucks.de/oss/c-osd/ *
* *