Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 1800 → Rev 1801

/C-OSD/trunk/CHANGE.LOG
18,6 → 18,11
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
****************************************************************************/
 
20121127-2120
+No FC communication define in config for usage with NC and no FC
*memcpy stuff instead of inplace buffer to unlock the buffer faster
+prepared the 3D Data stuff
 
20121105-1135
*attemp to fix errors when building with GCC 4.7
 
/C-OSD/trunk/c-osd.aws
1,0 → 0,0
<AVRWorkspace><IOSettings><CurrentRegisters/></IOSettings><part name="ATMEGA162"/><Files><File00000 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\main.c" Position="627 143 1295 607" LineCol="146 0" State="Maximized"/><File00001 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\mk-data-structs.h" Position="649 165 1331 621" LineCol="221 0" State="Maximized"/><File00002 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\max7456_software_spi.h" Position="671 187 1353 643" LineCol="42 0" State="Maximized"/><File00003 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\max7456_software_spi.c" Position="693 209 1375 665" LineCol="180 0" State="Maximized"/><File00004 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\usart1.c" Position="715 231 1397 687" LineCol="105 19" State="Maximized"/><File00005 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\usart1.h" Position="737 253 1419 709" LineCol="84 0" State="Maximized"/><File00006 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\characters.c" Position="759 275 1441 731" LineCol="0 0" State="Maximized"/><File00007 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\main.h" Position="781 297 1463 753" LineCol="39 0" State="Maximized"/><File00008 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_helpers.c" Position="623 120 1515 805" LineCol="168 0" State="Maximized"/><File00009 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_helpers.h" Position="825 341 1507 797" LineCol="0 0" State="Maximized"/><File00010 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_default.c" Position="627 143 1309 599" LineCol="28 0" State="Maximized"/><File00011 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_default.c" Position="649 165 1331 621" LineCol="35 0" State="Maximized"/><File00012 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\config.c" Position="671 187 1353 643" LineCol="209 0" State="Maximized"/><File00013 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\config.h" Position="693 209 1375 665" LineCol="0 0" State="Maximized"/><File00014 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\spi.c" Position="715 231 1397 687" LineCol="0 0" State="Maximized"/><File00015 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\spi.h" Position="737 253 1419 709" LineCol="0 0" State="Maximized"/><File00016 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\buttons.c" Position="759 275 1441 731" LineCol="0 0" State="Maximized"/><File00017 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\buttons.h" Position="781 297 1463 753" LineCol="0 0" State="Maximized"/><File00018 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\ppm.c" Position="803 319 1485 775" LineCol="60 0" State="Maximized"/><File00019 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\ppm.h" Position="825 341 1507 797" LineCol="24 0" State="Maximized"/><File00020 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_minimal.c" Position="627 143 1309 599" LineCol="30 0" State="Maximized"/><File00021 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_default.h" Position="649 165 1331 621" LineCol="25 0" State="Maximized"/><File00022 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_minimal.h" Position="671 187 1353 643" LineCol="25 0" State="Maximized"/><File00023 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_default.h" Position="693 209 1375 665" LineCol="0 0" State="Maximized"/><File00024 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\characters.h" Position="715 231 1397 687" LineCol="0 0" State="Maximized"/><File00025 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_jopl.c" Position="737 253 1419 709" LineCol="161 0" State="Maximized"/><File00026 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\default\Makefile" Position="759 275 1441 731" LineCol="0 0" State="Maximized"/><File00027 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\usart0.c" Position="781 297 1463 753" LineCol="95 0" State="Maximized"/><File00028 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\usart0.h" Position="803 319 1485 775" LineCol="3 0" State="Maximized"/><File00029 Name="c:\WinAVR\avr\include\math.h" Position="825 341 1507 797" LineCol="0 0" State="Maximized"/></Files></AVRWorkspace>
<AVRWorkspace><IOSettings><CurrentRegisters/></IOSettings><part name="ATMEGA162"/><Files><File00000 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\main.c" Position="721 143 1389 607" LineCol="468 0" State="Maximized"/><File00001 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\mk-data-structs.h" Position="743 165 1425 621" LineCol="307 0" State="Maximized"/><File00002 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\max7456_software_spi.h" Position="765 187 1447 643" LineCol="42 0" State="Maximized"/><File00003 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\max7456_software_spi.c" Position="787 209 1469 665" LineCol="247 0" State="Maximized"/><File00004 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\usart1.c" Position="809 231 1491 687" LineCol="245 0" State="Maximized"/><File00005 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\usart1.h" Position="831 253 1513 709" LineCol="32 0" State="Maximized"/><File00006 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\characters.c" Position="853 275 1535 731" LineCol="0 0" State="Maximized"/><File00007 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\main.h" Position="875 297 1557 753" LineCol="175 0" State="Maximized"/><File00008 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_helpers.c" Position="897 319 1579 775" LineCol="168 0" State="Maximized"/><File00009 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_helpers.h" Position="919 341 1601 797" LineCol="0 0" State="Maximized"/><File00010 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_default.c" Position="721 143 1403 599" LineCol="223 0" State="Maximized"/><File00011 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_default.c" Position="743 165 1425 621" LineCol="35 0" State="Maximized"/><File00012 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\config.c" Position="717 120 1609 805" LineCol="133 2" State="Maximized"/><File00013 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\config.h" Position="787 209 1469 665" LineCol="0 0" State="Maximized"/><File00014 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\spi.c" Position="809 231 1491 687" LineCol="0 0" State="Maximized"/><File00015 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\spi.h" Position="831 253 1513 709" LineCol="0 0" State="Maximized"/><File00016 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\buttons.c" Position="853 275 1535 731" LineCol="0 0" State="Maximized"/><File00017 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\buttons.h" Position="875 297 1557 753" LineCol="0 0" State="Maximized"/><File00018 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\ppm.c" Position="897 319 1579 775" LineCol="60 0" State="Maximized"/><File00019 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\ppm.h" Position="919 341 1601 797" LineCol="24 0" State="Maximized"/><File00020 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_minimal.c" Position="721 143 1403 599" LineCol="139 0" State="Maximized"/><File00021 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_default.h" Position="743 165 1425 621" LineCol="25 0" State="Maximized"/><File00022 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_minimal.h" Position="765 187 1447 643" LineCol="25 0" State="Maximized"/><File00023 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_default.h" Position="787 209 1469 665" LineCol="0 0" State="Maximized"/><File00024 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\characters.h" Position="809 231 1491 687" LineCol="0 0" State="Maximized"/><File00025 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_jopl.c" Position="831 253 1513 709" LineCol="161 0" State="Maximized"/><File00026 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\default\Makefile" Position="853 275 1535 731" LineCol="0 0" State="Maximized"/><File00027 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\usart0.c" Position="875 297 1557 753" LineCol="85 0" State="Maximized"/><File00028 Name="H:\Eigene Dateien\C-Projects\C-OSD\trunk\usart0.h" Position="897 319 1579 775" LineCol="3 0" State="Maximized"/><File00029 Name="c:\WinAVR\avr\include\math.h" Position="919 341 1601 797" LineCol="0 0" State="Maximized"/></Files></AVRWorkspace>
/C-OSD/trunk/config.c
24,6 → 24,7
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <string.h>
#include "max7456_software_spi.h"
#include "config.h"
#include "buttons.h"
128,13 → 129,22
usart1_DisableTXD();
#endif
 
