Example #1
0
//-------------------------------------------------------
//Function: 
//Desc	: 
//Input	:
//Output: 
//Return: 
//Others: 
//Author: 
//Date	: 2011/03/01
//-------------------------------------------------------
void system_inital(void)
{
	WaitUs(5);
	
	mcu_clk_inital();
	mcu_io_inital();
	memset(&system, 0, sizeof(SYS_STRUCT));	
	DISABLE_INTERRUPT;	
	InitSysTimer();
	WaitUs(600);
//	system_read_MTPrecord();
	BK2433_RF_Initial();

	AudioInit();
	if(bUSBMode)
		usb_ini();
	
	ENABLE_INTERRUPT;

	#ifdef DEBUG
	UartOpen();
	#endif

	PowerUp_RF();
}
Example #2
0
//read mouse bits 16 to 31
//spec requires a 2.5ms delay between the two 16bits chunks
//but the mouse works fine without it. 
void ReadMouseExtendedData(){
	//read the extended bits. Applies only if the mouse is plugged.
	//if bit 15 of standard word is 1, a mouse is plugged.
	unsigned int p1ButtonsHi=0,p2ButtonsHi=0;
	unsigned char i;

	if(joypad1_status_lo&(1<<15) || joypad2_status_lo&(1<<15)){

		//WaitUs(1);

		for(i=0;i<16;i++){
	
			p1ButtonsHi<<=1;
			p2ButtonsHi<<=1;

			//pulse clock pin		
			JOYPAD_OUT_PORT&=~(_BV(JOYPAD_CLOCK_PIN));
			Wait200ns();
			Wait200ns();
	
			if((JOYPAD_IN_PORT&(1<<JOYPAD_DATA1_PIN))==0) p1ButtonsHi|=1;
			if((JOYPAD_IN_PORT&(1<<JOYPAD_DATA2_PIN))==0) p2ButtonsHi|=1;

			JOYPAD_OUT_PORT|=_BV(JOYPAD_CLOCK_PIN);
			WaitUs(5);
		}
	
		joypad1_status_hi=p1ButtonsHi;
		joypad2_status_hi=p2ButtonsHi;

	}
}
Example #3
0
int LoadTblCmdSet (	const TBLCMDSET * pt, int size){
	int l=0;

	while (l<size) {
		unsigned int  cadr = ((u32)0x800000) | pt[l].adr;
		unsigned char cdat = pt[l].dat;
		unsigned char ccmd = pt[l].cmd;
		unsigned char cvld =(ccmd & TCMD_UNDER_WR);
		ccmd &= TCMD_MASK;
		if (cvld) {
			if (ccmd == TCMD_WRITE) {
				write_reg8 (cadr, cdat);
			}
			else if (ccmd == TCMD_WAREG) {
				WriteAnalogReg (cadr, cdat);
			}
			else if (ccmd == TCMD_WAIT) {
				WaitUs (pt[l].adr*256 + cdat);
			}
		}
		l++;
	}
	return size;
	
}
Example #4
0
UINT _APICALL LptDrvGetStatus(void) {
    BYTE res = 0;
    if (PortCurrent) {
        lasterror = ReadWR0(PortList[PortCurrent-1] + 1, &res);
        if (ExtraDelay) WaitUs(ExtraDelay);
    }
    return res;
}
Example #5
0
UINT _APICALL LptDrvSetData (DWORD lParam1) {

    if (PortCurrent) {
        lasterror = WriteWR0(PortList[PortCurrent-1],(BYTE)lParam1);
        if (ExtraDelay) WaitUs(ExtraDelay);
    } else {
        lasterror = ERROR_INVALID_OPERATION;
    }
    return (lasterror == ERROR_SUCCESS);
}
Example #6
0
static BYTE GetAdcKeyIndex(VOID)
{
	BYTE KeyIndex;
	
	KeyIndex = -1;	
	
#if (defined(FUNC_LED_ADC1_KEY_MULTIPLE_EN) || defined(FUNC_LED_ADC2_KEY_MULTIPLE_EN))
	//段码LED屏与ADC复用示例
#if (defined(FUNC_7PIN_SEG_LED_EN) || defined(FUNC_6PIN_SEG_LED_EN))
	gLedDispRefreshFlag = FALSE;	
	LedPinGpioInit();
#endif

	//切回ADC 口
#ifdef FUNC_LED_ADC1_KEY_MULTIPLE_EN	
	baGPIOCtrl[LED_ADC1_KEY_MULTIPLE_PORT_PU] &= ~LED_ADC1_KEY_MULTIPLE_BIT;
	baGPIOCtrl[LED_ADC1_KEY_MULTIPLE_PORT_PD] |= LED_ADC1_KEY_MULTIPLE_BIT; 	
#endif

#ifdef FUNC_LED_ADC2_KEY_MULTIPLE_EN
	baGPIOCtrl[LED_ADC2_KEY_MULTIPLE_PORT_PU] &= ~LED_ADC2_KEY_MULTIPLE_BIT;
	baGPIOCtrl[LED_ADC2_KEY_MULTIPLE_PORT_PD] |= LED_ADC2_KEY_MULTIPLE_BIT;
#endif

	WaitUs(40); //复用时确保AD端口稳定
#endif

#ifdef ADC_KEY_PORT_CH1
	KeyIndex = AdcChannelKeyGet(ADC_KEY_PORT_CH1);
#endif

#ifdef ADC_KEY_PORT_CH2
	if(KeyIndex == -1)
	{
		KeyIndex = AdcChannelKeyGet(ADC_KEY_PORT_CH2);
		if(KeyIndex != -1)
		{
			KeyIndex += ADC_KEY_COUNT;
		}
	}
#endif

#if (defined(FUNC_LED_ADC1_KEY_MULTIPLE_EN) || defined(FUNC_LED_ADC2_KEY_MULTIPLE_EN))
#if (defined(FUNC_7PIN_SEG_LED_EN) || defined(FUNC_6PIN_SEG_LED_EN))
	gLedDispRefreshFlag = TRUE; 
#endif
#endif

#ifdef HEADPHONE_ADC_PORT_CH
	if(KeyIndex == -1)
	{
		KeyIndex = AdcChannelKeyGet(HEADPHONE_ADC_PORT_CH);
		if(KeyIndex != -1)
		{
			KeyIndex += 22;
		}
	}	
#endif

	return KeyIndex;
}
Example #7
0
void ReadButtons(){
	unsigned int p1ButtonsLo=0,p2ButtonsLo=0;
	unsigned char i;

	//latch controllers
	JOYPAD_OUT_PORT|=_BV(JOYPAD_LATCH_PIN);
	#if SNES_MOUSE == 1
		if(snesMouseEnabled){
			WaitUs(1);
		}else{
			Wait200ns();
			Wait200ns();
		}	
	#else
		Wait200ns();
		Wait200ns();
	#endif
	JOYPAD_OUT_PORT&=~(_BV(JOYPAD_LATCH_PIN));


	//read button states
	for(i=0;i<16;i++){

		p1ButtonsLo>>=1;
		p2ButtonsLo>>=1;

		#if SNES_MOUSE == 1
			if(snesMouseEnabled){
				WaitUs(5);
			}else{
				Wait200ns();
				Wait200ns();
			}	
		#else
			Wait200ns();
			Wait200ns();
		#endif
			
		//pulse clock pin		
		JOYPAD_OUT_PORT&=~(_BV(JOYPAD_CLOCK_PIN));
		
		if((JOYPAD_IN_PORT&(1<<JOYPAD_DATA1_PIN))==0) p1ButtonsLo|=(1<<15);
		if((JOYPAD_IN_PORT&(1<<JOYPAD_DATA2_PIN))==0) p2ButtonsLo|=(1<<15);
		
		JOYPAD_OUT_PORT|=_BV(JOYPAD_CLOCK_PIN);
		
		#if SNES_MOUSE == 1
			if(snesMouseEnabled){
				WaitUs(5);
			}else{
				Wait200ns();
				Wait200ns();
			}	
		#else
			Wait200ns();
			Wait200ns();
		#endif

	}

	#if JOYSTICK==TYPE_SNES
		joypad1_status_lo=p1ButtonsLo;
		joypad2_status_lo=p2ButtonsLo;
	#else
		joypad1_status_lo=p1ButtonsLo&0xff;
		joypad2_status_lo=p2ButtonsLo&0xff;	
	#endif

	if(joypad1_status_lo==(BTN_START+BTN_SELECT+BTN_Y+BTN_B) || joypad2_status_lo==(BTN_START+BTN_SELECT+BTN_Y+BTN_B)){
		SoftReset();
	}

}
Example #8
0
/* Delay 100 microseconds (usi.S) */
static
void dly_100us (void){
	WaitUs(100);
}
/*
 * SystemSetupClock() - Set processor and peripheral clocks
 *
 *    Clock       Frequency    Source
 * CLK_BASE_MX     204 MHz    CLKIN_PLL1
 * CLK_BASE_SPIFI  102 MHz    CLKIN_IDIVE
 * CLK_BASE_USB0   480 MHz    CLKIN_PLL0USB (Disabled)
 * CLK_BASE_USB1    60 MHz    CLKIN_IDIVE  (Disabled)
 *                 120 MHz    CLKIN_IDIVD  (Disabled)
 *
 *                  12 MHz    CLKIN_IDIVB
 *                  12 MHz    CLKIN_IDIVC
 *
 */
