Subversion Repositories FlightCtrl

Rev

Rev 1917 | Rev 1920 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1917 holgerb 1
#include "libfc.h"
2
#include "printf_P.h"
3
#include "main.h"
4
#include "spi.h"
5
#include "capacity.h"
6
 
7
#define HoTT_printfxy(x,y,format, args...)  { LIBFC_HoTT_SetPos(y * 21 + x); _printf_P(&LIBFC_HoTT_Putchar, PSTR(format) , ## args);}
8
#define HoTT_printf(format, args...)        {  _printf_P(&LIBFC_HoTT_Putchar, PSTR(format) , ## args);}
9
 
10
#define HoTT_printfxy_INV(x,y,format, args...)  { LIBFC_HoTT_SetPos(y * 21 + x); _printf_P(&LIBFC_HoTT_Putchar_INV, PSTR(format) , ## args);}
11
#define HoTT_printf_INV(format, args...)        {  _printf_P(&LIBFC_HoTT_Putchar_INV, PSTR(format) , ## args);}
12
 
1919 holgerb 13
#define VOICE_MINIMALE_EINGANSSPANNUNG    16
14
#define VOICE_BEEP                         5
1917 holgerb 15
 
1919 holgerb 16
 
17
//---------------------------------------------------------------
1917 holgerb 18
void Hott_ClearLine(unsigned char line)
19
{
20
 HoTT_printfxy(0,line,"                     ");
21
}
1919 holgerb 22
//---------------------------------------------------------------
1917 holgerb 23
 
1919 holgerb 24
unsigned char HoTT_Waring(void)
25
{
26
  if(FC_StatusFlags & FC_STATUS_LOWBAT) return(VOICE_MINIMALE_EINGANSSPANNUNG);
27
  if(MotorenEin && NC_ErrorCode)                return(VOICE_BEEP);
28
  return(0);
29
}
30
 
31
//---------------------------------------------------------------
32
unsigned char HoTT_Telemety(unsigned char packet_request)
33
{
34
 switch(packet_request)
35
 {
36
  case HOTT_VARIO_PACKET_ID:
37
                VarioPacket.Altitude = HoehenWert + 500;  
38
                if (VarioPacket.Altitude < VarioPacket.MinAltitude) VarioPacket.MinAltitude = VarioPacket.Altitude;
39
                if (VarioPacket.Altitude > VarioPacket.MaxAltitude) VarioPacket.MaxAltitude = VarioPacket.Altitude;            
40
                VarioPacket.WarnBeep = HoTT_Waring();
41
                HoTT_DataPointer = (unsigned char *) &VarioPacket;
42
                return(sizeof(VarioPacket));
43
                break;
44
  case HOTT_GPS_PACKET_ID:
45
                GPSPacket.Altitude = HoehenWert  + 500 + 30;  
46
                GPSPacket.Hoehe  = GPSPacket.Altitude;
47
                GPSPacket.Distance = GPSInfo.HomeDistance/10;
48
                GPSPacket.Heading++;
49
                GPSPacket.WarnBeep = HoTT_Waring();
50
                HoTT_DataPointer = (unsigned char *) &GPSPacket;
51
                return(sizeof(GPSPacket));  
52
                break;
53
  case HOTT_ELECTRIC_AIR_PACKET_ID:
54
                ElectricAirPacket.Altitude++;
55
                ElectricAirPacket.Battery1++;
56
                ElectricAirPacket.Capacity++;
57
                ElectricAirPacket.WarnBeep = HoTT_Waring();
58
                HoTT_DataPointer = (unsigned char *) &ElectricAirPacket;
59
                return(sizeof(ElectricAirPacket));
60
                break;
61
  default: return(0);
62
  }            
63
}
64
 
