Subversion Repositories MK3Mag

Compare Revisions

Ignore whitespace Rev 51 → Rev 52

/trunk/uart.c
90,14 → 90,26
#define RQST_DEBUG_LABEL 0x04
#define RQST_COMPASS_HEADING 0x08
#define RQST_EXTERN_CTRL 0x10
#define RQST_DISPLAY_DATA 0x20
 
 
uint8_t RequestFlags = 0x00;
uint8_t RequestDebugLabel = 0;
uint8_t ConfirmFrame = 0;
uint8_t RemoteKeys = 0;
uint8_t DisplayLine = 0;
uint8_t DisplayBuff[80];
/*
const uint8_t DisplayBuff[4][20] =
{
"++ MK3MAG ++",
" ",
" ",
" "
};*/
 
uint8_t PC_Connected = 0;
uint8_t FC_Connected = 0;
uint16_t PC_Connected = 0;
uint16_t FC_Connected = 0;
 
 
DebugOut_t DebugOut;
151,6 → 163,7
/****************************************************************/
void USART0_Init (void)
{
uint8_t i;
uint8_t sreg = SREG;
uint16_t ubrr = (uint16_t) ((uint32_t) F_CPU/(8 * BAUD_RATE) - 1);
 
225,7 → 238,7
UART_VersionInfo.ProtoMajor = VERSION_SERIAL_MAJOR;
UART_VersionInfo.ProtoMinor = VERSION_SERIAL_MINOR;
 
// Version beim Start ausgeben (nicht schön, aber geht... )
// send version info at startup
USART0_putchar ('\n');
USART0_putchar ('C');
USART0_putchar ('P');
238,6 → 251,26
USART0_putchar ('a' + VERSION_PATCH);
USART0_putchar ('\n');
 
// prepare display buffer
for(i=0; i < 80; i++) DisplayBuff[i] = ' ';
DisplayBuff[0] = '+';
DisplayBuff[1] = '+';
DisplayBuff[7] = 'M';
DisplayBuff[8] = 'K';
DisplayBuff[9] = '3';
DisplayBuff[10] = 'M';
DisplayBuff[11] = 'A';
DisplayBuff[12] = 'G';
DisplayBuff[18] = '+';
DisplayBuff[19] = '+';
 
DisplayBuff[47] = 'V';
DisplayBuff[48] = (0x30 + VERSION_MAJOR);
DisplayBuff[49] = '.';
DisplayBuff[50] = (0x30 + VERSION_MINOR/10);
DisplayBuff[51] = (0x30 + VERSION_MINOR%10);
DisplayBuff[52] = ('a' + VERSION_PATCH);
 
// restore global interrupt flags
SREG = sreg;
}
519,7 → 552,7
break;
} // case MK3MAG_ADDRESS:
 
default: // any Slave Adress
default: // any Slave Address
 
switch(rxd_buffer[2]) // check for CmdID
{
537,33 → 570,36
if(ExternData.CalState == 6) ExternData.CalState = 0;
}
ConfirmFrame = ExternControl.Frame;
PC_Connected = 255;
PC_Connected = 2000;
break;
 
case 'd': // request for the debug data
DebugData_Interval = (uint16_t) pRxData[0] * 10;
if(DebugData_Interval>0) RequestFlags |= RQST_DEBUG_DATA;
PC_Connected = 255;
PC_Connected = 2000;
break;
 
case 'v': // request version and board release
RequestFlags |= RQST_VERSION_INFO;
PC_Connected = 255;
PC_Connected = 2000;
break;
 
case 'h': // request lcd data
PC_Connected = 255;
case 'h': // request display data
RemoteKeys |= pRxData[0];
if(RemoteKeys) DisplayLine = 0;
RequestFlags |= RQST_DISPLAY_DATA;
PC_Connected = 2000;
break;
 
case 'a':// Labels of the Analog Debug outputs
RequestDebugLabel = pRxData[0];
RequestFlags |= RQST_DEBUG_LABEL;
PC_Connected = 255;
PC_Connected = 2000;
break;
 
case 'g':// get extern control data
RequestFlags |= RQST_EXTERN_CTRL;
PC_Connected = 255;
PC_Connected = 2000;
break;
 
default:
608,6 → 644,13
RequestFlags &= ~RQST_DEBUG_DATA;
}
 
if((RequestFlags & RQST_DISPLAY_DATA) && txd_complete)
{
SendOutData('H', MK3MAG_ADDRESS, 2, &DisplayLine, sizeof(DisplayLine), &DisplayBuff[DisplayLine * 20], 20);
DisplayLine++;
if(DisplayLine >= 4) DisplayLine = 0;
RequestFlags &= ~RQST_DISPLAY_DATA;
}
 
if((RequestFlags & RQST_EXTERN_CTRL) && txd_complete)
{