void __section(SectionForBootstrapOperations) SystemSetupClock(void)
{
#if (CLOCK_SETUP)
    /* Switch main clock to Internal RC (IRC) while setting up PLL1 */
    LPC_CGU->BASE_CLK[CLK_BASE_MX] = (1 << 11) | (CLKIN_IRC << 24);

    /* Enable the oscillator and wait 100 us */
    LPC_CGU->XTAL_OSC_CTRL = 0;
    WaitUs(100);

#if (SPIFI_INIT)
    /* Setup SPIFI control register and no-opcode mode */
    LPC_SPIFI->CTRL = (0x100 << 0) | (1 << 16) | (1 << 29) | (1 << 30);
    LPC_SPIFI->IDATA = 0xA5;
    /* Switch IDIVE clock to IRC and connect to SPIFI clock */
    LPC_CGU->IDIV_CTRL[CLK_IDIV_E] = ((1 << 11) | (CLKIN_IRC << 24));
    LPC_CGU->BASE_CLK[CLK_BASE_SPIFI] = ((1 << 11) | (CLKIN_IDIVE << 24));
#endif /* SPIFI_INIT */

    /* Configure PLL1 (MAINPLL) for main clock */
    LPC_CGU->PLL1_CTRL |= 1; /* Power down PLL1 */

    /* Change PLL1 to 108 Mhz (msel=9, 12 MHz*9=108 MHz) */
//    LPC_CGU->PLL1_CTRL = (DIRECT << 7) | (PSEL << 8) | (1 << 11) | ((NSEL-1) << 12)  | ((MSEL-1) << 16) | (CLKIN_PLL1 << 24);
    LPC_CGU->PLL1_CTRL = (1 << 7) | (0 << 8) | (1 << 11) | (0 << 12) | (8 << 16)
                         | (CLKIN_PLL1 << 24);
    while (!(LPC_CGU->PLL1_STAT & 1)); /* Wait for PLL1 to lock */
    WaitUs(100);

    /* Change PLL1 to 204 Mhz (msel=17, 12 MHz*17=204 MHz) */
    LPC_CGU->PLL1_CTRL = (1 << 7) | (0 << 8) | (1 << 11) | (0 << 12) | (16 << 16)
                         | (CLKIN_PLL1 << 24);
    while (!(LPC_CGU->PLL1_STAT & 1)); /* Wait for PLL1 to lock */

    /* Switch main clock to PLL1 */
    LPC_CGU->BASE_CLK[CLK_BASE_MX] = (1 << 11) | (CLKIN_PLL1 << 24);

    /* Switch main clock to PLL1 */
    LPC_CGU->BASE_CLK[CLK_BASE_MX] = (1 << 11) | (CLKIN_PLL1 << 24);

    /* Set USB PLL dividers for 480 MHz */
    LPC_CGU->PLL[CGU_USB_PLL].PLL_MDIV = 0x06167FFA;
    LPC_CGU->PLL[CGU_USB_PLL].PLL_NP_DIV = 0x00302062;
    LPC_CGU->PLL[CGU_USB_PLL].PLL_CTRL = 0x0000081D | (CLKIN_CRYSTAL << 24);

    /* Switch USB0 clock to USB PLL */
    LPC_CGU->BASE_CLK[CLK_BASE_USB0] = (1 << 0) | (1 << 11) | (CLKIN_PLL0USB << 24);

    /* Set IDIVE clock to PLL1/2 = 102 MHz */
    LPC_CGU->IDIV_CTRL[CLK_IDIV_E] = (1 << 2) | (1 << 11) | (CLKIN_PLL1 << 24); // PLL1/2

    /* Set IDIVD clock to ((USBPLL/4) / 2) = 60 MHz and connect to USB1 */
    LPC_CGU->IDIV_CTRL[CLK_IDIV_A] = (3 << 2) | (1 << 11) | (CLKIN_PLL0USB << 24); // USBPLL/4
    LPC_CGU->IDIV_CTRL[CLK_IDIV_D] = (1 << 2) | (1 << 11) | (CLKIN_IDIVA << 24); // IDIVA/2
    LPC_CGU->BASE_CLK[CLK_BASE_USB1] = (1 << 0) | (1 << 11) | (CLKIN_IDIVD << 24);

    /* Configure remaining integer dividers */
    LPC_CGU->IDIV_CTRL[CLK_IDIV_B] = (0 << 2) | (1 << 11) | (CLKIN_IRC << 24); // IRC
    LPC_CGU->IDIV_CTRL[CLK_IDIV_C] = (1 << 2) | (1 << 11) | (CLKIN_PLL1 << 24); // PLL1/2

    LPC_CGU->BASE_CLK[CLK_BASE_UART0] = (1 << 0) | (1 << 11) | (CLKIN_PLL1 << 24);
    LPC_CGU->BASE_CLK[CLK_BASE_UART1] = (1 << 0) | (1 << 11) | (CLKIN_PLL1 << 24);
    LPC_CGU->BASE_CLK[CLK_BASE_UART2] = (1 << 0) | (1 << 11) | (CLKIN_PLL1 << 24);
#endif /* CLOCK_SETUP */
}
Example #10
0
/* tests thrown in.	  						*/
int main( void)
 {
 struct serial_param sp;
 struct interrupt_param irq;


 (void)SetNativeSpeed( 14745uL);

	/* Desired serial line characteristics 9600,n82			*/
 sp.baud = 38400uL;
 sp.length = UART_WORD_LEN_8;
 sp.parity = UART_PARITY_NONE;
 sp.stop = UART_STOP_BITS_1;
 irq.FIQ = 0;
 irq.pri = (INT_PRIORITY)5;

 PINSEL0 &= 0x0FFFFu;	/*  Set pin P0.8-P0.15 to I/O.		*/
 IODIR |= 0xFFFFFF00u; 	/*  Set pin P0.8-P0.32 to output.	*/

	/*  Quick toggles to show we got started.			*/
    IOCLR = YELLOW_LED;
    IOSET = YELLOW_LED;	/* 1 */
    IOCLR = YELLOW_LED;
    IOSET = YELLOW_LED;	/* 2 */
    IOCLR = YELLOW_LED;
    IOSET = YELLOW_LED;	/* 3 */
    IOCLR = YELLOW_LED;
    IOSET = YELLOW_LED;	/* 4 */
    IOCLR = YELLOW_LED;
    IOSET = YELLOW_LED;	/* 5 */
    IOCLR = YELLOW_LED;
    IOSET = YELLOW_LED;	/* 6 */
    IOCLR = YELLOW_LED;


	/*  Set up memory access, CPU and bus speeds.			*/
 (void)SetMAM( 3u, MAM_full_enable);
 (void)VPBControl( VPB_DIV1);
 (void)SetDesiredSpeed( 60000uL);

 (void)ioctl( fileno(stdout), INTERRUPT_SETUP, &irq);
	/*  Set up serial port to desired rate.				*/
 (void)ioctl( fileno(stdout), UART_SETUP, &sp);

	/*  Start timer.						*/
 (void)StartClock();



 IOSET = YELLOW_LED;
 (void)iprintf( "Minimum Wait %u\r\n", MinimumAchievableWait());

 IOCLR = YELLOW_LED;
 puts( "flasher.c Hello World\r\n");		/*  It's alive !!		*/

 printf( "Test done with printf %d\n", 1234 );

 IOSET = YELLOW_LED;
 

	/*  Another sequence of toggles.  This time high and low should	*/
	/* be 1 second each for a 20sec total delay.  Should be easily 	*/
	/* measureable to confirm timer operation.			*/
 puts( "Starting wait\r\n");

 IOCLR = GREEN_LED;
 WaitUs( 1000000u);
 IOSET = GREEN_LED;
 WaitUs( 1000000u);
 IOCLR = GREEN_LED;
 WaitUs( 1000000u);
 IOSET = GREEN_LED;
 WaitUs( 1000000u);
 IOCLR = GREEN_LED;
 WaitUs( 1000000u);
 IOSET = GREEN_LED;
 WaitUs( 1000000u);
 IOCLR = GREEN_LED;
 WaitUs( 1000000u);
 IOSET = GREEN_LED;
 WaitUs( 1000000u);
 IOCLR = GREEN_LED;
 WaitUs( 1000000u);
 IOSET = GREEN_LED;
 WaitUs( 1000000u);
 IOCLR = GREEN_LED;
 WaitUs( 1000000u);
 IOSET = GREEN_LED;
 WaitUs( 1000000u);
 IOCLR = GREEN_LED;
 WaitUs( 1000000u);
 IOSET = GREEN_LED;
 WaitUs( 1000000u);
 IOCLR = GREEN_LED;
 WaitUs( 1000000u);
 IOSET = GREEN_LED;
 WaitUs( 1000000u);
 IOCLR = GREEN_LED;
 WaitUs( 1000000u);
 IOSET = GREEN_LED;
 WaitUs( 1000000u);
 IOCLR = GREEN_LED;
 WaitUs( 1000000u);
 IOSET = GREEN_LED;
 WaitUs( 1000000u);
 IOCLR = GREEN_LED;
 WaitUs( 1000000u);
 IOSET = GREEN_LED;

 puts( "End wait\r\n");

	/*  Two possible ways to end, either sit toggling a pin or run	*/
	/* a simple character echo.					*/
#if 0
 PINSEL0 = 0u;
 IODIR |= 0x100;

 while( 1) {  /*lint !e716*/
    IOSET = GREEN_LED;
    IOCLR = GREEN_LED;
    }
#endif

#if 1
    while ( 1 )
    {
        int     charAvail;

        (void)ioctl( fileno(stdout), UART_CHAR_WAITING, &charAvail );

        if ( charAvail )
        {
            fputc( getchar(), stdout);
        }
    }
#endif
 return( 0);			/*lint !e527 unreachable		*/
 }