65
//---------------------------------------------------------------
1917 holgerb 66
void HoTT_Menu(void)
67
{
68
 static unsigned char what;
69
 switch(what++)
70
  {
1919 holgerb 71
        case 0:  
72
                        HoTT_printfxy(0,0,"%2i.%1iV   ",UBat/10, UBat%10);
73
                if(FC_StatusFlags & FC_STATUS_LOWBAT) HoTT_printfxy_INV(6,0,"!!",UBat/10, UBat%10);
1917 holgerb 74
                        HoTT_printfxy(8,0,"%4imAh %2i:%02i",Capacity.UsedCapacity,FlugSekunden/60,FlugSekunden%60);
75
                        break;
76
        case 1:  
1919 holgerb 77
                        HoTT_printfxy(0,1,"DIR:%3d%c",(int)(ErsatzKompass / GIER_GRAD_FAKTOR), 0x60);
1917 holgerb 78
                        if(Parameter_GlobalConfig & CFG_HOEHENREGELUNG)
1919 holgerb 79
                                HoTT_printfxy_INV(10,1,"ALT:%4im %c", (int16_t)(HoehenWert/100),VarioCharacter)
80
            else HoTT_printfxy(10,1,"ALT: ----    ", (int16_t)(HoehenWert/100),VarioCharacter);
1917 holgerb 81
            break;
82
        case 2:
83
                        HoTT_printfxy(0,2,"I=%3i.%1iA %4iW ",Capacity.ActualCurrent/10, Capacity.ActualCurrent%10,Capacity.ActualPower);
84
                        break;
85
        case 3:
86
                        if(NaviDataOkay)
87
                        {
88
                          HoTT_printfxy(0,3,"Home:%3dm %3d%c", GPSInfo.HomeDistance/10, GPSInfo.HomeBearing, 0x60);
89
            }
90
                        else
91
                        {
92
                         Hott_ClearLine(3);
93
                        }
94
                        break;
95
        case 4:  
96
                        if(NaviDataOkay)
97
                        {
1919 holgerb 98
                                HoTT_printfxy(0,4,"GPS:%2um/s SAT:%d ",GPSInfo.Speed,GPSInfo.NumOfSats);
1917 holgerb 99
                                switch (GPSInfo.SatFix)
100
                                {
101
                                        case SATFIX_3D:
102
                                                HoTT_printfxy(16,4,"  3D ");
103
                                                break;
104
 
105
                                        case SATFIX_2D:
106
                                        case SATFIX_NONE:
107
                                        default:
1919 holgerb 108
                                                HoTT_printfxy(16,4,"NOFIX");
1917 holgerb 109
                                                break;
110
                                }      
111
                                if(GPSInfo.Flags & FLAG_DIFFSOLN)
112
                                {
113
                                        HoTT_printfxy(16,4,"DGPS ");
114
                                }
115
                        }
116
                        else
117
                        {                    //012345678901234567890
118
                                HoTT_printfxy(0,4,"No NaviCtrl!         ");
119
                        }
120
                        break;
121
        case 5:
122
                        HoTT_printfxy(0,5,"%3i %3i %3i %3i%cC ", Motor[0].Temperature, Motor[1].Temperature, Motor[2].Temperature, Motor[3].Temperature,0x60);
123
                        break;
124
        case 6:
125
                    if(RequiredMotors == 4) Hott_ClearLine(6);
126
                                else
127
                                if(RequiredMotors == 6)  HoTT_printfxy(0,6,"%3i %3i%cC         ", Motor[4].Temperature, Motor[5].Temperature,0x60)
128
                                else
129
                                if(RequiredMotors > 6)   HoTT_printfxy(0,6,"%3i %3i %3i %3i%cC ", Motor[4].Temperature, Motor[5].Temperature, Motor[6].Temperature, Motor[7].Temperature,0x6D);
1919 holgerb 130
//HoTT_printfxy(0,6,"%2x:%c %c %c %c %c %c %c %c ",Parameter_UserParam1,Parameter_UserParam1,Parameter_UserParam1+1,Parameter_UserParam1+2,Parameter_UserParam1+3,Parameter_UserParam1+4,Parameter_UserParam1+5,Parameter_UserParam1+6 ,Parameter_UserParam1+7 ,Parameter_UserParam1+8);
1917 holgerb 131
                        break;
1919 holgerb 132
        case 7: if(NC_ErrorCode) {Hott_ClearLine(7); HoTT_printfxy_INV(3,7,"ERROR: %2d ",NC_ErrorCode);}
1917 holgerb 133
                        else HoTT_printfxy(0,7," www.MikroKopter.de ");
134
                        break;
1919 holgerb 135
 
136
        case 8: ASCIIPacket.WarnBeep = HoTT_Waring();
137
                        // ASCIIPacket.WarnBeep = Parameter_UserParam1;
1917 holgerb 138
        case 9:
139
        case 10:
140
        case 11:
141
        case 12:
142
        case 13:
1919 holgerb 143
        case 14:  
144
        case 15:  
145
        case 16:  
146
                                break;
1917 holgerb 147
 
1919 holgerb 148
 
1917 holgerb 149
/*
150
012345678901234567890
151
+++++++++++++++++++++
152
13,8V 1234mAh 12:30    0
153
Dir:180° Alt: 123m +   1
154
GPS: 10Sat DGPS PH CF  2
155
Home: 280° 123m        3
156
I=23A P=123W Max=123   4
157
BL1-4: 11 22 33 44°C   5
158
BL5-8: 55 66 77 88°C   6
159
No Error               7
160
+++++++++++++++++++++
161
*/
162
   default:  what = 0;
163
                        break;
164
  }
165
}
166
 
167
 
168
 
169
 
170