Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 520 → Rev 523

/C-OSD/trunk/CHANGE.LOG
18,6 → 18,10
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
****************************************************************************/
 
20090706-2000
*hopefully fixed the new 10th number showing functions
+support for GPS height instead of Baro
 
20090703-0005
*write-number-functions changed, using itoa now, saves space, should be faster
*inline added for basic max7456-spi_send because saves procedure call (^= time)
/C-OSD/trunk/c-osd.aws
1,0 → 0,0
<AVRWorkspace><IOSettings><CurrentRegisters><USART1><register register="UBRR1L" group="USART1" display="1" locked="0"/></USART1><USART1><register register="UCSR1B" group="USART1" display="1" locked="0"/></USART1><USART1><register register="UCSR1A" group="USART1" display="1" locked="0"/></USART1><USART1><register register="UDR" group="USART1" display="1" locked="0"/></USART1><CPU><register register="OSCCAL" group="CPU" display="1" locked="0"/></CPU><JTAG><register register="OCDR" group="JTAG" display="1" locked="0"/></JTAG><PORTE><register register="PINE" group="PORTE" display="1" locked="0"/></PORTE><PORTE><register register="DDRE" group="PORTE" display="1" locked="0"/></PORTE><PORTE><register register="PORTE" group="PORTE" display="1" locked="0"/></PORTE><ANALOG_COMPARATOR><register register="ACSR" group="ANALOG_COMPARATOR" display="1" locked="0"/></ANALOG_COMPARATOR><USART0><register register="UBRR0L" group="USART0" display="1" locked="0"/></USART0><USART0><register register="UCSR0B" group="USART0" display="1" locked="0"/></USART0><USART0><register register="UCSR0A" group="USART0" display="1" locked="0"/></USART0><USART0><register register="UDR0" group="USART0" display="1" locked="0"/></USART0><SPI><register register="SPCR" group="SPI" display="1" locked="0"/></SPI><SPI><register register="SPSR" group="SPI" display="1" locked="0"/></SPI><SPI><register register="SPDR" group="SPI" display="1" locked="0"/></SPI><PORTD><register register="PIND" group="PORTD" display="1" locked="0"/></PORTD><PORTD><register register="DDRD" group="PORTD" display="1" locked="0"/></PORTD><PORTD><register register="PORTD" group="PORTD" display="1" locked="0"/></PORTD><PORTC><register register="PINC" group="PORTC" display="1" locked="0"/></PORTC><PORTC><register register="DDRC" group="PORTC" display="1" locked="0"/></PORTC><PORTC><register register="PORTC" group="PORTC" display="1" locked="0"/></PORTC><PORTB><register register="PINB" group="PORTB" display="1" locked="0"/></PORTB><PORTB><register register="DDRB" group="PORTB" display="1" locked="0"/></PORTB><PORTB><register register="PORTB" group="PORTB" display="1" locked="0"/></PORTB><PORTA><register register="PINA" group="PORTA" display="1" locked="0"/></PORTA><PORTA><register register="DDRA" group="PORTA" display="1" locked="0"/></PORTA><PORTA><register register="PORTA" group="PORTA" display="1" locked="0"/></PORTA><EEPROM><register register="EECR" group="EEPROM" display="1" locked="0"/></EEPROM><EEPROM><register register="EEDR" group="EEPROM" display="1" locked="0"/></EEPROM><EEPROM><register register="EEAR" group="EEPROM" display="1" locked="0"/></EEPROM><USART0><register register="UBRR0H" group="USART0" display="1" locked="0"/></USART0><USART0><register register="UCSR0C" group="USART0" display="1" locked="0"/></USART0><WATCHDOG><register register="WDTCR" group="WATCHDOG" display="1" locked="0"/></WATCHDOG><TIMER_COUNTER_2><register register="OCR2" group="TIMER_COUNTER_2" display="1" locked="0"/></TIMER_COUNTER_2><TIMER_COUNTER_2><register register="TCNT2" group="TIMER_COUNTER_2" display="1" locked="0"/></TIMER_COUNTER_2><TIMER_COUNTER_1><register register="ICR1" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_2><register register="ASSR" group="TIMER_COUNTER_2" display="1" locked="0"/></TIMER_COUNTER_2><TIMER_COUNTER_2><register register="TCCR2" group="TIMER_COUNTER_2" display="1" locked="0"/></TIMER_COUNTER_2><TIMER_COUNTER_1><register register="OCR1B" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_1><register register="OCR1A" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_1><register register="TCNT1" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_1><register register="TCCR1B" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_1><register register="TCCR1A" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><CPU><register register="SFIOR" group="CPU" display="1" locked="0"/></CPU><TIMER_COUNTER_0><register register="OCR0" group="TIMER_COUNTER_0" display="1" locked="0"/></TIMER_COUNTER_0><TIMER_COUNTER_0><register register="TCNT0" group="TIMER_COUNTER_0" display="1" locked="0"/></TIMER_COUNTER_0><TIMER_COUNTER_0><register register="TCCR0" group="TIMER_COUNTER_0" display="1" locked="0"/></TIMER_COUNTER_0><CPU><register register="MCUCSR" group="CPU" display="1" locked="0"/></CPU><JTAG><register register="MCUCSR" group="JTAG" display="1" locked="0"/></JTAG><CPU><register register="MCUCR" group="CPU" display="1" locked="0"/></CPU><EXTERNAL_INTERRUPT><register register="MCUCR" group="EXTERNAL_INTERRUPT" display="1" locked="0"/></EXTERNAL_INTERRUPT><CPU><register register="EMCUCR" group="CPU" display="1" locked="0"/></CPU><EXTERNAL_INTERRUPT><register register="EMCUCR" group="EXTERNAL_INTERRUPT" display="1" locked="0"/></EXTERNAL_INTERRUPT><BOOT_LOAD><register register="SPMCR" group="BOOT_LOAD" display="1" locked="0"/></BOOT_LOAD><TIMER_COUNTER_0><register register="TIFR" group="TIMER_COUNTER_0" display="1" locked="0"/></TIMER_COUNTER_0><TIMER_COUNTER_1><register register="TIFR" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_2><register register="TIFR" group="TIMER_COUNTER_2" display="1" locked="0"/></TIMER_COUNTER_2><TIMER_COUNTER_0><register register="TIMSK" group="TIMER_COUNTER_0" display="1" locked="0"/></TIMER_COUNTER_0><TIMER_COUNTER_1><register register="TIMSK" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_2><register register="TIMSK" group="TIMER_COUNTER_2" display="1" locked="0"/></TIMER_COUNTER_2><EXTERNAL_INTERRUPT><register register="GIFR" group="EXTERNAL_INTERRUPT" display="1" locked="0"/></EXTERNAL_INTERRUPT><EXTERNAL_INTERRUPT><register register="GICR" group="EXTERNAL_INTERRUPT" display="1" locked="0"/></EXTERNAL_INTERRUPT><USART1><register register="UBRR1H" group="USART1" display="1" locked="0"/></USART1><USART1><register register="UCSR1C" group="USART1" display="1" locked="0"/></USART1><CPU><register register="SP" group="CPU" display="1" locked="0"/></CPU><CPU><register register="SREG" group="CPU" display="1" locked="0"/></CPU><CPU><register register="CLKPR" group="CPU" display="1" locked="0"/></CPU><EXTERNAL_INTERRUPT><register register="PCMSK0" group="EXTERNAL_INTERRUPT" display="1" locked="0"/></EXTERNAL_INTERRUPT><EXTERNAL_INTERRUPT><register register="PCMSK1" group="EXTERNAL_INTERRUPT" display="1" locked="0"/></EXTERNAL_INTERRUPT><TIMER_COUNTER_3><register register="ETIFR" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="ETIMSK" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="ICR3" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="OCR3B" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="OCR3A" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="TCNT3" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="TCCR3B" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="TCCR3A" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3></CurrentRegisters></IOSettings><part name="ATMEGA162"/><Files><File00000 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\main.c" Position="839 128 1687 578" LineCol="312 0" State="Maximized"/><File00001 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\mk-data-structs.h" Position="861 150 1723 592" LineCol="48 0" State="Maximized"/><File00002 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\max7456_software_spi.h" Position="883 172 1745 614" LineCol="113 0" State="Maximized"/><File00003 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\max7456_software_spi.c" Position="905 194 1767 636" LineCol="276 0" State="Maximized"/><File00004 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\usart1.c" Position="927 216 1789 658" LineCol="47 0" State="Maximized"/><File00005 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\usart1.h" Position="949 238 1811 680" LineCol="24 0" State="Maximized"/><File00006 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\characters.c" Position="971 260 1833 702" LineCol="5938 0" State="Maximized"/><File00007 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\main.h" Position="993 282 1855 724" LineCol="55 0" State="Maximized"/><File00008 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_helpers.c" Position="1015 304 1877 746" LineCol="197 0" State="Maximized"/><File00009 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_helpers.h" Position="1037 326 1899 768" LineCol="20 0" State="Maximized"/><File00010 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_default.c" Position="839 128 1701 570" LineCol="77 0" State="Maximized"/><File00011 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_default.c" Position="861 150 1723 592" LineCol="29 0" State="Maximized"/><File00012 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\config.c" Position="835 105 1907 776" LineCol="132 0" State="Maximized"/><File00013 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\config.h" Position="905 194 1767 636" LineCol="23 0" State="Maximized"/><File00014 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\spi.c" Position="927 216 1789 658" LineCol="19 0" State="Maximized"/><File00015 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\spi.h" Position="949 238 1811 680" LineCol="26 0" State="Maximized"/><File00016 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\buttons.c" Position="971 260 1833 702" LineCol="0 0" State="Maximized"/><File00017 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\buttons.h" Position="993 282 1855 724" LineCol="0 0" State="Maximized"/><File00018 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\ppm.c" Position="1015 304 1877 746" LineCol="19 0" State="Maximized"/><File00019 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\ppm.h" Position="1037 326 1899 768" LineCol="18 0" State="Maximized"/><File00020 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_minimal.c" Position="839 128 1701 570" LineCol="138 0" State="Maximized"/><File00021 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_default.h" Position="861 150 1723 592" LineCol="20 0" State="Maximized"/><File00022 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_minimal.h" Position="883 172 1745 614" LineCol="20 0" State="Maximized"/><File00023 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_default.h" Position="905 194 1767 636" LineCol="20 0" State="Maximized"/><File00024 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\characters.h" Position="927 216 1789 658" LineCol="22 0" State="Maximized"/></Files></AVRWorkspace>
<AVRWorkspace><IOSettings><CurrentRegisters><USART1><register register="UBRR1L" group="USART1" display="1" locked="0"/></USART1><USART1><register register="UCSR1B" group="USART1" display="1" locked="0"/></USART1><USART1><register register="UCSR1A" group="USART1" display="1" locked="0"/></USART1><USART1><register register="UDR" group="USART1" display="1" locked="0"/></USART1><CPU><register register="OSCCAL" group="CPU" display="1" locked="0"/></CPU><JTAG><register register="OCDR" group="JTAG" display="1" locked="0"/></JTAG><PORTE><register register="PINE" group="PORTE" display="1" locked="0"/></PORTE><PORTE><register register="DDRE" group="PORTE" display="1" locked="0"/></PORTE><PORTE><register register="PORTE" group="PORTE" display="1" locked="0"/></PORTE><ANALOG_COMPARATOR><register register="ACSR" group="ANALOG_COMPARATOR" display="1" locked="0"/></ANALOG_COMPARATOR><USART0><register register="UBRR0L" group="USART0" display="1" locked="0"/></USART0><USART0><register register="UCSR0B" group="USART0" display="1" locked="0"/></USART0><USART0><register register="UCSR0A" group="USART0" display="1" locked="0"/></USART0><USART0><register register="UDR0" group="USART0" display="1" locked="0"/></USART0><SPI><register register="SPCR" group="SPI" display="1" locked="0"/></SPI><SPI><register register="SPSR" group="SPI" display="1" locked="0"/></SPI><SPI><register register="SPDR" group="SPI" display="1" locked="0"/></SPI><PORTD><register register="PIND" group="PORTD" display="1" locked="0"/></PORTD><PORTD><register register="DDRD" group="PORTD" display="1" locked="0"/></PORTD><PORTD><register register="PORTD" group="PORTD" display="1" locked="0"/></PORTD><PORTC><register register="PINC" group="PORTC" display="1" locked="0"/></PORTC><PORTC><register register="DDRC" group="PORTC" display="1" locked="0"/></PORTC><PORTC><register register="PORTC" group="PORTC" display="1" locked="0"/></PORTC><PORTB><register register="PINB" group="PORTB" display="1" locked="0"/></PORTB><PORTB><register register="DDRB" group="PORTB" display="1" locked="0"/></PORTB><PORTB><register register="PORTB" group="PORTB" display="1" locked="0"/></PORTB><PORTA><register register="PINA" group="PORTA" display="1" locked="0"/></PORTA><PORTA><register register="DDRA" group="PORTA" display="1" locked="0"/></PORTA><PORTA><register register="PORTA" group="PORTA" display="1" locked="0"/></PORTA><EEPROM><register register="EECR" group="EEPROM" display="1" locked="0"/></EEPROM><EEPROM><register register="EEDR" group="EEPROM" display="1" locked="0"/></EEPROM><EEPROM><register register="EEAR" group="EEPROM" display="1" locked="0"/></EEPROM><USART0><register register="UBRR0H" group="USART0" display="1" locked="0"/></USART0><USART0><register register="UCSR0C" group="USART0" display="1" locked="0"/></USART0><WATCHDOG><register register="WDTCR" group="WATCHDOG" display="1" locked="0"/></WATCHDOG><TIMER_COUNTER_2><register register="OCR2" group="TIMER_COUNTER_2" display="1" locked="0"/></TIMER_COUNTER_2><TIMER_COUNTER_2><register register="TCNT2" group="TIMER_COUNTER_2" display="1" locked="0"/></TIMER_COUNTER_2><TIMER_COUNTER_1><register register="ICR1" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_2><register register="ASSR" group="TIMER_COUNTER_2" display="1" locked="0"/></TIMER_COUNTER_2><TIMER_COUNTER_2><register register="TCCR2" group="TIMER_COUNTER_2" display="1" locked="0"/></TIMER_COUNTER_2><TIMER_COUNTER_1><register register="OCR1B" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_1><register register="OCR1A" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_1><register register="TCNT1" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_1><register register="TCCR1B" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_1><register register="TCCR1A" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><CPU><register register="SFIOR" group="CPU" display="1" locked="0"/></CPU><TIMER_COUNTER_0><register register="OCR0" group="TIMER_COUNTER_0" display="1" locked="0"/></TIMER_COUNTER_0><TIMER_COUNTER_0><register register="TCNT0" group="TIMER_COUNTER_0" display="1" locked="0"/></TIMER_COUNTER_0><TIMER_COUNTER_0><register register="TCCR0" group="TIMER_COUNTER_0" display="1" locked="0"/></TIMER_COUNTER_0><CPU><register register="MCUCSR" group="CPU" display="1" locked="0"/></CPU><JTAG><register register="MCUCSR" group="JTAG" display="1" locked="0"/></JTAG><CPU><register register="MCUCR" group="CPU" display="1" locked="0"/></CPU><EXTERNAL_INTERRUPT><register register="MCUCR" group="EXTERNAL_INTERRUPT" display="1" locked="0"/></EXTERNAL_INTERRUPT><CPU><register register="EMCUCR" group="CPU" display="1" locked="0"/></CPU><EXTERNAL_INTERRUPT><register register="EMCUCR" group="EXTERNAL_INTERRUPT" display="1" locked="0"/></EXTERNAL_INTERRUPT><BOOT_LOAD><register register="SPMCR" group="BOOT_LOAD" display="1" locked="0"/></BOOT_LOAD><TIMER_COUNTER_0><register register="TIFR" group="TIMER_COUNTER_0" display="1" locked="0"/></TIMER_COUNTER_0><TIMER_COUNTER_1><register register="TIFR" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_2><register register="TIFR" group="TIMER_COUNTER_2" display="1" locked="0"/></TIMER_COUNTER_2><TIMER_COUNTER_0><register register="TIMSK" group="TIMER_COUNTER_0" display="1" locked="0"/></TIMER_COUNTER_0><TIMER_COUNTER_1><register register="TIMSK" group="TIMER_COUNTER_1" display="1" locked="0"/></TIMER_COUNTER_1><TIMER_COUNTER_2><register register="TIMSK" group="TIMER_COUNTER_2" display="1" locked="0"/></TIMER_COUNTER_2><EXTERNAL_INTERRUPT><register register="GIFR" group="EXTERNAL_INTERRUPT" display="1" locked="0"/></EXTERNAL_INTERRUPT><EXTERNAL_INTERRUPT><register register="GICR" group="EXTERNAL_INTERRUPT" display="1" locked="0"/></EXTERNAL_INTERRUPT><USART1><register register="UBRR1H" group="USART1" display="1" locked="0"/></USART1><USART1><register register="UCSR1C" group="USART1" display="1" locked="0"/></USART1><CPU><register register="SP" group="CPU" display="1" locked="0"/></CPU><CPU><register register="SREG" group="CPU" display="1" locked="0"/></CPU><CPU><register register="CLKPR" group="CPU" display="1" locked="0"/></CPU><EXTERNAL_INTERRUPT><register register="PCMSK0" group="EXTERNAL_INTERRUPT" display="1" locked="0"/></EXTERNAL_INTERRUPT><EXTERNAL_INTERRUPT><register register="PCMSK1" group="EXTERNAL_INTERRUPT" display="1" locked="0"/></EXTERNAL_INTERRUPT><TIMER_COUNTER_3><register register="ETIFR" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="ETIMSK" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="ICR3" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="OCR3B" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="OCR3A" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="TCNT3" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="TCCR3B" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3><TIMER_COUNTER_3><register register="TCCR3A" group="TIMER_COUNTER_3" display="1" locked="0"/></TIMER_COUNTER_3></CurrentRegisters></IOSettings><part name="ATmega162"/><Files><File00000 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\main.c" Position="706 126 1554 576" LineCol="122 8" State="Maximized"/><File00001 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\mk-data-structs.h" Position="728 148 1590 590" LineCol="0 0" State="Maximized"/><File00002 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\max7456_software_spi.h" Position="750 170 1612 612" LineCol="0 0" State="Maximized"/><File00003 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\max7456_software_spi.c" Position="772 192 1634 634" LineCol="0 0" State="Maximized"/><File00004 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\usart1.c" Position="794 214 1656 656" LineCol="0 0" State="Maximized"/><File00005 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\usart1.h" Position="816 236 1678 678" LineCol="0 0" State="Maximized"/><File00006 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\characters.c" Position="838 258 1700 700" LineCol="0 0" State="Maximized"/><File00007 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\main.h" Position="860 280 1722 722" LineCol="155 39" State="Maximized"/><File00008 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_helpers.c" Position="882 302 1744 744" LineCol="0 0" State="Maximized"/><File00009 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_helpers.h" Position="904 324 1766 766" LineCol="0 0" State="Maximized"/><File00010 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_default.c" Position="702 103 1774 774" LineCol="100 0" State="Maximized"/><File00011 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_default.c" Position="728 148 1590 590" LineCol="0 0" State="Maximized"/><File00012 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\config.c" Position="750 170 1612 612" LineCol="130 26" State="Maximized"/><File00013 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\config.h" Position="772 192 1634 634" LineCol="0 0" State="Maximized"/><File00014 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\spi.c" Position="794 214 1656 656" LineCol="0 0" State="Maximized"/><File00015 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\spi.h" Position="816 236 1678 678" LineCol="0 0" State="Maximized"/><File00016 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\buttons.c" Position="838 258 1700 700" LineCol="0 0" State="Maximized"/><File00017 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\buttons.h" Position="860 280 1722 722" LineCol="0 0" State="Maximized"/><File00018 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\ppm.c" Position="882 302 1744 744" LineCol="0 0" State="Maximized"/><File00019 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\ppm.h" Position="904 324 1766 766" LineCol="0 0" State="Maximized"/><File00020 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_minimal.c" Position="706 126 1568 568" LineCol="0 0" State="Maximized"/><File00021 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_default.h" Position="728 148 1590 590" LineCol="0 0" State="Maximized"/><File00022 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_ncmode_minimal.h" Position="750 170 1612 612" LineCol="0 0" State="Maximized"/><File00023 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\osd_fcmode_default.h" Position="772 192 1634 634" LineCol="0 0" State="Maximized"/><File00024 Name="G:\Eigene Dateien\C-Projects\C-OSD\trunk\characters.h" Position="794 214 1656 656" LineCol="0 0" State="Maximized"/></Files></AVRWorkspace>
/C-OSD/trunk/config.c
33,7 → 33,8
uint8_t EEMEM ee_checkbyte2 = CHECKBYTE2;
uint16_t EEMEM ee_cal_ampere = 512;
uint8_t EEMEM ee_sensor = 50;
uint8_t EEMEM ee_COSD_FLAGS;
uint8_t EEMEM ee_COSD_FLAGS_MODES = 0;
uint8_t EEMEM ee_COSD_FLAGS_CONFIG = 0;
uint8_t EEMEM ee_COSD_DISPLAYMODE = 0;
 
