⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menu.c

📁 silicon wireless开发套件F920+Si4432原理图,源码
💻 C
📖 第 1 页 / 共 4 页
字号:
					{
						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 + -