paramset_serial setting;
 
//#define NOFCOMMUNICATION
#ifndef NOFCOMMUNICATION
usart1_request_blocking('Q', PSTR(REQUEST_CURRENT_SETTING));
 
memcpy((char*)(&setting), (char*)pRxData, sizeof(paramset_serial));
//setting = *((paramset_serial*)pRxData);
#else
// manual stuff?
memcpy((char*)setting.param.Name, "NO FC COMMUN", 12);
setting.param.UnterspannungsWarnung = 94;
#endif // #ifndef NOFCOMMUNICATION
//write_ascii_char(4 + 12 * 30, rxd_buffer[2]);
 
paramset_serial setting;
setting = *((paramset_serial*)pRxData);
 
write_ndigit_number_u(10, 7, setting.SettingsIndex, 1, 1);
write_ascii_string_len(13, 7, setting.param.Name, 12);
 
182,7 → 192,8
usart1_request_blocking('V', PSTR(REQUEST_NC_VERSION));
#endif
str_VersionInfo VersionInfo;
VersionInfo = *((str_VersionInfo*)pRxData);
//VersionInfo = *((str_VersionInfo*)pRxData);
memcpy((char*)(&VersionInfo), (char*)pRxData, sizeof(str_VersionInfo));
 
write_ndigit_number_u(14, 11, VersionInfo.SWMajor, 3, 1);
write_ndigit_number_u(18, 11, VersionInfo.SWMinor, 3, 1);
/C-OSD/trunk/main.c
30,6 → 30,7
#include <avr/interrupt.h>
#include <util/delay.h>
#include <avr/pgmspace.h>
#include <string.h>
#include "max7456_software_spi.h"
#ifdef ANTENNATRACKTEST
#include "usart0.h"
64,6 → 65,7
volatile str_DebugOut debugData;
#else
volatile NaviData_t naviData;
volatile Data3D_t data3d;
#endif
 