#if !(ALLCHARSDEBUG|(WRITECHARS != -1))
66,10 → 67,11
const char menu_item6[] PROGMEM = "Voltage by C-Strom";
const char menu_item7[] PROGMEM = "Reset uptime";
const char menu_item8[] PROGMEM = "Display Mode";
const char menu_item9[] PROGMEM = "Save config";
const char menu_item10[] PROGMEM = "EXIT";
const char menu_item9[] PROGMEM = "Height by";
const char menu_item10[] PROGMEM = "Save config";
const char menu_item11[] PROGMEM = "EXIT";
const char* menu[] = {menu_item0, menu_item1, menu_item2, menu_item3, menu_item4,
menu_item5, menu_item6, menu_item7, menu_item8, menu_item9, menu_item10};
menu_item5, menu_item6, menu_item7, menu_item8, menu_item9, menu_item10, menu_item11};
 
const displaymode_t * mode;
 
87,7 → 89,8
#if !(ALLCHARSDEBUG|(WRITECHARS != -1))
if (verbose) write_ascii_string_pgm(2, 9, ee_msg[0]); // Loading data
#endif
COSD_FLAGS = eeprom_read_byte(&ee_COSD_FLAGS);
COSD_FLAGS_MODES = eeprom_read_byte(&ee_COSD_FLAGS_MODES);
COSD_FLAGS_CONFIG = eeprom_read_byte(&ee_COSD_FLAGS_CONFIG);
COSD_DISPLAYMODE = eeprom_read_byte(&ee_COSD_DISPLAYMODE);
//if (verbose) write_ndigit_number_u(23, 11, COSD_DISPLAYMODE, 2, 0);
} else {
105,7 → 108,8
void save_eeprom() {
eeprom_write_byte(&ee_checkbyte1, CHECKBYTE1);
eeprom_write_byte(&ee_checkbyte2, CHECKBYTE2);
eeprom_write_byte(&ee_COSD_FLAGS, COSD_FLAGS);
eeprom_write_byte(&ee_COSD_FLAGS_MODES, COSD_FLAGS_MODES);
eeprom_write_byte(&ee_COSD_FLAGS_CONFIG, COSD_FLAGS_CONFIG);
eeprom_write_byte(&ee_COSD_DISPLAYMODE, COSD_DISPLAYMODE);
}
 
124,7 → 128,7
write_ascii_string_pgm(2, 2, init_point[2]); // NaviCtrl Mode
//write_ascii_string(2, 2, "NaviCtrl Mode");
#endif
write_ascii_string(2, 3, BUILDDATE);
write_ascii_string_pgm(2, 3, PSTR(BUILDDATE));
uint8_t cellnum = 0;
if (CELL_NUM == -1) {
write_ascii_string_pgm(2, 4, init_point[3]); // Guessing Number of Cells
150,7 → 154,7
get_eeprom(1);
 
//write_ascii_string_pgm(23, 2, vm[COSD_FLAGS & COSD_FLAG_NTSC]);
if (COSD_FLAGS & COSD_FLAG_NTSC) {
if (COSD_FLAGS_CONFIG & COSD_FLAG_NTSC) {
write_ascii_string_pgm(23, 2, VM_NTSC);
} else {
write_ascii_string_pgm(23, 2, VM_PAL);
172,7 → 176,7
_delay_ms(200);
clear();
// update flags to paint display again because of clear
COSD_FLAGS2 &= ~COSD_ICONS_WRITTEN;
COSD_FLAGS_RUNTIME &= ~COSD_ICONS_WRITTEN;
}
 
/* ##########################################################################
188,38 → 192,38
// draw current _cursor_
write_ascii_string(3, chosen + 2, ">");
 
if (COSD_FLAGS & COSD_FLAG_NTSC) {
if (COSD_FLAGS_CONFIG & COSD_FLAG_NTSC) {
write_ascii_string_pgm(23, 2, VM_NTSC);
} else {
write_ascii_string_pgm(23, 2, VM_PAL);
}
if (COSD_FLAGS & COSD_FLAG_HUD) {
if (COSD_FLAGS_MODES & COSD_FLAG_HUD) {
write_ascii_string_pgm(23, 3, ON);
} else {
write_ascii_string_pgm(23, 3, OFF);
}
if (COSD_FLAGS & COSD_FLAG_ARTHORIZON) {
if (COSD_FLAGS_MODES & COSD_FLAG_ARTHORIZON) {
write_ascii_string_pgm(23, 4, ON);
} else {
write_ascii_string_pgm(23, 4, OFF);
}
if (COSD_FLAGS & COSD_FLAG_BIGVARIO) {
if (COSD_FLAGS_MODES & COSD_FLAG_BIGVARIO) {
write_ascii_string_pgm(23, 5, ON);
} else {
write_ascii_string_pgm(23, 5, OFF);
}
if (COSD_FLAGS & COSD_FLAG_STATS) {
if (COSD_FLAGS_MODES & COSD_FLAG_STATS) {
write_ascii_string_pgm(23, 6, ON);
} else {
write_ascii_string_pgm(23, 6, OFF);
}
if (COSD_FLAGS & COSD_FLAG_WARNINGS) {
if (COSD_FLAGS_MODES & COSD_FLAG_WARNINGS) {
write_ascii_string_pgm(23, 7, ON);
} else {
write_ascii_string_pgm(23, 7, OFF);
}
if (COSD_FLAGS & COSD_FLAG_STROMVOLT) {
if (COSD_FLAGS_MODES & COSD_FLAG_STROMVOLT) {
write_ascii_string_pgm(23, 8, ON);
} else {
write_ascii_string_pgm(23, 8, OFF);
227,6 → 231,11
//write_ndigit_number_u(23, 10, COSD_DISPLAYMODE, 2, 0);
write_ascii_string_pgm(18, 10, (const char *) (pgm_read_word(&(mode->desc))));
if (COSD_FLAGS_CONFIG & COSD_FLAG_GPSHEIGHT) {
write_ascii_string_pgm(20, 11, PSTR(" GPS"));
} else {
write_ascii_string_pgm(20, 11, PSTR("BARO"));
}
}
 
/**
233,7 → 242,7
* some sort of clicking response in the menu
*/
void config_menu_doclick(uint8_t chosen, const char* menu[]) {
write_ascii_string(4, chosen + 2, "DONE ");
write_ascii_string_pgm(4, chosen + 2, PSTR("DONE "));
_delay_ms(500);
write_ascii_string_pgm(4, chosen + 2, menu[chosen]);
}
250,7 → 259,7
 
uint8_t inmenu = 1;
uint8_t chosen = 0;
write_ascii_string(6, 1, "C-OSD Config Menu");
write_ascii_string_pgm(6, 1, PSTR("C-OSD Config Menu"));
 
// wait a bit before doing stuff so user has chance to release button
_delay_ms(250);
266,6 → 275,7
write_ascii_string_pgm(4, 10, menu[8]);
write_ascii_string_pgm(4, 11, menu[9]);
write_ascii_string_pgm(4, 12, menu[10]);
write_ascii_string_pgm(4, 13, menu[11]);
 
config_menu_drawings(chosen);
 
272,15 → 282,15
while (inmenu) {
if (s2_pressed()) {
write_ascii_string(3, chosen + 2, " ");
chosen = (chosen + 1) % 11;
chosen = (chosen + 1) % 12;
write_ascii_string(3, chosen + 2, ">");
_delay_ms(500);
} else if (s1_pressed()) {
switch (chosen) {
case 0: // full HUD
COSD_FLAGS ^= COSD_FLAG_NTSC;
case 0: // NTSC or PAL
COSD_FLAGS_CONFIG ^= COSD_FLAG_NTSC;
// Setup Video Mode
if (COSD_FLAGS & COSD_FLAG_NTSC) {
if (COSD_FLAGS_CONFIG & COSD_FLAG_NTSC) {
// NTSC + enable display immediately (VM0)
spi_send_byte(0x00, 0b00001000);
 
294,27 → 304,27
config_menu_drawings(chosen);
break;
case 1: // full HUD
COSD_FLAGS ^= COSD_FLAG_HUD;
COSD_FLAGS_MODES ^= COSD_FLAG_HUD;
config_menu_drawings(chosen);
break;
case 2: // art horizon
COSD_FLAGS ^= COSD_FLAG_ARTHORIZON;
COSD_FLAGS_MODES ^= COSD_FLAG_ARTHORIZON;
config_menu_drawings(chosen);
break;
case 3: // big vario
COSD_FLAGS ^= COSD_FLAG_BIGVARIO;
COSD_FLAGS_MODES ^= COSD_FLAG_BIGVARIO;
config_menu_drawings(chosen);
break;
case 4: // statistics
COSD_FLAGS ^= COSD_FLAG_STATS;
COSD_FLAGS_MODES ^= COSD_FLAG_STATS;
config_menu_drawings(chosen);
break;
case 5: // warnings
COSD_FLAGS ^= COSD_FLAG_WARNINGS;
COSD_FLAGS_MODES ^= COSD_FLAG_WARNINGS;
config_menu_drawings(chosen);
break;
case 6: // 2nd voltage by c-strom
COSD_FLAGS ^= COSD_FLAG_STROMVOLT;
COSD_FLAGS_MODES ^= COSD_FLAG_STROMVOLT;
config_menu_drawings(chosen);
break;
case 7: // reset uptime
335,11 → 345,15
#endif
config_menu_drawings(chosen);
break;
case 9: // save
case 9: // GPS or BARO height
COSD_FLAGS_CONFIG ^= COSD_FLAG_GPSHEIGHT;
config_menu_drawings(chosen);
break;
case 10: // save
save_eeprom();
config_menu_doclick(chosen, menu);
break;
case 10: // exit
case 11: // exit
inmenu = 0;
break;
}
351,7 → 365,7
clear();
 
// update flags to paint display again if needed
COSD_FLAGS2 &= ~COSD_ICONS_WRITTEN;
COSD_FLAGS_RUNTIME &= ~COSD_ICONS_WRITTEN;
 
// enable interrupts again
sei();
/C-OSD/trunk/config.h
19,9 → 19,9
****************************************************************************/
 
#define CHECKBYTE1 23
#define CHECKBYTE2 23
#define CHECKBYTE2 5
 
extern uint8_t COSD_FLAGS, COSD_FLAGS2;
extern uint8_t COSD_FLAGS_MODES, COSD_FLAGS_CONFIG, COSD_FLAGS_RUNTIME, COSD_DISPLAYMODE;
extern uint8_t min_voltage;
extern uint8_t max_voltage;
extern uint8_t bottom_line;
/C-OSD/trunk/main.c
190,27 → 190,27
* ##########################################################################*/
int main(void) {
// set up FLAGS
COSD_FLAGS = 0;
COSD_FLAGS_MODES = 0, COSD_FLAGS_CONFIG = 0, COSD_FLAGS_RUNTIME = 0;
#if NTSC
COSD_FLAGS |= COSD_FLAG_NTSC;
COSD_FLAGS_CONFIG |= COSD_FLAG_NTSC;
#endif
#if HUD
COSD_FLAGS |= COSD_FLAG_HUD;
COSD_FLAGS_MODES |= COSD_FLAG_HUD;
#endif
#if ARTHORIZON
COSD_FLAGS |= COSD_FLAG_ARTHORIZON;
COSD_FLAGS_MODES |= COSD_FLAG_ARTHORIZON;
#endif
#if BIGVARIO
COSD_FLAGS |= COSD_FLAG_BIGARIO;
COSD_FLAGS_MODES |= COSD_FLAG_BIGARIO;
#endif
#if STATS
COSD_FLAGS |= COSD_FLAG_STATS;
COSD_FLAGS_MODES |= COSD_FLAG_STATS;
#endif
#if WARNINGS
COSD_FLAGS |= COSD_FLAG_WARNINGS;
COSD_FLAGS_MODES |= COSD_FLAG_WARNINGS;
#endif
#if FCONLY
COSD_FLAGS |= COSD_FLAG_FCMODE;
COSD_FLAGS_CONFIG |= COSD_FLAG_FCMODE;
#endif
 
 
/C-OSD/trunk/main.h
61,14 → 61,16
/* ##########################################################################
* FLAGS usable during runtime that get saved
* ##########################################################################*/
#define COSD_FLAG_HUD 1
#define COSD_FLAG_ARTHORIZON 2
#define COSD_FLAG_BIGVARIO 4
#define COSD_FLAG_STATS 8
#define COSD_FLAG_WARNINGS 16
#define COSD_FLAG_STROMVOLT 32
 
#define COSD_FLAG_NTSC 1
#define COSD_FLAG_HUD 2
#define COSD_FLAG_ARTHORIZON 4
#define COSD_FLAG_BIGVARIO 8
#define COSD_FLAG_STATS 16
#define COSD_FLAG_WARNINGS 32
#define COSD_FLAG_STROMVOLT 64
#define COSD_FLAG_FCMODE 128
#define COSD_FLAG_GPSHEIGHT 2
#define COSD_FLAG_FCMODE 4
 
/* ##########################################################################
* FLAGS only usable during runtime (not saved)
148,10 → 150,10
uint8_t max_voltage;
 
// Flags
uint8_t COSD_FLAGS, COSD_FLAGS2, COSD_DISPLAYMODE;
uint8_t COSD_FLAGS_MODES, COSD_FLAGS_CONFIG, COSD_FLAGS_RUNTIME, COSD_DISPLAYMODE;
 
// stats for after flight
int16_t max_Altimeter;
int16_t max_Altimeter, altimeter_offset;
uint8_t min_UBat;
 
uint16_t max_GroundSpeed;
/C-OSD/trunk/max7456_software_spi.c
247,15 → 247,22
void write_ndigit_number_u_10th(uint8_t x, uint8_t y, uint16_t number, int16_t length, uint8_t pad) {
char s[7];
itoa(number, s, 10 );
for (uint8_t i = 0; i < length - strlen(s); i++) {
if (pad) write_char((x++)+(y * 30), 10);
else write_ascii_char((x++)+(y * 30), 0);
uint8_t len = strlen(s);
for (uint8_t i = 0; i < length - len; i++) {
if (pad) write_char((x++)+(y * 30), 10); // zero
else write_char((x++)+(y * 30), 0); // blank
}
char rest = s[strlen(s)-1];
s[strlen(s)-1] = 0;
if (number < 10) write_char((x-1)+(y * 30), 10); // zero
else write_ascii_string(x, y, s);
x += strlen(s);
char rest = s[len - 1];
s[len - 1] = 0;
if (len == 1) {
write_char((x-1)+(y * 30), 10); // zero
} else if (len == 2 && s[0] == '-') {
write_char((x-1)+(y * 30), 0x49); // minus
write_char((x)+(y * 30), 10); // zero
} else {
write_ascii_string(x, y, s);
}
x += len - 1;
write_char((x++)+(y * 30), 65); // decimal point
write_ascii_char((x++)+(y * 30), rest); // after dot
}
268,20 → 275,24
void write_ndigit_number_s_10th(uint8_t x, uint8_t y, int16_t number, int16_t length, uint8_t pad) {
char s[7];
itoa(number, s, 10 );
for (uint8_t i = 0; i < length - strlen(s); i++) {
if (pad) write_char((x++)+(y * 30), 10);
else write_char((x++)+(y * 30), 0);
uint8_t len = strlen(s);
for (uint8_t i = 0; i < length - len; i++) {
if (pad) write_char((x++)+(y * 30), 10); // zero
else write_char((x++)+(y * 30), 0); // blank
}
char rest = s[strlen(s)-1];
s[strlen(s)-1] = 0;
if (number < 10) write_char((x)+(y * 30), 10); // zero
else {
char rest = s[len - 1];
s[len - 1] = 0;
if (len == 1) {
write_char((x-1)+(y * 30), 10); // zero
} else if (len == 2 && s[0] == '-') {
write_char((x-1)+(y * 30), 0x49); // minus
write_char((x)+(y * 30), 10); // zero
} else {
write_ascii_string(x, y, s);
}
x += strlen(s);
x += len - 1;
write_char((x++)+(y * 30), 65); // decimal point
write_ascii_char((x++)+(y * 30), rest); // after dot
}
 
/**
/C-OSD/trunk/osd_fcmode_default.c
26,20 → 26,20
#if !(ALLCHARSDEBUG|(WRITECHARS != -1))
 
int osd_fcmode_default() {
if (COSD_FLAGS & COSD_FLAG_HUD) {
if (COSD_FLAGS_MODES & COSD_FLAG_HUD) {
// write icons at init or after menu/mode-switch
if (!(COSD_FLAGS2 & COSD_ICONS_WRITTEN)) {
if (!(COSD_FLAGS_RUNTIME & COSD_ICONS_WRITTEN)) {
write_char_xy(10, top_line, 0xCA); // RC-transmitter
write_char_xy(27, top_line, 0xCC); // small meters m height
write_char_xy(7, bottom_line, 0x9E); // small v
if (COSD_FLAGS2 & COSD_FLAG_STROMREC) {
if (COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) {
write_char_xy(7, bottom_line - 1, 0x9F); // small A
write_char_xy(14, bottom_line - 1, 0xB5); // mah
if (COSD_FLAGS & COSD_FLAG_STROMVOLT) {
if (COSD_FLAGS_MODES & COSD_FLAG_STROMVOLT) {
write_char_xy(21, bottom_line - 1, 0x9E); // small V
}
}
COSD_FLAGS2 |= COSD_ICONS_WRITTEN;
COSD_FLAGS_RUNTIME |= COSD_ICONS_WRITTEN;
}
 
write_ndigit_number_u(7, top_line, debugData.Analog[10], 3, 0);
60,16 → 60,16
}
if (debugData.Analog[5] > max_Altimeter) max_Altimeter = debugData.Analog[5];
 
if (COSD_FLAGS & COSD_FLAG_ARTHORIZON) {
if (COSD_FLAGS_MODES & COSD_FLAG_ARTHORIZON) {
draw_artificial_horizon(top_line + 2, bottom_line - 1, debugData.Analog[0], debugData.Analog[1]);
}
 
// pre-bottom line
if (COSD_FLAGS2 & COSD_FLAG_STROMREC) {
if (COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) {
//write_ndigit_number_s(3, bottom_line - 1, ampere, 4, 0);
write_ndigit_number_u_10th(3, bottom_line - 1, ampere / 10, 3, 0);
write_ndigit_number_s(10, bottom_line - 1, ampere_wasted / 10, 4, 0);
if (COSD_FLAGS & COSD_FLAG_STROMVOLT) {
if (COSD_FLAGS_MODES & COSD_FLAG_STROMVOLT) {
write_ndigit_number_u_10th(17, bottom_line - 1, s_volt, 3, 0);
}
}
/C-OSD/trunk/osd_ncmode_default.c
26,9 → 26,9
#if !(ALLCHARSDEBUG|(WRITECHARS != -1))
 
int osd_ncmode_default() {
if (COSD_FLAGS & COSD_FLAG_HUD) {
if (COSD_FLAGS_MODES & COSD_FLAG_HUD) {
// write icons at init or after menu/mode-switch
if (!(COSD_FLAGS2 & COSD_ICONS_WRITTEN)) {
if (!(COSD_FLAGS_RUNTIME & COSD_ICONS_WRITTEN)) {
write_char_xy(5, top_line, 0xCB); // km/h
write_char_xy(10, top_line, 0xCA); // RC-transmitter
write_char_xy(16, top_line, 0xD0); // degree symbol
37,10 → 37,10
write_char_xy(22, top_line + 1, 0xB2); // right circle
write_char_xy(27, top_line + 1, 0xCC); // small meters m home
write_char_xy(7, bottom_line, 0x9E); // small V
if (COSD_FLAGS2 & COSD_FLAG_STROMREC) {
if (COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) {
write_char_xy(7, bottom_line - 1, 0x9F); // small A
write_char_xy(14, bottom_line - 1, 0xB5); // mah
if (COSD_FLAGS & COSD_FLAG_STROMVOLT) {
if (COSD_FLAGS_MODES & COSD_FLAG_STROMVOLT) {
write_char_xy(21, bottom_line - 1, 0x9E); // small V
}
}
48,7 → 48,7
write_char_xy(21, bottom_line, 0xD2); // fly clock
write_char_xy(26, bottom_line, 0xC8); // sat1
write_char_xy(27, bottom_line, 0xC9); // sat2
COSD_FLAGS2 |= COSD_ICONS_WRITTEN;
COSD_FLAGS_RUNTIME |= COSD_ICONS_WRITTEN;
}
 
// first line
76,16 → 76,25
 
draw_variometer(21, top_line, naviData.Variometer);
 
//note:lephisto:according to several sources it's /30
if (naviData.Altimeter > 300 || naviData.Altimeter < -300) {
// above 10m only write full meters
write_ndigit_number_s(23, top_line, naviData.Altimeter / 30, 4, 0); // BARO
//write_ndigit_number_s(23, top_line, (int16_t) (naviData.CurrentPosition.Altitude / 1000), 4, 0); // GPS
if (COSD_FLAGS_CONFIG & COSD_FLAG_GPSHEIGHT) {
if (naviData.CurrentPosition.Altitude / 1000 - altimeter_offset > 10 || naviData.CurrentPosition.Altitude / 1000 - altimeter_offset < -10) {
// above 10m only write full meters
write_ndigit_number_s(23, top_line, (int16_t) (naviData.CurrentPosition.Altitude / 1000 - altimeter_offset), 4, 0); // GPS
} else {
// up to 10m write meters.dm
write_ndigit_number_s_10th(23, top_line, (int16_t) (naviData.CurrentPosition.Altitude / 100 - altimeter_offset * 10), 3, 0); // GPS
}
} else {
// up to 10m write meters.dm
write_ndigit_number_s_10th(23, top_line, naviData.Altimeter / 3, 3, 0); // BARO
//write_ndigit_number_s_10th(23, top_line, (int16_t) (naviData.CurrentPosition.Altitude / 1000), 3, 0); // GPS
+ //note:lephisto:according to several sources it's /30
+ if (naviData.Altimeter > 300 || naviData.Altimeter < -300) {
+ // above 10m only write full meters
+ write_ndigit_number_s(23, top_line, naviData.Altimeter / 30, 4, 0); // BARO
+ } else {
+ // up to 10m write meters.dm
+ write_ndigit_number_s_10th(23, top_line, naviData.Altimeter / 3, 3, 0); // BARO
+ }
+ }
// seccond line
draw_compass(11, top_line + 1, naviData.CompassHeading);
@@ -102,11 +111,13 @@
if (naviData.MKFlags & FLAG_MOTOR_RUN) { // should be engines running
if (!(old_MKFlags & FLAG_MOTOR_RUN)) { // motors just started, clear middle
clear();
+ // remember current heigth for gps offset
+ altimeter_offset = naviData.CurrentPosition.Altitude / 1000;
// update flags to paint display again if needed
- COSD_FLAGS2 &= ~COSD_ICONS_WRITTEN;
+ COSD_FLAGS_RUNTIME &= ~COSD_ICONS_WRITTEN;
}
- if (COSD_FLAGS & COSD_FLAG_ARTHORIZON) {
- if (COSD_FLAGS2 & COSD_FLAG_STROMREC) {
+ if (COSD_FLAGS_MODES & COSD_FLAG_ARTHORIZON) {
+ if (COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) {
draw_artificial_horizon(top_line + 2, bottom_line - 2, naviData.AngleNick, naviData.AngleRoll);
} else {
draw_artificial_horizon(top_line + 2, bottom_line - 1, naviData.AngleNick, naviData.AngleRoll);
@@ -113,13 +124,13 @@
}
}
// motors are on, assume we were/are flying
- COSD_FLAGS2 |= COSD_WASFLYING;
+ COSD_FLAGS_RUNTIME |= COSD_WASFLYING;
} else {
// stats
- if ((COSD_FLAGS2 & COSD_WASFLYING) && (COSD_FLAGS & COSD_FLAG_STATS)) {
+ if ((COSD_FLAGS_RUNTIME & COSD_WASFLYING) && (COSD_FLAGS_MODES & COSD_FLAG_STATS)) {
uint8_t line = 3;
write_ascii_string_pgm(2, line, (const char *) (pgm_read_word(&(stats_item_pointers[0])))); // max Altitude
- write_ndigit_number_s(18, line, max_Altimeter / 30, 4, 0);
+ write_ndigit_number_s(18, line, max_Altimeter, 4, 0);
write_char_xy(22, line, 204); // small meters m
write_ascii_string_pgm(2, ++line, (const char *) (pgm_read_word(&(stats_item_pointers[1])))); // max Speed
write_ndigit_number_u(19, line, (uint16_t) (((uint32_t) max_GroundSpeed * (uint32_t) 9) / (uint32_t) 250), 3, 0);
@@ -130,7 +141,7 @@
write_ascii_string_pgm(2, ++line, (const char *) (pgm_read_word(&(stats_item_pointers[3])))); // min voltage
write_ndigit_number_u_10th(18, line, min_UBat, 3, 0);
write_char_xy(22, line, 0x9E); // small V
- if (COSD_FLAGS2 & COSD_FLAG_STROMREC) {
+ if (COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) {
write_ascii_string_pgm(2, ++line, (const char *) (pgm_read_word(&(stats_item_pointers[7])))); // ampere
write_ndigit_number_u_10th(18, line, max_ampere / 10, 3, 0);
write_char_xy(22, line, 0x9F); // small A
@@ -142,8 +153,8 @@
write_gps_pos(15, line, naviData.CurrentPosition.Longitude);
write_ascii_string_pgm(2, ++line, (const char *) (pgm_read_word(&(stats_item_pointers[6])))); // latitude
write_gps_pos(15, line, naviData.CurrentPosition.Latitude);
- } else if (COSD_FLAGS & COSD_FLAG_ARTHORIZON) { // if no stats there is space horizon
- if (COSD_FLAGS2 & COSD_FLAG_STROMREC) {
+ } else if (COSD_FLAGS_MODES & COSD_FLAG_ARTHORIZON) { // if no stats there is space horizon
+ if (COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) {
draw_artificial_horizon(top_line + 2, bottom_line - 2, naviData.AngleNick, naviData.AngleRoll);
} else {
draw_artificial_horizon(top_line + 2, bottom_line - 1, naviData.AngleNick, naviData.AngleRoll);
@@ -150,16 +161,16 @@
}
}
}
- if (COSD_FLAGS & COSD_FLAG_BIGVARIO) {
+ if (COSD_FLAGS_MODES & COSD_FLAG_BIGVARIO) {
draw_big_variometer(27, 8, naviData.Variometer);
}
// pre-bottom line
- if (COSD_FLAGS2 & COSD_FLAG_STROMREC) {
+ if (COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) {
//write_ndigit_number_s(3, bottom_line - 1, ampere, 4, 0);
write_ndigit_number_u_10th(3, bottom_line - 1, ampere / 10, 3, 0);
write_ndigit_number_s(10, bottom_line - 1, ampere_wasted / 10, 4, 0);
- if (COSD_FLAGS & COSD_FLAG_STROMVOLT) {
+ if (COSD_FLAGS_MODES & COSD_FLAG_STROMVOLT) {
write_ndigit_number_u_10th(17, bottom_line - 1, s_volt, 3, 0);
}
}
@@ -200,7 +211,11 @@
// remember statistics (only when engines running)
if (naviData.MKFlags & FLAG_MOTOR_RUN) {
- if (naviData.Altimeter > max_Altimeter) max_Altimeter = naviData.Altimeter;
+ 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 / 30 > max_Altimeter) max_Altimeter = naviData.Altimeter / 30;
+ }
if (naviData.GroundSpeed > max_GroundSpeed) max_GroundSpeed = naviData.GroundSpeed;
if (naviData.HomePositionDeviation.Distance > max_Distance) {
max_Distance = naviData.HomePositionDeviation.Distance;
/C-OSD/trunk/osd_ncmode_minimal.c
26,9 → 26,9
#if !(ALLCHARSDEBUG|(WRITECHARS != -1))
 
int osd_ncmode_minimal() {
if (COSD_FLAGS & COSD_FLAG_HUD) {
if (COSD_FLAGS_MODES & COSD_FLAG_HUD) {
// write icons at init or after menu/mode-switch
if (!(COSD_FLAGS2 & COSD_ICONS_WRITTEN)) {
if (!(COSD_FLAGS_RUNTIME & COSD_ICONS_WRITTEN)) {
write_char_xy(4, top_line, 0xCB); // km/h
write_char_xy(15, top_line, 0xCC); // small meters m height
write_char_xy(26, top_line, 0xCC); // small meters m height
38,7 → 38,7
write_char_xy(17, bottom_line, 0xD2); // fly clock
write_char_xy(26, bottom_line, 0xC8); // sat1
write_char_xy(27, bottom_line, 0xC9); // sat2
COSD_FLAGS2 |= COSD_ICONS_WRITTEN;
COSD_FLAGS_RUNTIME |= COSD_ICONS_WRITTEN;
}
 
// first line
65,10 → 65,10
if (!(old_MKFlags & FLAG_MOTOR_RUN)) { // motors just started, clear middle
clear();
// update flags to paint display again if needed
COSD_FLAGS2 &= ~COSD_ICONS_WRITTEN;
COSD_FLAGS_RUNTIME &= ~COSD_ICONS_WRITTEN;
}
if (COSD_FLAGS & COSD_FLAG_ARTHORIZON) {
if (COSD_FLAGS2 & COSD_FLAG_STROMREC) {
if (COSD_FLAGS_MODES & COSD_FLAG_ARTHORIZON) {
if (COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) {
draw_artificial_horizon(top_line + 2, bottom_line - 2, naviData.AngleNick, naviData.AngleRoll);
} else {
draw_artificial_horizon(top_line + 2, bottom_line - 1, naviData.AngleNick, naviData.AngleRoll);
75,10 → 75,10
}
}
// motors are on, assume we were/are flying
COSD_FLAGS2 |= COSD_WASFLYING;
COSD_FLAGS_RUNTIME |= COSD_WASFLYING;
} else {
// stats
if ((COSD_FLAGS2 & COSD_WASFLYING) && (COSD_FLAGS & COSD_FLAG_STATS)) {
if ((COSD_FLAGS_RUNTIME & COSD_WASFLYING) && (COSD_FLAGS_MODES & COSD_FLAG_STATS)) {
uint8_t line = 3;
write_ascii_string_pgm(2, line, (const char *) (pgm_read_word(&(stats_item_pointers[0])))); // max Altitude
write_ndigit_number_s(18, line, max_Altimeter / 30, 4, 0);
92,7 → 92,7
write_ascii_string_pgm(2, ++line, (const char *) (pgm_read_word(&(stats_item_pointers[3])))); // min voltage
write_ndigit_number_u_10th(18, line, min_UBat, 3, 0);
write_char_xy(22, line, 0x9E); // small V
if (COSD_FLAGS2 & COSD_FLAG_STROMREC) {
if (COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) {
write_ascii_string_pgm(2, ++line, (const char *) (pgm_read_word(&(stats_item_pointers[7])))); // ampere
write_ndigit_number_u_10th(18, line, max_ampere / 10, 3, 0);
write_char_xy(22, line, 0x9F); // small A
104,8 → 104,8
write_gps_pos(15, line, naviData.CurrentPosition.Longitude);
write_ascii_string_pgm(2, ++line, (const char *) (pgm_read_word(&(stats_item_pointers[6])))); // latitude
write_gps_pos(15, line, naviData.CurrentPosition.Latitude);
} else if (COSD_FLAGS & COSD_FLAG_ARTHORIZON) { // if no stats there is space horizon
if (COSD_FLAGS2 & COSD_FLAG_STROMREC) {
} else if (COSD_FLAGS_MODES & COSD_FLAG_ARTHORIZON) { // if no stats there is space horizon
if (COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) {
draw_artificial_horizon(top_line + 2, bottom_line - 2, naviData.AngleNick, naviData.AngleRoll);
} else {
draw_artificial_horizon(top_line + 2, bottom_line - 1, naviData.AngleNick, naviData.AngleRoll);
112,12 → 112,12
}
}
}
if (COSD_FLAGS & COSD_FLAG_BIGVARIO) {
if (COSD_FLAGS_MODES & COSD_FLAG_BIGVARIO) {
draw_big_variometer(27, 8, naviData.Variometer);
}
 
// pre-bottom line
if (COSD_FLAGS2 & COSD_FLAG_STROMREC) {
if (COSD_FLAGS_RUNTIME & COSD_FLAG_STROMREC) {
//write_ndigit_number_s(3, bottom_line - 1, ampere, 4, 0);
write_ndigit_number_u_10th(3, bottom_line - 1, ampere / 10, 3, 0);
write_ndigit_number_s(10, bottom_line - 1, ampere_wasted / 10, 4, 0);