📄 menu.c
字号:
sprintf(lcd_data," ID: Destination: %3bu",MenuItems.name.dest_id);
LcdWriteLine(LCD_LINE_4,lcd_data);
if( SelectedAntennaType > RX_TX_SWITCH )
{
sprintf(lcd_data," Antenna Mode: %s",&t_antenna_mode[MenuItems.name.antenna_mode][0]);
LcdWriteLine(LCD_LINE_5,lcd_data);
}
//draw cursor
LcdSetCharCursor((CursorPosition+3),1);
LcdPutCh(CURSOR);
break;
case sMenuChangeNodeParameters:
//check the state of the push buttons
switch( CheckPushButtons() )
{
case Button1Pressed:
if( SelectedAntennaType > RX_TX_SWITCH )
{
if(CursorPosition < 2) CursorPosition++; else CursorPosition = 1;
}
return UPDATE_PAGE;
break;
case Button2Pressed:
//increase actual variable
switch( CursorPosition )
{
case 1: if( MenuItems.name.dest_id < 255 ) MenuItems.name.dest_id++; else MenuItems.name.dest_id = 0; break;
case 2: if( MenuItems.name.antenna_mode < MAX_A_MODE ) MenuItems.name.antenna_mode++; else MenuItems.name.antenna_mode = 0; break;
default: break;
}
return UPDATE_PAGE;
break;
case Button3Pressed:
switch( CursorPosition )
{
case 1: if( MenuItems.name.dest_id == 0 ) MenuItems.name.dest_id = 255; else MenuItems.name.dest_id--; break;
case 2: if( MenuItems.name.antenna_mode == 0 ) MenuItems.name.antenna_mode = MAX_A_MODE; else MenuItems.name.antenna_mode--; break;
default: break;
}
return UPDATE_PAGE;
break;
case Button4Pressed:
return NEXT_PAGE;
break;
default:
return NONE;
break;
}
break;
/*HIDDEN MENU*/
case sMenuDrawHiddenScreen:
DrawEmptySettingPage();
memcpy(lcd_data,"HIDDEN FUNCTIONS ",21);
LcdWriteLine(LCD_LINE_1,lcd_data);
sprintf(lcd_data," Show GPS Range: %s",&t_yes_no[MenuItems.name.gps_enabled][0]);
LcdWriteLine(LCD_LINE_3,lcd_data);
sprintf(lcd_data," ARIB Modes: %s",&t_on_off[MenuItems.name.arib_mode][0]);
LcdWriteLine(LCD_LINE_4,lcd_data);
sprintf(lcd_data," Full Menus: %s",&t_on_off[MenuItems.name.full_menu][0]);
LcdWriteLine(LCD_LINE_5,lcd_data);
sprintf(lcd_data," Max. Packets: %5u",v_max_packets[MenuItems.name.max_packets]);
LcdWriteLine(LCD_LINE_6,lcd_data);
//draw cursor
LcdSetCharCursor((CursorPosition+3),1);
LcdPutCh(CURSOR);
break;
case sMenuChangeHiddenScreen:
//check the state of the push buttons
switch( CheckPushButtons() )
{
case Button1Pressed:
if(CursorPosition < 3) CursorPosition++; else CursorPosition = 0;
return UPDATE_PAGE;
break;
case Button2Pressed:
//increase actual variable
switch( CursorPosition )
{
case 0: if( MenuItems.name.gps_enabled < MAX_BOOLEAN_MODE ) MenuItems.name.gps_enabled++; else MenuItems.name.gps_enabled = 0; break;
case 1: if( MenuItems.name.arib_mode < MAX_BOOLEAN_MODE ) MenuItems.name.arib_mode++; else MenuItems.name.arib_mode = 0; break;
case 2: if( MenuItems.name.full_menu < MAX_BOOLEAN_MODE ) MenuItems.name.full_menu++; else MenuItems.name.full_menu = 0; break;
case 3: if( MenuItems.name.max_packets < MAX_P_VALUE ) MenuItems.name.max_packets++; else MenuItems.name.max_packets = 0; break;
default: break;
}
return UPDATE_PAGE;
break;
case Button3Pressed:
switch( CursorPosition )
{
case 0: if( MenuItems.name.gps_enabled == 0 ) MenuItems.name.gps_enabled = MAX_BOOLEAN_MODE; else MenuItems.name.gps_enabled--; break;
case 1: if( MenuItems.name.arib_mode == 0 ) MenuItems.name.arib_mode = MAX_BOOLEAN_MODE; else MenuItems.name.arib_mode--; break;
case 2: if( MenuItems.name.full_menu == 0 ) MenuItems.name.full_menu = MAX_BOOLEAN_MODE; else MenuItems.name.full_menu--; break;
case 3: if( MenuItems.name.max_packets == 0 ) MenuItems.name.max_packets = MAX_P_VALUE; else MenuItems.name.max_packets--; break;
default: break;
}
return UPDATE_PAGE;
break;
case Button4Pressed:
return NEXT_PAGE;
break;
default:
return NONE;
break;
}
break;
case sMenuClearIcon:
LcdClearLine(LCD_LINE_8);
LcdSetPictureCursor(8,33);
LcdDrawPicture(clear_inverted29x8);
break;
case sMenuStopIcon:
LcdClearLine(LCD_LINE_8);
LcdSetPictureCursor(8,5);
LcdDrawPicture(stop_inverted24x8);
LcdSetPictureCursor(8,33);
LcdDrawPicture(clear_inverted29x8);
break;
case sMenuClearSettingIcon:
LcdClearLine(LCD_LINE_8);
LcdSetPictureCursor(8,33);
LcdDrawPicture(clear_inverted29x8);
LcdSetPictureCursor(8,70);
LcdDrawPicture(setting_inverted48x8);
break;
case sMenuRestartDemo:
//clear LCD
LcdClearDisplay();
//put icons into the LCD
if( MenuItems.name.demo_mode != DEMO_MODE_RX )
{
LcdSetPictureCursor(1,12);
LcdDrawPicture(tx_inverted16x8);
LcdSetPictureCursor(8,5);
LcdDrawPicture(txon_inverted29x8);
}
if( MenuItems.name.demo_mode != DEMO_MODE_TX)
{
LcdSetPictureCursor(1,41);
LcdDrawPicture(rx_inverted16x8);
}
LcdSetPictureCursor(8,70);
LcdDrawPicture(setting_inverted48x8);
memcpy(lcd_data,"---------------------",21);
LcdWriteLine(LCD_LINE_3,lcd_data);
//print chip type
memcpy(lcd_data," ",21);
switch( TestcardData.chip_type )
{
case SI4030: sprintf(lcd_data,"Si4030"); break;
case SI4031: sprintf(lcd_data,"Si4031"); break;
case SI4032: sprintf(lcd_data,"Si4032"); break;
case SI4330: sprintf(lcd_data,"Si4330"); break;
case SI4430: sprintf(lcd_data,"Si4430"); break;
case SI4431: sprintf(lcd_data,"Si4431"); break;
case SI4432: sprintf(lcd_data,"Si4432"); break;
default: sprintf(lcd_data,"Si4xxx"); break;
}
sprintf(&lcd_data[8],"%s",&t_modulation_mode[MenuItems.name.modulation_mode][0]);
sprintf(&lcd_data[14],"%b3u %b3u",MenuItems.name.self_id,MenuItems.name.dest_id);
lcd_data[17] = CURSOR;
LcdWriteLine(LCD_LINE_4,lcd_data);
//print second info line into the LCD
sprintf(lcd_data,"%sk/ M ",&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,5);
}
else
{
memcpy(&lcd_data[5],arib_freqs[MenuItems.name.frequency].freq_text,5);
}
switch( SelectedAntennaType )
{
case SEPARATE_RX_TX:
if( MenuItems.name.demo_mode != DEMO_MODE_TX)
{
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(A)");
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(B)");
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);
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);
break;
case sMenuAckTxError:
//report the result on the LCD
memcpy(lcd_data,"ACK TX ERROR! ",21);
LcdWriteLine(LCD_LINE_7,lcd_data);
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)
{
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;
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 )
sprintf(&lcd_data[17],"%3bu",rssi1);
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -