📄 menu.c
字号:
{
LcdSetPictureCursor(1,72);
LcdDrawPicture(ant1_inverted15x8);
}
sprintf(&lcd_data[12],"NO-ANTDIV");
break;
case RX_TX_SWITCH:
if( MenuItems.name.demo_mode != DEMO_MODE_TX)
{
LcdSetPictureCursor(1,72);
LcdDrawPicture(ant1_inverted15x8);
}
sprintf(&lcd_data[13],"TX/RX-SW");
break;
case ANTENNA_DIVERSITY:
if( MenuItems.name.demo_mode != DEMO_MODE_TX)
{
LcdSetPictureCursor(1,72);
LcdDrawPicture(ant1_inverted15x8);
LcdSetPictureCursor(1,98);
LcdDrawPicture(ant2_inverted15x8);
}
sprintf(&lcd_data[14],"ANT_DIV");
break;
case DIVERSITY_FIX_A:
if( MenuItems.name.demo_mode != DEMO_MODE_TX)
{
LcdSetPictureCursor(1,72);
LcdDrawPicture(ant1_inverted15x8);
}
sprintf(&lcd_data[13],"A_DIV(1)");
break;
case DIVERSITY_FIX_B:
if( MenuItems.name.demo_mode != DEMO_MODE_TX)
{
LcdSetPictureCursor(1,98);
LcdDrawPicture(ant2_inverted15x8);
}
sprintf(&lcd_data[13],"A_DIV(2)");
break;
default:
break;
}
LcdWriteLine(LCD_LINE_5,lcd_data);
break;
case sMenuStartAutoTx:
memcpy(lcd_data," ",21);
LcdWriteLine(LCD_LINE_8,lcd_data);
LcdSetPictureCursor(8,3);
LcdDrawPicture(txoff_inverted32x8);
LcdSetPictureCursor(8,70);
LcdDrawPicture(setting_inverted48x8);
break;
case sMenuPingTxError:
//report the result on the LCD
sprintf(lcd_data,"PING TRANSMIT ERROR! ");
LcdWriteLine(LCD_LINE_7,lcd_data);
//report the result to the UART
printf("PING TRANSMIT ERROR!\r\n>");
break;
case sMenuPingReceived:
//print the RSSI result to the screen
PrintRssiToLcd();
break;
case sMenuAckSent:
//report the result on the LCD
memcpy(lcd_data,"ACK SENT ",21);
LcdWriteLine(LCD_LINE_7,lcd_data);
printf("ACK SENT!\r\n>");
break;
case sMenuAckTxError:
//report the result on the LCD
memcpy(lcd_data,"ACK TX ERROR! ",21);
LcdWriteLine(LCD_LINE_7,lcd_data);
printf("ACK TX ERROR!\r\n>");
break;
case sMenuDeleteMessageRow:
memcpy(lcd_data," ",21);
LcdWriteLine(LCD_LINE_7,lcd_data);
break;
case sMenuAckReceivedMessage:
sprintf(lcd_data,"ACK RECEIVED! ");
LcdWriteLine(LCD_LINE_7,lcd_data);
break;
case sMenuAckReceivingErrorMessage:
sprintf(lcd_data,"ACK RECEIVING ERROR! ");
LcdWriteLine(LCD_LINE_7,lcd_data);
break;
case sMenuPERStartScreen:
LcdClearDisplay();
memcpy(lcd_data,"LAB MODE: SigGen PER ",21);
LcdWriteLine(LCD_LINE_1,lcd_data);
memcpy(lcd_data,"---------------------",21);
LcdWriteLine(LCD_LINE_2,lcd_data);
sprintf(lcd_data,"%sk/ MHz ",&t_data_rate[MenuItems.name.data_rate][0]);
if( MenuItems.name.arib_mode == FALSE )
{
memcpy(&lcd_data[5],demo_freqs[MenuItems.name.frequency].freq_text,6);
}
else
{
memcpy(&lcd_data[5],arib_freqs[MenuItems.name.frequency].freq_text,6);
}
memcpy(&lcd_data[16],&t_modulation_mode[MenuItems.name.modulation_mode][0],4);
LcdWriteLine(LCD_LINE_3,lcd_data);
//draw setting icon
LcdSetPictureCursor(8,70);
LcdDrawPicture(setting_inverted48x8);
//draw RX-ON icon
LcdSetPictureCursor(8,5);
LcdDrawPicture(start_inverted29x8);
break;
case sMenuBERStartScreen:
LcdClearDisplay();
memcpy(lcd_data,"LAB MODE: BER TEST ",21);
LcdWriteLine(LCD_LINE_1,lcd_data);
PrintFreqDr();
break;
case sMenuCWStartScreen:
LcdClearDisplay();
memcpy(lcd_data,"LAB MODE: CW TEST ",21);
LcdWriteLine(LCD_LINE_1,lcd_data);
memcpy(lcd_data,"---------------------",21);
LcdWriteLine(LCD_LINE_2,lcd_data);
if( MenuItems.name.arib_mode == FALSE )
{
sprintf(lcd_data," Frequency: %sMHz",demo_freqs[MenuItems.name.frequency].freq_text);
}
else
{
sprintf(lcd_data," Frequency: %sMHz",arib_freqs[MenuItems.name.frequency].freq_text);
}
LcdWriteLine(LCD_LINE_3,lcd_data);
LcdSetPictureCursor(8,70);
LcdDrawPicture(setting_inverted48x8);
if( SelectedAntennaType > RX_TX_SWITCH )
{
sprintf(lcd_data," Ant. Mode: %s ",&t_antenna_mode[MenuItems.name.antenna_mode][0]);
LcdWriteLine(LCD_LINE_4,lcd_data);
}
break;
case sMenuPN9StartScreen:
LcdClearDisplay();
memcpy(lcd_data,"LAB MODE: PN9 TEST ",21);
LcdWriteLine(LCD_LINE_1,lcd_data);
PrintFreqDr();
break;
default:
break;
}
return 0;
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+ FUNCTION NAME: void MenuSetCursorPosition(uint8 cursor)
+
+ DESCRIPTION: set the cursor position on the menu screen
+
+ RETURN: None
+
+ INPUT: number of sent / received packets, calculated PER, ARSSI on the antennas
+
+ NOTES:
+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void MenuSetCursorPosition(uint8 cursor)
{
CursorPosition = cursor;
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+ FUNCTION NAME: void MenuReportPer(uint16 sent_packets, uint16 received_packets, float per
+
+ DESCRIPTION: reports the PER into the LCD and UART
+
+ RETURN: None
+
+ INPUT: number of sent / received packets, calculated PER, ARSSI on the antennas
+
+ NOTES:
+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void MenuReportPer(uint16 sent_packets, uint16 received_packets, float per)
{
printf(" %03u packet sent, %03u ACK received, ",sent_packets,received_packets);//
printf("PER:%3.2f",per);
sprintf(lcd_data," ");
sprintf(lcd_data,"%04u/%04u PER:%3.2f%%",received_packets,sent_packets,per);
LcdWriteLine(LCD_LINE_6,lcd_data);
//print the RSSI result to the screen
PrintRssiToLcd();
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+ FUNCTION NAME: void MenuReportSentPackets(uint16 sent_packets)
+
+ DESCRIPTION: reports the number of sent packets into the LCD
+
+ RETURN: None
+
+ INPUT: number of sent / received packets, calculated PER, ARSSI on the antennas
+
+ NOTES:
+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void MenuReportSentPackets(uint16 sent_packets)
{
sprintf(lcd_data," ");
sprintf(lcd_data,"%04u/%04u PACKET SENT",sent_packets,v_max_packets[MenuItems.name.max_packets]);
LcdWriteLine(LCD_LINE_6,lcd_data);
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+ FUNCTION NAME: void MenuReportTestPer(uint16 sent_packets, uint16 received_packets, float per, uint8 rssi1, uint8 rssi2)
+
+ DESCRIPTION: reports the PER into the LCD and UART
+
+ RETURN: None
+
+ INPUT: number of sent / received packets, calculated PER, ARSSI on the antennas
+
+ NOTES:
+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void MenuReportTestPer(uint16 sent_packets, uint16 received_packets, float per)
{
uint8 fPacketReceived,rssi1,rssi2;
sint8 temp1,temp2;
fPacketReceived = RFGetRssiResult(&rssi1, &rssi2);
printf("TR:%05u MP:%05u RSSI:",sent_packets,(sent_packets - received_packets));
if( fPacketReceived == RF_OK )
{
if(TestcardData.ant_type == ANT_DIVERSITY)
{
printf("%3bu %3bu",rssi1,rssi2);
}
else
{
printf("%3bu",rssi1);
}
}
else
{
if(TestcardData.ant_type == ANT_DIVERSITY)
{
printf("xxx xxx");
}
else
{
printf("xxx");
}
}
printf(" PER:%3.2f\r\n",per);
//write to the LCD
sprintf(lcd_data,"TR:%05u MP:%05u ",sent_packets,(sent_packets - received_packets));
LcdWriteLine(LCD_LINE_5,lcd_data);
sprintf(lcd_data," ");
sprintf(lcd_data,"PER:%3.2f%%",per);
//put RSSI into the screen
switch( SelectedAntennaType )
{
case ANTENNA_DIVERSITY:
//print RSSI1
if( fPacketReceived == RF_OK )
switch ( MenuItems.name.rssi_format )
{
case 0://RSSI format - Bar graph
LcdWriteLine(LCD_LINE_6,lcd_data);
PrintRssi(6, 92, rssi1);
break;
case 1://RSSI format - dBm
temp1 = (rssi1 >> 1) - 120;
sprintf(&lcd_data[14],"%4bddBm",temp1);
LcdWriteLine(LCD_LINE_6,lcd_data);
break;
case 2://RSSI format - Number
sprintf(&lcd_data[17],"%3bu",rssi1);
LcdWriteLine(LCD_LINE_6,lcd_data);
break;
}
else
{
sprintf(&lcd_data[17],"---");
LcdWriteLine(LCD_LINE_6,lcd_data);
}
//print RSSI2
sprintf(lcd_data," ");
sprintf(lcd_data," ");
if( fPacketReceived == RF_OK )
switch ( MenuItems.name.rssi_format )
{
case 0://RSSI format - Bar graph
LcdWriteLine(LCD_LINE_6,lcd_data);
PrintRssi(7, 92, rssi2);
break;
case 1://RSSI format - dBm
temp2 = (rssi2 >> 1) - 120;
sprintf(&lcd_data[14],"%4bddBm",temp1);
LcdWriteLine(LCD_LINE_7,lcd_data);
break;
case 2://RSSI format - Number
sprintf(&lcd_data[17],"%3bu",rssi2);
LcdWriteLine(LCD_LINE_7,lcd_data);
break;
}
else
{
sprintf(&lcd_data[17],"---");
LcdWriteLine(LCD_LINE_7,lcd_data);
}
//draw antenna icons
LcdSetPictureCursor(6,72);
LcdDrawPicture(ant1_inverted15x8);
LcdSetPictureCursor(7,72);
LcdDrawPicture(ant2_inverted15x8);
break;
case DIVERSITY_FIX_B:
//print RSSI1
sprintf(lcd_data," ");
if( fPacketReceived == RF_OK )
switch ( MenuItems.name.rssi_format )
{
case 0://RSSI format - Bar graph
LcdWriteLine(LCD_LINE_6,lcd_data);
PrintRssi(7, 92, rssi2);
break;
case 1://RSSI format - dBm
temp2 = (rssi2 >> 1) - 120;
sprintf(&lcd_data[14],"%4bddBm",temp1);
LcdWriteLine(LCD_LINE_7,lcd_data);
break;
case 2://RSSI format - Number
sprintf(&lcd_data[17],"%3bu",rssi2);
LcdWriteLine(LCD_LINE_7,lcd_data);
break;
}
else
{
sprintf(&lcd_data[17],"---");
LcdWriteLine(LCD_LINE_7,lcd_data);
}
//draw antenna icon
LcdSetPictureCursor(7,72);
LcdDrawPicture(ant2_inverted15x8);
break;
case SEPARATE_RX_TX:
case RX_TX_SWITCH:
case DIVERSITY_FIX_A:
default:
//print RSSI1
if( fPacketReceived == RF_OK )
switch ( MenuItems.name.rssi_format )
{
case 0://RSSI format - Bar graph
LcdWriteLine(LCD_LINE_6,lcd_data);
PrintRssi(6, 92, rssi1);
break;
case 1://RSSI format - dBm
temp1 = (rssi1 >> 1) - 120;
sprintf(&lcd_data[14],"%4bddBm",temp1);
LcdWriteLine(LCD_LINE_6,lcd_data);
break;
case 2://RSSI format - Number
sprintf(&lcd_data[17],"%3bu",rssi1);
LcdWriteLine(LCD_LINE_6,lcd_data);
break;
}
else
{
sprintf(&lcd_data[17],"---");
LcdWriteLine(LCD_LINE_6,lcd_data);
}
//draw antenna icon
LcdSetPictureCursor(6,72);
LcdDrawPicture(ant1_inverted15x8);
break;
};
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+ FUNCTION NAME: void PrintFreqDr(void)
+
+ DESCRIPTION: prints the frequency & DR into the screen
+
+ RETURN: None
+
+ INPUT: None
+
+ NOTES:
+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
void PrintFreqDr(void)
{
memcpy(lcd_data,"---------------------",21);
LcdWriteLine(LCD_LINE_2,lcd_data);
sprintf(lcd_data," Data Rate: %skbps ",&t_data_rate[MenuItems.name.data_rate][0]);
LcdWriteLine(LCD_LINE_3,lcd_data);
sprintf(lcd_data," Modulation: %s ",&t_modulation_mode[MenuItems.name.modulation_mode][0]);
LcdWriteLine(LCD_LINE_4,lcd_data);
if( MenuItems.name.arib_mode == FALSE )
{
sprintf(lcd_data," Frequency: %sMHz",demo_freqs[MenuItems.name.frequency].freq_text);
}
else
{
sprintf(lcd_data," Frequency: %sMHz",arib_freqs[MenuItems.name.frequency].freq_text);
}
LcdWriteLine(LCD_LINE_5,lcd_data);
LcdSetPictureCursor(8,70);
LcdDrawPicture(setting_inverted48x8);
if( SelectedAntennaType > RX_TX_SWITCH )
{
sprintf(lcd_data," Ant. Mode: %s ",&t_antenna_mode[MenuItems.name.antenna_mode][0]);
LcdWriteLine(LCD_LINE_6,lcd_data);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -