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

📄 menu.c

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