/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,6 → 399,12 |
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 |
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 |
---|
173,6 → 173,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 |
/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; |