Rev 588 | Rev 599 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 588 | Rev 598 | ||
---|---|---|---|
Line 78... | Line 78... | ||
78 | #include "debug.h" |
78 | #include "debug.h" |
79 | #include "spi_slave.h" |
79 | #include "spi_slave.h" |
80 | #include "ftphelper.h" |
80 | #include "ftphelper.h" |
81 | #include "led.h" |
81 | #include "led.h" |
82 | #include "fat16.h" |
82 | #include "fat16.h" |
- | 83 | #include "crc16.h" |
|
83 | #include "eeprom.h" |
84 | #include "eeprom.h" |
Line 84... | Line 85... | ||
84 | 85 | ||
85 | #define LIC_CMD_READ_LICENSE 1 |
86 | #define LIC_CMD_READ_LICENSE 1 |
86 | #define LIC_CMD_WRITE_LICENSE 2 |
87 | #define LIC_CMD_WRITE_LICENSE 2 |
Line 87... | Line -... | ||
87 | #define LIC_CMD_ERASE_LICENSE 3 |
- | |
88 | 88 | #define LIC_CMD_ERASE_LICENSE 3 |
|
89 | 89 | ||
Line 90... | Line 90... | ||
90 | #define FALSE 0 |
90 | #define FALSE 0 |
91 | #define TRUE 1 |
91 | #define TRUE 1 |
Line -... | Line 92... | ||
- | 92 | ||
- | 93 | #define ABO_TIMEOUT 8000 // disable abo after 8 seconds |
|
- | 94 | u32 UART1_AboTimeOut = 0; |
|
- | 95 | ||
- | 96 | NaviData_Volatile_t NaviData_Volatile; |
|
- | 97 | NaviData_WP_t NaviData_WP; |
|
- | 98 | NaviData_Deviation_t NaviData_Deviation; |
|
- | 99 | NaviData_Home_t NaviData_Home; |
|
- | 100 | NaviData_Target_t NaviData_Target; |
|
92 | 101 | NaviData_Flags_t NaviData_Flags; |
|
93 | #define ABO_TIMEOUT 8000 // disable abo after 8 seconds |
102 | NaviData_Tiny_t NaviData_Tiny; |
94 | u32 UART1_AboTimeOut = 0; |
103 | NaviData_t NaviData; |
95 | 104 | ||
96 | u8 UART1_Request_VersionInfo = FALSE; |
105 | u8 UART1_Request_VersionInfo = FALSE; |
Line 201... | Line 210... | ||
201 | 210 | ||
202 | u32 UART1_DebugData_Timer = 0; |
211 | u32 UART1_DebugData_Timer = 0; |
203 | u32 UART1_DebugData_Interval = 0; // in ms |
212 | u32 UART1_DebugData_Interval = 0; // in ms |
204 | u32 UART1_NaviData_Timer = 0; |
213 | u32 UART1_NaviData_Timer = 0; |
- | 214 | u32 UART1_NaviData_Interval = 0; // in ms |
|
205 | u32 UART1_NaviData_Interval = 0; // in ms |
215 | u16 UART1_NaviData_MaxBytes = 0; // newer protocol? |
206 | u32 UART1_Data3D_Timer = 0; |
216 | u32 UART1_Data3D_Timer = 0; |
207 | u32 UART1_Data3D_Interval = 0; // in ms |
217 | u32 UART1_Data3D_Interval = 0; // in ms |
208 | u32 UART1_MotorData_Timer = 0; |
218 | u32 UART1_MotorData_Timer = 0; |
209 | u32 UART1_MotorData_Interval = 0; // in ms |
219 | u32 UART1_MotorData_Interval = 0; // in ms |
210 | u32 UART1_Display_Timer = 0; |
220 | u32 UART1_Display_Timer = 0; |
211 | u32 UART1_Display_Interval = 0; // in ms |
221 | u32 UART1_Display_Interval = 0; // in ms |
212 | u32 NMEA_Timer = 0; |
222 | u32 NMEA_Timer = 0; |
Line -... | Line 223... | ||
- | 223 | u32 NMEA_Interval = 0;// in ms |
|
- | 224 | ||
- | 225 | u8 CalculateDebugLableCrc(void) |
|
- | 226 | { |
|
- | 227 | u16 i; |
|
- | 228 | u8 crc = 0; |
|
- | 229 | for(i=0;i<sizeof(ANALOG_LABEL);i++) crc += ANALOG_LABEL[0][i]; |
|
- | 230 | return(crc); |
|
213 | u32 NMEA_Interval = 0;// in ms |
231 | } |
214 | 232 | ||
215 | /********************************************************/ |
233 | /********************************************************/ |
216 | /* Initialization the UART1 */ |
234 | /* Initialization the UART1 */ |
217 | /********************************************************/ |
235 | /********************************************************/ |
Line 290... | Line 308... | ||
290 | UART_VersionInfo.SWPatch = VERSION_PATCH; |
308 | UART_VersionInfo.SWPatch = VERSION_PATCH; |
291 | UART_VersionInfo.ProtoMajor = VERSION_SERIAL_MAJOR; |
309 | UART_VersionInfo.ProtoMajor = VERSION_SERIAL_MAJOR; |
292 | UART_VersionInfo.HWMajor = Version_HW & 0x7F; |
310 | UART_VersionInfo.HWMajor = Version_HW & 0x7F; |
293 | UART_VersionInfo.BL_Firmware = 255; |
311 | UART_VersionInfo.BL_Firmware = 255; |
294 | UART_VersionInfo.Flags = 0; |
312 | UART_VersionInfo.Flags = 0; |
295 | UART_VersionInfo.Reserved1 = 0; |
313 | UART_VersionInfo.LabelTextCRC = CalculateDebugLableCrc(); |
296 | NaviData.Version = NAVIDATA_VERSION; |
314 | NaviData.Version = NAVIDATA_VERSION; |
297 | - | ||
298 | UART1_PutString("\r\n UART1 init...ok"); |
315 | UART1_PutString("\r\n UART1 init...ok"); |
299 | } |
316 | } |
Line 300... | Line 317... | ||
300 | 317 | ||
Line 622... | Line 639... | ||
622 | case 'h':// reqest for display line |
639 | case 'h':// reqest for display line |
623 | if((SerialMsg.pData[0]& 0x80) == 0x00)// old format |
640 | if((SerialMsg.pData[0]& 0x80) == 0x00)// old format |
624 | { |
641 | { |
625 | UART1_DisplayLine = 2; |
642 | UART1_DisplayLine = 2; |
626 | UART1_Display_Interval = 0; |
643 | UART1_Display_Interval = 0; |
- | 644 | UART1_Request_Display = TRUE; |
|
627 | } |
645 | } |
628 | else |
646 | else |
629 | { |
647 | { |
630 | UART1_DisplayKeys |= ~SerialMsg.pData[0]; |
648 | UART1_DisplayKeys |= ~SerialMsg.pData[0]; |
631 | UART1_Display_Interval = (u32) SerialMsg.pData[1] * 10; |
649 | UART1_Display_Interval = (u32) SerialMsg.pData[1] * 10; |
632 | UART1_DisplayLine = 4; |
650 | UART1_DisplayLine = 4; |
633 | UART1_AboTimeOut = SetDelay(ABO_TIMEOUT); |
651 | UART1_AboTimeOut = SetDelay(ABO_TIMEOUT); |
- | 652 | if(UART1_Display_Interval) UART1_Request_Display = TRUE; |
|
634 | } |
653 | } |
635 | UART1_Request_Display = TRUE; |
- | |
636 | break; |
654 | break; |
Line 637... | Line 655... | ||
637 | 655 | ||
638 | case 'l':// reqest for display columns |
656 | case 'l':// reqest for display columns |
639 | MenuItem = SerialMsg.pData[0]; |
657 | MenuItem = SerialMsg.pData[0]; |
640 | UART1_Request_Display1 = TRUE; |
658 | UART1_Request_Display1 = TRUE; |
Line 641... | Line 659... | ||
641 | break; |
659 | break; |
642 | 660 | ||
- | 661 | case 'o': // request for navigation information |
|
- | 662 | UART1_NaviData_Interval = (u32) SerialMsg.pData[0] * 10; |
|
643 | case 'o': // request for navigation information |
663 | if(SerialMsg.DataLen > 2) UART1_NaviData_MaxBytes = SerialMsg.pData[1] * 256 + SerialMsg.pData[2]; |
644 | UART1_NaviData_Interval = (u32) SerialMsg.pData[0] * 10; |
664 | else UART1_NaviData_MaxBytes = 0; |
645 | if(UART1_NaviData_Interval > 0) UART1_Request_NaviData = TRUE; |
665 | if(UART1_NaviData_Interval > 0) UART1_Request_NaviData = TRUE; |
Line 646... | Line 666... | ||
646 | UART1_AboTimeOut = SetDelay(ABO_TIMEOUT); |
666 | UART1_AboTimeOut = SetDelay(ABO_TIMEOUT); |
Line 945... | Line 965... | ||
945 | 965 | ||
946 | */ |
966 | */ |
Line -... | Line 967... | ||
- | 967 | } |
|
- | 968 | ||
- | 969 | ||
- | 970 | u16 TransmitNavigationData(u16 MaxBytesPerSecond) // returns the minumum pause time in ms |
|
- | 971 | { |
|
- | 972 | static u8 state = 0, count_flags = 2, count_target = 3, count_home = 4, count_wp = 5 , count_tiny = 6; |
|
- | 973 | static u16 CRC_Home = 0, CRC_Target = 0, CRC_Flags = 0, CRC_Wp = 0; |
|
- | 974 | u16 pause, sent = 0, crc_home = 0xff, crc_target = 0xff, crc_flags = 0xff, crc_wp = 0xff; |
|
- | 975 | ||
- | 976 | while(!sent) |
|
- | 977 | { |
|
- | 978 | switch(state++) |
|
- | 979 | { |
|
- | 980 | case 0: |
|
- | 981 | case 4: |
|
- | 982 | // belegt 35 ASCII-Zeichen |
|
- | 983 | NaviData_Flags.Index = 11; |
|
- | 984 | NaviData_Flags.ActualLongitude = NaviData.CurrentPosition.Longitude; |
|
- | 985 | NaviData_Flags.ActualLatitude = NaviData.CurrentPosition.Latitude; |
|
- | 986 | NaviData_Flags.Altimeter = NaviData.Altimeter; |
|
- | 987 | NaviData_Flags.GroundSpeed = NaviData.GroundSpeed / 10; |
|
- | 988 | NaviData_Flags.OSDStatusFlags = (FC.StatusFlags & OSD_FLAG_MASK1) | (FC.StatusFlags2 & OSD_FLAG_MASK2); |
|
- | 989 | NaviData_Flags.OSDStatusFlags2 = (FC.StatusFlags & ~OSD_FLAG_MASK1) | (FC.StatusFlags2 & ~OSD_FLAG_MASK2); |
|
- | 990 | NaviData_Flags.NCFlags = NaviData.NCFlags; |
|
- | 991 | NaviData_Flags.Errorcode = ErrorCode; |
|
- | 992 | NaviData_Flags.ReserveFlags = 0; |
|
- | 993 | NaviData_Flags.SpeakHoTT = FC.FromFC_SpeakHoTT; |
|
- | 994 | NaviData_Flags.VarioCharacter = FromFC_VarioCharacter; |
|
- | 995 | NaviData_Flags.GPS_ModeCharacter = NC_GPS_ModeCharacter; |
|
- | 996 | NaviData_Flags.BL_MinOfMaxPWM = BL_MinOfMaxPWM; |
|
- | 997 | crc_flags = CRC16((unsigned char*)(&NaviData_Flags.OSDStatusFlags2), sizeof(NaviData_Flags) - START_PAYLOAD_DATA); // update crc for the license structure |
|
- | 998 | if((crc_flags != CRC_Flags) || (--count_flags == 0)) |
|
- | 999 | { |
|
- | 1000 | sent += MKProtocol_CreateSerialFrame(&UART1_tx_buffer, 'O', NC_ADDRESS, 1 , (u8 *)&NaviData_Flags, sizeof(NaviData_Flags)) + 1; |
|
- | 1001 | CRC_Flags = crc_flags; |
|
- | 1002 | count_flags = 11*2; |
|
- | 1003 | } |
|
- | 1004 | break; |
|
- | 1005 | case 1: |
|
- | 1006 | case 5: |
|
- | 1007 | // belegt 43 ASCII-Zeichen |
|
- | 1008 | NaviData_Target.Index = 12; |
|
- | 1009 | NaviData_Target.ActualLongitude = NaviData.CurrentPosition.Longitude; |
|
- | 1010 | NaviData_Target.ActualLatitude = NaviData.CurrentPosition.Latitude; |
|
- | 1011 | NaviData_Target.Altimeter = NaviData.Altimeter; |
|
- | 1012 | NaviData_Target.GroundSpeed = NaviData.GroundSpeed / 10; |
|
- | 1013 | NaviData_Target.OSDStatusFlags = (FC.StatusFlags & OSD_FLAG_MASK1) | (FC.StatusFlags2 & OSD_FLAG_MASK2); |
|
- | 1014 | NaviData_Target.TargetLongitude = NaviData.TargetPosition.Longitude; |
|
- | 1015 | NaviData_Target.TargetLatitude = NaviData.TargetPosition.Latitude; |
|
- | 1016 | NaviData_Target.TargetAltitude = NaviData.TargetPosition.Altitude; |
|
- | 1017 | NaviData_Target.RC_Quality = NaviData.RC_Quality; |
|
- | 1018 | crc_target = CRC16((unsigned char*)(&NaviData_Target.TargetLongitude), sizeof(NaviData_Target) - START_PAYLOAD_DATA); // update crc for the license structure |
|
- | 1019 | if((crc_target != CRC_Target) || (--count_target == 0)) |
|
- | 1020 | { |
|
- | 1021 | sent += MKProtocol_CreateSerialFrame(&UART1_tx_buffer, 'O', NC_ADDRESS, 1 , (u8 *)&NaviData_Target, sizeof(NaviData_Target)) + 1; |
|
- | 1022 | CRC_Target = crc_target; |
|
- | 1023 | count_target = 10*2; |
|
- | 1024 | } |
|
- | 1025 | break; |
|
- | 1026 | case 2: |
|
- | 1027 | case 6: |
|
- | 1028 | // belegt 31 ASCII-Zeichen |
|
- | 1029 | NaviData_WP.Index = 15; |
|
- | 1030 | NaviData_WP.ActualLongitude = NaviData.CurrentPosition.Longitude; |
|
- | 1031 | NaviData_WP.ActualLatitude = NaviData.CurrentPosition.Latitude; |
|
- | 1032 | NaviData_WP.Altimeter = NaviData.Altimeter; |
|
- | 1033 | NaviData_WP.GroundSpeed = NaviData.GroundSpeed / 10; |
|
- | 1034 | NaviData_WP.OSDStatusFlags = (FC.StatusFlags & OSD_FLAG_MASK1) | (FC.StatusFlags2 & OSD_FLAG_MASK2); |
|
- | 1035 | NaviData_WP.WaypointIndex = NaviData.WaypointIndex; |
|
- | 1036 | NaviData_WP.WaypointNumber = NaviData.WaypointNumber; |
|
- | 1037 | NaviData_WP.TargetHoldTime = NaviData.TargetHoldTime; |
|
- | 1038 | // NaviData_WP.WP_Eventchannel = FC_WP_EventChannel; -> happends already in SPI.c |
|
- | 1039 | crc_wp = CRC16((unsigned char*)(&NaviData_WP.WaypointIndex), sizeof(NaviData_WP) - START_PAYLOAD_DATA); // update crc for the license structure |
|
- | 1040 | if((crc_wp != CRC_Wp) || (--count_wp == 0)) |
|
- | 1041 | { |
|
- | 1042 | sent += MKProtocol_CreateSerialFrame(&UART1_tx_buffer, 'O', NC_ADDRESS, 1 , (u8 *)&NaviData_WP, sizeof(NaviData_WP)) + 1; |
|
- | 1043 | CRC_Wp = crc_wp; |
|
- | 1044 | count_wp = 12*2; |
|
- | 1045 | } |
|
- | 1046 | break; |
|
- | 1047 | case 3: |
|
- | 1048 | // belegt 43 ASCII-Zeichen |
|
- | 1049 | NaviData_Home.Index = 13; |
|
- | 1050 | NaviData_Home.ActualLongitude = NaviData.CurrentPosition.Longitude; |
|
- | 1051 | NaviData_Home.ActualLatitude = NaviData.CurrentPosition.Latitude; |
|
- | 1052 | NaviData_Home.Altimeter = NaviData.Altimeter; |
|
- | 1053 | NaviData_Home.GroundSpeed = NaviData.GroundSpeed / 10; |
|
- | 1054 | NaviData_Home.OSDStatusFlags = (FC.StatusFlags & OSD_FLAG_MASK1) | (FC.StatusFlags2 & OSD_FLAG_MASK2); |
|
- | 1055 | NaviData_Home.HomeLongitude = NaviData.HomePosition.Longitude; |
|
- | 1056 | NaviData_Home.HomeLatitude = NaviData.HomePosition.Latitude; |
|
- | 1057 | NaviData_Home.HomeAltitude = NaviData.HomePosition.Altitude; |
|
- | 1058 | crc_home = CRC16((unsigned char*)(&NaviData_Home.HomeLongitude), sizeof(NaviData_Home_t) - START_PAYLOAD_DATA); // update crc for the license structure |
|
- | 1059 | if((crc_home != CRC_Home) || (--count_home == 0)) |
|
- | 1060 | { |
|
- | 1061 | sent += MKProtocol_CreateSerialFrame(&UART1_tx_buffer, 'O', NC_ADDRESS, 1 , (u8 *)&NaviData_Home, sizeof(NaviData_Home)) + 1; |
|
- | 1062 | CRC_Home = crc_home; |
|
- | 1063 | count_home = 25; |
|
- | 1064 | } |
|
- | 1065 | break; |
|
- | 1066 | case 7: |
|
- | 1067 | // belegt 39 ASCII-Zeichen |
|
- | 1068 | NaviData_Deviation.Index = 14; |
|
- | 1069 | NaviData_Deviation.ActualLongitude = NaviData.CurrentPosition.Longitude; |
|
- | 1070 | NaviData_Deviation.ActualLatitude = NaviData.CurrentPosition.Latitude; |
|
- | 1071 | NaviData_Deviation.Altimeter = NaviData.Altimeter; |
|
- | 1072 | NaviData_Deviation.GroundSpeed = NaviData.GroundSpeed / 10; |
|
- | 1073 | NaviData_Deviation.OSDStatusFlags = (FC.StatusFlags & OSD_FLAG_MASK1) | (FC.StatusFlags2 & OSD_FLAG_MASK2); |
|
- | 1074 | NaviData_Deviation.FlyingTime = NaviData.FlyingTime; |
|
- | 1075 | NaviData_Deviation.DistanceToHome = NaviData.HomePositionDeviation.Distance; |
|
- | 1076 | NaviData_Deviation.HeadingToHome = NaviData.HomePositionDeviation.Bearing/2; |
|
- | 1077 | NaviData_Deviation.DistanceToTarget = NaviData.TargetPositionDeviation.Distance; |
|
- | 1078 | NaviData_Deviation.HeadingToTarget = NaviData.TargetPositionDeviation.Bearing/2; |
|
- | 1079 | NaviData_Deviation.AngleNick = NaviData.AngleNick; |
|
- | 1080 | NaviData_Deviation.AngleRoll = NaviData.AngleRoll; |
|
- | 1081 | NaviData_Deviation.SatsInUse = NaviData.SatsInUse; |
|
- | 1082 | sent += MKProtocol_CreateSerialFrame(&UART1_tx_buffer, 'O', NC_ADDRESS, 1 , (u8 *)&NaviData_Deviation, sizeof(NaviData_Deviation)) + 1; |
|
- | 1083 | break; |
|
- | 1084 | case 8: |
|
- | 1085 | // belegt 43 ASCII-Zeichen |
|
- | 1086 | NaviData_Volatile.Index = 16; |
|
- | 1087 | NaviData_Volatile.ActualLongitude = NaviData.CurrentPosition.Longitude; |
|
- | 1088 | NaviData_Volatile.ActualLatitude = NaviData.CurrentPosition.Latitude; |
|
- | 1089 | NaviData_Volatile.Altimeter = NaviData.Altimeter; |
|
- | 1090 | NaviData_Volatile.GroundSpeed = NaviData.GroundSpeed / 10; |
|
- | 1091 | NaviData_Volatile.OSDStatusFlags = (FC.StatusFlags & OSD_FLAG_MASK1) | (FC.StatusFlags2 & OSD_FLAG_MASK2); |
|
- | 1092 | NaviData_Volatile.UBat = FC.BAT_Voltage; |
|
- | 1093 | NaviData_Volatile.Current = NaviData.Current; |
|
- | 1094 | NaviData_Volatile.UsedCapacity = NaviData.UsedCapacity; |
|
- | 1095 | NaviData_Volatile.Variometer = NaviData.Variometer; |
|
- | 1096 | NaviData_Volatile.Heading = NaviData.Heading / 2; |
|
- | 1097 | NaviData_Volatile.CompassHeading = NaviData.CompassHeading / 2; |
|
- | 1098 | NaviData_Volatile.Gas = NaviData.Gas; |
|
- | 1099 | NaviData_Volatile.Gas = NaviData.SetpointAltitude; |
|
- | 1100 | sent += MKProtocol_CreateSerialFrame(&UART1_tx_buffer, 'O', NC_ADDRESS, 1 , (u8 *)&NaviData_Volatile, sizeof(NaviData_Volatile)) + 1; |
|
- | 1101 | break; |
|
- | 1102 | ||
- | 1103 | case 9: |
|
- | 1104 | // belegt 27 ASCII-Zeichen |
|
- | 1105 | NaviData_Tiny.Index = 10; |
|
- | 1106 | NaviData_Tiny.ActualLongitude = NaviData.CurrentPosition.Longitude; |
|
- | 1107 | NaviData_Tiny.ActualLatitude = NaviData.CurrentPosition.Latitude; |
|
- | 1108 | NaviData_Tiny.Altimeter = NaviData.Altimeter; |
|
- | 1109 | NaviData_Tiny.GroundSpeed = NaviData.GroundSpeed / 10; |
|
- | 1110 | NaviData_Tiny.OSDStatusFlags = (FC.StatusFlags & OSD_FLAG_MASK1) | (FC.StatusFlags2 & OSD_FLAG_MASK2); |
|
- | 1111 | if(--count_tiny == 0) |
|
- | 1112 | { |
|
- | 1113 | sent += MKProtocol_CreateSerialFrame(&UART1_tx_buffer, 'O', NC_ADDRESS, 1 , (u8 *)&NaviData_Tiny, sizeof(NaviData_Tiny)) + 1; |
|
- | 1114 | count_tiny = 60; |
|
- | 1115 | } |
|
- | 1116 | break; |
|
- | 1117 | default: state = 0; |
|
- | 1118 | break; |
|
- | 1119 | } |
|
- | 1120 | } |
|
- | 1121 | pause = (sent * 1000) / MaxBytesPerSecond; |
|
- | 1122 | ||
- | 1123 | UART1_NaviData_Timer = SetDelay(UART1_NaviData_Interval); |
|
- | 1124 | UART1_Request_NaviData = FALSE; |
|
- | 1125 | LastTransmittedFCStatusFlags2 = NaviData.FCStatusFlags2; |
|
- | 1126 | return(pause); |
|
- | 1127 | // Clear at timeout: |
|
947 | } |
1128 | // NaviData_WP.WP_Eventchannel |
948 | 1129 | } |
|
949 | 1130 | ||
950 | /**************************************************************/ |
1131 | /**************************************************************/ |
951 | /* Send the answers to incomming commands at the debug uart */ |
1132 | /* Send the answers to incomming commands at the debug uart */ |
Line 957... | Line 1138... | ||
957 | 1138 | ||
958 | if(CheckDelay(UART1_AboTimeOut)) |
1139 | if(CheckDelay(UART1_AboTimeOut)) |
959 | { |
1140 | { |
960 | UART1_DebugData_Interval = 0; |
1141 | UART1_DebugData_Interval = 0; |
- | 1142 | UART1_NaviData_Interval = 0; |
|
961 | UART1_NaviData_Interval = 0; |
1143 | UART1_NaviData_MaxBytes = 0; |
962 | UART1_Data3D_Interval = 0; |
1144 | UART1_Data3D_Interval = 0; |
963 | UART1_Display_Interval = 0; |
1145 | UART1_Display_Interval = 0; |
- | 1146 | UART1_MotorData_Interval = 0; |
|
- | 1147 | UART1_NaviData_Timer = SetDelay(500); |
|
964 | UART1_MotorData_Interval = 0; |
1148 | UART1_AboTimeOut = SetDelay(100); |
965 | } |
1149 | } |
- | 1150 | /* |
|
- | 1151 | #define CHK_MIN_INTERVAL(a,b) {if(a && a < b) a = b;} |
|
- | 1152 | UART1_NaviData_Interval = 500; |
|
- | 1153 | CHK_MIN_INTERVAL(UART1_DebugData_Interval,500); |
|
- | 1154 | CHK_MIN_INTERVAL(UART1_NaviData_Interval,1000); |
|
- | 1155 | CHK_MIN_INTERVAL(UART1_Data3D_Interval,255); |
|
- | 1156 | CHK_MIN_INTERVAL(UART1_Display_Interval,1500); |
|
- | 1157 | CHK_MIN_INTERVAL(UART1_MotorData_Interval,750); |
|
966 | 1158 | */ |
|
967 | UART1_Transmit(); // output pending bytes in tx buffer |
1159 | UART1_Transmit(); // output pending bytes in tx buffer |
Line 968... | Line 1160... | ||
968 | if((UART1_tx_buffer.Locked == TRUE)) return; |
1160 | if((UART1_tx_buffer.Locked == TRUE)) return; |
969 | 1161 | ||
Line 1023... | Line 1215... | ||
1023 | MKProtocol_CreateSerialFrame(&UART1_tx_buffer, 'B', NC_ADDRESS, 1,(u8 *)&UART1_ExternalControlConfirmFrame, sizeof(UART1_ExternalControlConfirmFrame)); |
1215 | MKProtocol_CreateSerialFrame(&UART1_tx_buffer, 'B', NC_ADDRESS, 1,(u8 *)&UART1_ExternalControlConfirmFrame, sizeof(UART1_ExternalControlConfirmFrame)); |
1024 | UART1_ExternalControlConfirmFrame = 0; |
1216 | UART1_ExternalControlConfirmFrame = 0; |
1025 | } |
1217 | } |
1026 | else if(( ((UART1_NaviData_Interval > 0) && CheckDelay(UART1_NaviData_Timer) ) || UART1_Request_NaviData) && (UART1_tx_buffer.Locked == FALSE)) |
1218 | else if(( ((UART1_NaviData_Interval > 0) && CheckDelay(UART1_NaviData_Timer) ) || UART1_Request_NaviData) && (UART1_tx_buffer.Locked == FALSE)) |
1027 | { |
1219 | { |
- | 1220 | u16 time = 0; |
|
- | 1221 | if(UART1_NaviData_MaxBytes == 0) // Transmit the big NC Data frame |
|
- | 1222 | { |
|
1028 | NaviData.Errorcode = ErrorCode; |
1223 | NaviData.Errorcode = ErrorCode; |
1029 | MKProtocol_CreateSerialFrame(&UART1_tx_buffer, 'O', NC_ADDRESS, 1 , (u8 *)&NaviData, sizeof(NaviData)); |
1224 | MKProtocol_CreateSerialFrame(&UART1_tx_buffer, 'O', NC_ADDRESS, 1 , (u8 *)&NaviData, sizeof(NaviData)); |
1030 | UART1_NaviData_Timer = SetDelay(UART1_NaviData_Interval); |
- | |
1031 | UART1_Request_NaviData = FALSE; |
- | |
1032 | LastTransmittedFCStatusFlags2 = NaviData.FCStatusFlags2; |
1225 | LastTransmittedFCStatusFlags2 = NaviData.FCStatusFlags2; |
- | 1226 | UART1_NaviData_Timer = SetDelay(UART1_NaviData_Interval); |
|
- | 1227 | } |
|
- | 1228 | else |
|
- | 1229 | if(CheckDelay(UART1_NaviData_Timer)) |
|
- | 1230 | { |
|
- | 1231 | // Wert = 50 -> Sekunden laufen in 2 s-Abstand (im Wegpunkteflug mit aktivem Countdown in 3-4s) |
|
- | 1232 | // Wert = 100 -> Sekunden laufen in 1-2 s-Abstand (im Wegpunkteflug mit aktivem Countdown in 2s) |
|
- | 1233 | // Wert = 150 -> Sekunden laufen flüssig (im Wegpunkteflug mit aktivem Countdown und gleichzeitig Target verschieben manchmal in 2s) |
|
- | 1234 | // Wert = 200 -> Sekunden laufen flüssig |
|
- | 1235 | // Wert >= 250 -> optimal |
|
- | 1236 | //UART1_NaviData_MaxBytes = 250; |
|
- | 1237 | time = TransmitNavigationData(UART1_NaviData_MaxBytes); |
|
- | 1238 | if(UART1_NaviData_Interval > time) time = UART1_NaviData_Interval; |
|
- | 1239 | UART1_NaviData_Timer = SetDelay(time); |
|
- | 1240 | } |
|
- | 1241 | UART1_Request_NaviData = FALSE; |
|
1033 | } |
1242 | } |
1034 | else if( (( (UART1_DebugData_Interval > 0) && CheckDelay(UART1_DebugData_Timer)) || UART1_Request_DebugData) && (UART1_tx_buffer.Locked == FALSE)) |
1243 | else if( (( (UART1_DebugData_Interval > 0) && CheckDelay(UART1_DebugData_Timer)) || UART1_Request_DebugData) && (UART1_tx_buffer.Locked == FALSE)) |
1035 | { |
1244 | { |
1036 | MKProtocol_CreateSerialFrame(&UART1_tx_buffer, 'D', NC_ADDRESS, 1,(u8 *)&DebugOut, sizeof(DebugOut)); |
1245 | MKProtocol_CreateSerialFrame(&UART1_tx_buffer, 'D', NC_ADDRESS, 1,(u8 *)&DebugOut, sizeof(DebugOut)); |
1037 | UART1_DebugData_Timer = SetDelay(UART1_DebugData_Interval); |
1246 | UART1_DebugData_Timer = SetDelay(UART1_DebugData_Interval); |
Line 1136... | Line 1345... | ||
1136 | version_tmp.HardwareError[0] = 0xff; // tells the KopterTool that it is the FC-version |
1345 | version_tmp.HardwareError[0] = 0xff; // tells the KopterTool that it is the FC-version |
1137 | version_tmp.HardwareError[1] = 0xff; // tells the KopterTool that it is the FC-version |
1346 | version_tmp.HardwareError[1] = 0xff; // tells the KopterTool that it is the FC-version |
1138 | version_tmp.ProtoMajor = UART_VersionInfo.ProtoMajor; |
1347 | version_tmp.ProtoMajor = UART_VersionInfo.ProtoMajor; |
1139 | version_tmp.BL_Firmware = UART_VersionInfo.BL_Firmware; |
1348 | version_tmp.BL_Firmware = UART_VersionInfo.BL_Firmware; |
1140 | version_tmp.Flags = 0; |
1349 | version_tmp.Flags = 0; |
1141 | version_tmp.Reserved1 = 0; |
1350 | version_tmp.LabelTextCRC = 0;//UART_VersionInfo.DebugTextCRC; |
1142 | MKProtocol_CreateSerialFrame(&UART1_tx_buffer, 'V', NC_ADDRESS,1, (u8 *)&version_tmp, sizeof(version_tmp)); |
1351 | MKProtocol_CreateSerialFrame(&UART1_tx_buffer, 'V', NC_ADDRESS,1, (u8 *)&version_tmp, sizeof(version_tmp)); |
1143 | UART1_Request_VersionInfo = FALSE; |
1352 | UART1_Request_VersionInfo = FALSE; |
1144 | } |
1353 | } |
1145 | else if(UART1_Request_VersionInfo == 2 && (UART1_tx_buffer.Locked == FALSE)) // get NC-Versions |
1354 | else if(UART1_Request_VersionInfo == 2 && (UART1_tx_buffer.Locked == FALSE)) // get NC-Versions |
1146 | { |
1355 | { |