Example #11
0
//-------------------------------------------------------
//Function: 
//Desc	: 
//Input	:
//Output: 
//Return: 
//Others: 
//Author: 
//Date	: 2011/03/01
//-------------------------------------------------------
void system_test_mode(void)
{
	BYTE i=0;
	BYTE channel = 0;
	BYTE sc_sub_mode = 0;
	BYTE sc_count = 0;
	BYTE uTestCHIndex;
	BYTE uLEDBlinkDuty;
	
	BK2401_RETR = 0x00;						
	BK2401_ENAA = 0x00;
	BK2401_ENRX = 0x00;
	PowerUp_RF();
	SwitchToTxMode();
	BK2401_CE = 0X00;
	BK2401_CE = 0X01;
	
	i = 1;
	uTestCHIndex = TEST_CHANNEL[i];	
	BK2401_RFCH=RF_TABLE[uTestCHIndex];
	channel = RF_TABLE[uTestCHIndex];

	RF_SetLowOuput();
//	RF_Set_Mode(1);
	RF_Set_Mode(0);
	system.work_sub_mode = TEST_SC;
	
	uLEDBlinkDuty = 0;
	
	if(get_bindkey())
		system.Key.bKey.bBindKeyState = 1;
	
	while(system.work_mode == SYSTEM_TEST)
	{
		if(u10msFlag & bSysCheck)
		{
			u10msFlag &= ~bSysCheck;
			Sys_KeyScan();
			if(system.Key.bKey.bBindKeyValid)
			{
				system.Key.bKey.bBindKeyValid = 0;
				i++;
				if(i>=3)
				{
					i=0;
				}
				uTestCHIndex = TEST_CHANNEL[i];	
				BK2401_RFCH=RF_TABLE[uTestCHIndex];
				channel = uTestCHIndex;
			}

			if(++uLEDBlinkDuty > 99)
			{
				uLEDBlinkDuty = 0;
				LEDToggle();
			}
			
			switch(system.work_sub_mode)  	//²âÊÔģʽ
			{
				case TEST_SC:				//µ¥Ôز¨	
					break;
					
				case TEST_CD:				//µ÷ÊÔ £¬FCC²âÊÔ
					FIFO_data[0] = 0xCC;
					FIFO_data[1] = 0xCC;
					FIFO_data[2] = 0xCC;
					FIFO_data[3] = 0xCC;
					FIFO_data[4] = 0xCC;
					FIFO_data[5] = 0xCC;
					FIFO_data[6] = 0xCC;
					FIFO_data[7] = 0xCC;
					FIFO_data[8] = 0xCC;
					FIFO_data[9] = 0xCC;
					FIFO_data[10] = 0xCC;
					FIFO_data[11] = 0xCC;
					FIFO_data[12] = 0xCC;
					FIFO_data[13] = 0xCC;
					FIFO_data[14] = 0xCC;
					FIFO_data[15] = 0xCC;
					FIFO_data[16] = 0xCC;
					FIFO_data[17] = 0xCC;
					FIFO_data[18] = 0xCC;
					FIFO_data[19] = 0xCC;
					FIFO_data[20] = 0xCC;
					FIFO_data[21] = 0xCC;
					FIFO_data[22] = 0xCC;
					FIFO_data[23] = 0xCC;
					FIFO_data[24] = 0xCC;
					W_TX_PAYLOAD_NOACK(FIFO_data,25);
					WaitUs(50);
					W_TX_PAYLOAD_NOACK(FIFO_data,25);
					WaitUs(50);
					W_TX_PAYLOAD_NOACK(FIFO_data,25);
					WaitUs(50);
					W_TX_PAYLOAD_NOACK(FIFO_data,25);
					WaitUs(50);
					W_TX_PAYLOAD_NOACK(FIFO_data,25);
					WaitUs(50);
					break;
					
				case TEST_RF_DATA:			//·¢ËÍÊý¾Ý
					FIFO_data[0] = DATATYPE_MOUSE;
					FIFO_data[1] = 0;	
					FIFO_data[2] = 0;
					FIFO_data[3] = 2;
					FIFO_data[4] = 0;
					W_TX_PAYLOAD_NOACK(FIFO_data,5);
					WaitUs(50);
					W_TX_PAYLOAD_NOACK(FIFO_data,5);
					WaitUs(50);
					W_TX_PAYLOAD_NOACK(FIFO_data,5);
					WaitUs(50);
					W_TX_PAYLOAD_NOACK(FIFO_data,5);
					WaitUs(50);
					W_TX_PAYLOAD_NOACK(FIFO_data,5);
					WaitUs(50);
					break;
					
				default:
					system.work_sub_mode = TEST_SC;
					break;
			}

			switch(sc_sub_mode)
			{
				case 0 :
					break;
					
				case 1 :
					sc_count++;
					if(sc_count >= 2)
					{
						sc_count = 0;
						channel++;
						if(channel >= 82)
						{
							channel = 0;
						}		
						BK2401_RFCH=channel;
					}
					break;
					
				case 2 :
					sc_count++;
					if(sc_count >= 2)
					{
						sc_count = 0;
						if(channel == 0)
						{
							channel = 82;	
						}else{
							channel--;
						}		
						BK2401_RFCH=channel;
					}
					break;
					
				default:
					break;
			}
		}
		
		//usb data dispose
		if(system.usbp0_data.aceept)
		{
			system.usbp0_data.aceept = 0;

			if(COMMAND_TEST == system.usbp0_data.set_report_data[0])
			{
				switch(system.usbp0_data.set_report_data[1])
				{
					case COM_TEST_SC : 
						system.work_sub_mode = TEST_SC; 
						RF_Set_Mode(0);
						system.usbp0_data.reday_report_flag = 1; 
						break;
						
					case COM_TEST_CD: 
						system.work_sub_mode = TEST_CD; 
						RF_Set_Mode(1); 
						system.usbp0_data.reday_report_flag = 1;
						break;
						
					case COM_TEST_DAT: 
						system.work_sub_mode = TEST_RF_DATA; 
						RF_Set_Mode(1);  
						system.usbp0_data.reday_report_flag = 1;
						break;
						
					case COM_TEST_LOW_CH:   
						i=0;
						uTestCHIndex = TEST_CHANNEL[i];	
						BK2401_RFCH=RF_TABLE[uTestCHIndex];
						channel = uTestCHIndex;
						system.usbp0_data.reday_report_flag = 1;
						break;
						
					case COM_TEST_MID_CH:  
						i=1;
						uTestCHIndex = TEST_CHANNEL[i];	
						BK2401_RFCH=RF_TABLE[uTestCHIndex];
						channel = uTestCHIndex;
						system.usbp0_data.reday_report_flag = 1;
						break;
						
					case COM_TEST_HIG_CH: 
						i=2;
						uTestCHIndex = TEST_CHANNEL[i];	
						BK2401_RFCH=RF_TABLE[uTestCHIndex];
						channel = uTestCHIndex;
						system.usbp0_data.reday_report_flag = 1;
						break;
						
					case COM_TEST_SW_HIG: 
						sc_sub_mode = 1; 
						system.usbp0_data.reday_report_flag = 1;
						break;
						
					case COM_TEST_SW_LOW: 
						sc_sub_mode = 2; 
						system.usbp0_data.reday_report_flag = 1;
						break;
						
					case COM_TEST_SW_STOP: 
						sc_sub_mode = 0; 
						system.usbp0_data.reday_report_flag = 1;
						break;
						
					case COM_TEST_POW_5: 
						RF_Set_ouput_power(3); 
						system.usbp0_data.reday_report_flag = 1;
						break;
						
					case COM_TEST_POW_0: 
						RF_Set_ouput_power(2); 
						system.usbp0_data.reday_report_flag = 1;
						break;
						
					case COM_TEST_POW_N5: 
						RF_Set_ouput_power(1); 
						system.usbp0_data.reday_report_flag = 1;
						break;
						
					case COM_TEST_POW_N10: 
						RF_Set_ouput_power(0); 
						system.usbp0_data.reday_report_flag = 1;
						break;
						
					case COM_TEST_EXIT:  
						system.work_mode = SYSTEM_WORK; 
						system.usbp0_data.reday_report_flag = 1;
						break;
						
					default : 
						system.usbp0_data.reday_report_flag = 0; 
						break;
				}
			}
			else if(COMMAND_CURRENT_MODE  == system.usbp0_data.set_report_data[0])
			{
				system.usbp0_data.get_report_data[1] = COMMAND_TEST;
				system.usbp0_data.reday_report_flag = 1;
			}
		}
	}
	BK2433_RF_Initial();
	SwitchToRxMode();
	PowerUp_RF();
}