29,6 → 29,7 |
#define FALSE 0 |
#define TRUE 1 |
|
#define ABO_TIMEOUT 4000 // disable abo after 4 seconds |
|
//int8_t test __attribute__ ((section (".noinit"))); |
uint8_t Request_VerInfo = FALSE; |
39,6 → 40,7 |
uint8_t Request_DebugLabel = 255; |
uint8_t Request_SendFollowMe = FALSE; |
uint8_t DisplayLine = 0; |
uint8_t DisplayKeys = 0; |
|
volatile uint8_t txd_buffer[TXD_BUFFER_LEN]; |
volatile uint8_t rxd_buffer_locked = FALSE; |
49,6 → 51,7 |
volatile uint8_t RxDataLen = 0; |
|
uint8_t PcAccess = 100; |
uint16_t AboTimeOut = 0; |
|
ExternControl_t ExternControl; |
DebugOut_t DebugOut; |
57,7 → 60,7 |
uint16_t DebugData_Timer; |
uint16_t DebugData_Interval = 0; // in 1ms |
uint16_t Display_Timer; |
uint16_t Display_Interval = 0; // in 1 ms |
uint16_t Display_Interval = 0; |
|
Waypoint_t FollowMe; |
|
428,7 → 431,7 |
|
case 'h':// request for display columns |
PcAccess = 255; |
if((pRxData[0] & 0x80) == 0x00) // old format |
if((pRxData[0] & 0x80) == 0x00) // old format |
{ |
DisplayLine = 2; |
Display_Interval = 0; |
435,11 → 438,12 |
} |
else // new format |
{ |
RemoteKeys |= ~pRxData[0]; |
Display_Interval = (unsigned int)pRxData[1] * 10; |
DisplayKeys |= ~pRxData[0]; |
Display_Interval = (uint16_t) pRxData[1] * 10; |
DisplayLine = 4; |
Request_Display = TRUE; |
AboTimeOut = SetDelay(ABO_TIMEOUT); |
} |
Request_Display = TRUE; |
break; |
|
case 'l':// request for display columns |
446,7 → 450,7 |
PcAccess = 255; |
MenuItem = pRxData[0]; |
Request_Display1 = TRUE; |
break; |
break; |
|
case 'v': // request for version and board release |
Request_VerInfo = TRUE; |
455,7 → 459,8 |
case 'd': // request for the debug data |
DebugData_Interval = (uint16_t) pRxData[0] * 10; |
if(DebugData_Interval > 0) Request_DebugData = TRUE; |
break; |
AboTimeOut = SetDelay(ABO_TIMEOUT); |
break; |
|
case 'g':// get external control data |
Request_ExternalControl = TRUE; |
493,17 → 498,24 |
{ |
if(!txd_complete) return; |
|
if(CheckDelay(AboTimeOut)) |
{ |
Display_Interval = 0; |
DebugData_Interval = 0; |
} |
|
if(Request_VerInfo && txd_complete) |
{ |
SendOutData('V', FM_ADDRESS, 1, (uint8_t *) &UART_VersionInfo, sizeof(UART_VersionInfo)); |
Request_VerInfo = FALSE; |
} |
if( ((Display_Interval && CheckDelay(Display_Timer)) || Request_Display) && txd_complete) |
else if( (((Display_Interval > 0) && CheckDelay(Display_Timer)) || Request_Display) && txd_complete) |
{ |
if(DisplayLine > 3)// new format |
{ |
LCD_PrintMenu(); |
SendOutData('H', FM_ADDRESS, 1, (uint8_t *)DisplayBuff, 80); |
Menu_Update(DisplayKeys); |
DisplayKeys = 0; |
SendOutData('H', FC_ADDRESS, 1, (uint8_t *)DisplayBuff, sizeof(DisplayBuff)); |
} |
else // old format |
{ |
514,13 → 526,13 |
Display_Timer = SetDelay(Display_Interval); |
Request_Display = FALSE; |
} |
if(Request_Display1 && txd_complete) |
else if(Request_Display1 && txd_complete) |
{ |
LCD_PrintMenu(); |
SendOutData('L', FM_ADDRESS, 3, &MenuItem, sizeof(MenuItem), &MaxMenuItem, sizeof(MaxMenuItem), DisplayBuff, sizeof(DisplayBuff)); |
Menu_Update(0); |
SendOutData('L', FC_ADDRESS, 3, &MenuItem, sizeof(MenuItem), &MaxMenuItem, sizeof(MaxMenuItem), DisplayBuff, sizeof(DisplayBuff)); |
Request_Display1 = FALSE; |
} |
if(Request_DebugLabel != 0xFF) // Texte für die Analogdaten |
else if(Request_DebugLabel != 0xFF) // Texte für die Analogdaten |
{ |
uint8_t label[16]; // local sram buffer |
memcpy_P(label, ANALOG_LABEL[Request_DebugLabel], 16); // read lable from flash to sram buffer |
527,18 → 539,18 |
SendOutData('A', FM_ADDRESS, 2, (uint8_t *) &Request_DebugLabel, sizeof(Request_DebugLabel), label, 16); |
Request_DebugLabel = 0xFF; |
} |
if(Request_ExternalControl && txd_complete) |
else if(Request_ExternalControl && txd_complete) |
{ |
SendOutData('G', FM_ADDRESS, 1,(uint8_t *) &ExternControl, sizeof(ExternControl)); |
Request_ExternalControl = FALSE; |
} |
if( ((DebugData_Interval && CheckDelay(DebugData_Timer)) || Request_DebugData) && txd_complete) |
else if( (((DebugData_Interval > 0) && CheckDelay(DebugData_Timer)) || Request_DebugData) && txd_complete) |
{ |
SendOutData('D', FM_ADDRESS, 1,(uint8_t *) &DebugOut, sizeof(DebugOut)); |
DebugData_Timer = SetDelay(DebugData_Interval); |
Request_DebugData = FALSE; |
} |
if(Request_SendFollowMe && txd_complete) |
else if(Request_SendFollowMe && txd_complete) |
{ |
SendOutData('s', NC_ADDRESS, 1, (uint8_t *)&FollowMe, sizeof(FollowMe)); |
FollowMe.Position.Status = PROCESSED; |