// cache old vars for blinking attribute, checkup is faster than full
375,7 → 377,9
#else
if (rxd_buffer[2] == 'O') { // NC OSD Data
Decode64();
naviData = *((NaviData_t*)pRxData);
//naviData = *((NaviData_t*)pRxData);
memcpy((char*)(&naviData), (char*)pRxData, sizeof(NaviData_t));
rxd_buffer_locked = 0;
 
#ifdef SHIFTBYminus45
naviData.AngleNick = (int8_t)(((int16_t)naviData.AngleRoll + (int16_t)naviData.AngleNick) / 2);
395,7 → 399,13
osd_ncmode();
}
//seconds_since_last_data = 0;
}
// } else if (rxd_buffer[2] == 'C') { // 3D and Stick Data
// Decode64();
// memcpy((char*)(&data3d), (char*)pRxData, sizeof(Data3D_t));
// rxd_buffer_locked = 0;
} else {
rxd_buffer_locked = 0;
}
#endif
 
// ONLY FOR TESTING
430,7 → 440,7
usart0_puts(conv_array);
usart0_puts("\r\n");
#endif
rxd_buffer_locked = 0;
}
// handle keypress
if (s1_pressed()) {
451,6 → 461,13
//usart1_request_mk_data(1, 'o', 100);
usart1_puts_pgm(PSTR(REQUEST_OSD_DATA));
 
 
// request 3D Data from NC every 100ms
//usart1_request_mk_data(1, 'c', 100);
// _delay_ms(10);
// usart1_puts_pgm(PSTR(REQUEST_3DDATA));
 
// and disable debug...
//usart1_request_mk_data(0, 'd', 0);
#endif
460,7 → 477,7
 
// do not spam too much
if (!(COSD_FLAGS_RUNTIME & COSD_DATARECEIVED)) {
_delay_ms(300);
_delay_ms(100);
}
}
 
/C-OSD/trunk/main.h
172,7 → 172,8
#if FCONLY
volatile str_DebugOut debugData;
#else
volatile NaviData_t naviData;
volatile NaviData_t naviData;
volatile Data3D_t data3d;
#endif
 
// cache old vars for blinking attribute, checkup is faster than full
/C-OSD/trunk/mk-data-structs.h
289,4 → 289,24
paramset_t param;
} __attribute__((packed)) paramset_serial;
 
 
 
/*
* MikroKopter 3D-Data struct
* portions taken and adapted from
* http://svn.mikrokopter.de/filedetails.php?repname=NaviCtrl&path=%2Ftags%2FV0.28o%2Fuart1.h
*/
typedef struct {
s16 AngleNick; // in 0.1 deg
s16 AngleRoll; // in 0.1 deg
s16 Heading; // in 0.1 deg
u8 StickNick;
u8 StickRoll;
u8 StickYaw;
u8 StickGas;
u8 reserve[4];
} __attribute__((packed)) Data3D_t;
 
extern Data3D_t Data3D;
 
#endif
/C-OSD/trunk/osd_ncmode_default.c
221,7 → 221,10
if (COSD_FLAGS_MODES & COSD_FLAG_BIGVARIO) {
draw_big_variometer(27, 8, naviData.Variometer);
}
// debug
// write_ndigit_number_u(2, bottom_line - 3, data3d.StickGas, 3, 0);
 
 
// pre-bottom line
if ((COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) && !(COSD_FLAGS_MODES & COSD_FLAG_FCCURRENT)) {
//write_ndigit_number_s(3, bottom_line - 1, ampere, 4, 0);
/C-OSD/trunk/usart1.c
130,7 → 130,7
#if FCONLY
(c == 'V' || c == 'D' || c == 'Q' || c == 'L')) { // version, debug, settings, LCD
#else
(c == 'V' || c == 'O' || c == 'Q')) { // version, OSD, settings
(c == 'V' || c == 'O' || c == 'Q' || c == 'C')) { // version, OSD, settings, 3D-Data
#endif
usart_rx_ok = 1;
rxd_buffer[ptr_rxd_buffer++] = c2;
/C-OSD/trunk/usart1.h
30,8 → 30,8
#define RXD_BUFFER_LEN 180
#define TXD_BUFFER_LEN 20 // not so much needed
 
//#define REQUEST_OSD_DATA "#aoAm==EX\r"
#define REQUEST_OSD_DATA "#bo?]==EG\r"
//#define REQUEST_OSD_DATA "#co?]==EH\r"
#define REQUEST_DBG_DATA "#ad?]==D{\r"
#define REQUEST_DBG_DISABLE "#ad====DY\r"
 
39,9 → 39,9
#define REQUEST_NC_VERSION "#bv====Dl\r"
 
#define REQUEST_CURRENT_SETTING "#bq|nZBFy\r"
 
#define REQUEST_UART_TO_FC "#cu=IfREv\r"
 
#define REQUEST_3DDATA "#cc?]==D|\r"
 
 
extern volatile uint8_t rxd_buffer_locked;