亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mftmac.c.bak

?? motorola jw32 usb 源碼
?? BAK
?? 第 1 頁 / 共 5 頁
字號:
/*********************************************************************
 *
 *                  MFT MAC layer
 *
 *********************************************************************
 * FileName:        mftMAC.c
 * Dependencies:
 * Processor:       c51
 * Company:         chengdu MFT, Inc.
 *
 * Software License Agreement
 *
 *
 * Author               Date    Comment
 *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * jiangchao    				5/09/05 Rel 0.1
 ********************************************************************/

// Association State Machine states.
#pragma DATA_SEG  MY_ZEROPAGE
// Number of coordinators found operating in radius.
 BYTE                    PANDescCount=0;

// Current channel of operation.
 BYTE                    macCurrentChannel=0;


// Length of transmit packet that is being current loaded.
 BYTE                    macPacketLen=0;
// Length of transmit packet that is being current loaded.
 BYTE                    macRecLen=0;
// MAC address info.
 NODE_INFO               macInfo;

// Current MAC frame header.
 MAC_HEADER               macCurrentFrame;
//current mac state
//  MAC_STATE               macState;
BYTE                     macKbLedState=0;  //led state of kb
BYTE                 			 macKbPassFlag=0; //pass led state to kb

// Tick value used to calculate timeout conditions.
unsigned int             macStartTick=0;
unsigned int             macMsTick=0;
unsigned int             macKbTick=0;
//unsigned int             macJk1Tick=0;
//unsigned int             macJk2Tick=0;
//unsigned int             macWarnTick=0;
BYTE                     beaconflag=0;
//---------------------------------------------------------
//mac state
 BYTE    bIsAssociated=0        ; // '1' if this node is associated
BYTE  	bIsEnabled=0						;	 // '1' if current tx packet should be put in stage
//BYTE		bIsTest=0							;//'1' if current state is in test mode
BYTE		bmode=0;							 //'1' no beacon 0 becon
BYTE  	bIsScan =0;               //1 now is scan channel
BYTE    bIsGetReady =0;           //mac received data
BYTE    bPhyGetReady=0;         //phy  receive data
BYTE    bIsMap  =0;             //map jk to keyboard
BYTE    bmsIsMap =0;              ;//map mouse key
BYTE    bchanlost=0;             //when save channel should change.1
//BYTE    bledGaptime=1;           //the time period when led light and close
BYTE    bkbounce=0;  //keboard bounce flag
BYTE    macWarncode=0;               //device warn code

//BYTE    macScndtick=0;           //second tick counter

//------------------------------------------------------------
 MAC_BEACON  						 macBeaon  ;
// Tick value used to calculate repeat send timeout conditions.

BYTE                     macNewKeyMode =0;
BYTE                     macNewKey = 0;
BYTE                     macNewKeyLength = 0;
BYTE                     macmsMapKey = 0; //mouse map key
//BYTE                     macDataRate = 0;
unsigned int             macTickDiff=0;

//unsigned int                   macAckTick;
BYTE                     macMsOldKey=0;
 BYTE                    macBeaconTick=0;
BYTE   bBeaconReady;
BYTE   bdevtrans=0;
//Static Rx Frame Buffer
BYTE  FrameRXBuffer[MAC_FRAME_LENGTH];
//-------------------------------------------------

BYTE  JKeyBuffer[MAC_JKTRSLENGTH];//josytick key changed buffer.
BYTE  JkeyMapId=0; //0.no data map.1 joystick data.2,mouse map data.3 keyboard map data
BYTE  JmacroKey=0;

//BYTE JkchannelId=MAC_DEVICE_JOYSTICK0;
//---------------------------------------------------
//Rx Buffer information
volatile RX_BUFFER  RXBuffer[1];

//Current Send Frame

//beacon control
//--------------------------------------------

static BYTE  sendFlag=0;
static BYTE  ledDataFlag=0;
static BYTE  downFlash=0;
static BYTE  downLength=0;
BYTE  TXBUFFER[MAXDEVLENGTH];
BYTE  DeviceBuffer[KbPassLength];
#define RANDOM_LSB                      (T1CNTL)
#define NODATA                            0xff
#pragma DATA_SEG DEFAULT
BYTE 											Joystick=0;
BYTE 			phyTransmitPower=0;
//BYTE 			phyChannelMaxSupport=0;
BYTE      MACSndDataLength=0;
BYTE      MsMode=0;
BYTE      jk1mode=0;
BYTE      jk2mode=0;
/*MAC_JKDev macJkDev[2]=
{
	0xFF,MAC_DEVICE_JOYSTICK0,
	0xFF,MAC_DEVICE_JOYSTICK1,
};*/
BYTE  DeviceDataLength;
 BYTE     macRandom=0;
//mouse data format:0:(key,01 left.right 01). 1~4:x,y. 5:scroll
extern  unsigned  char  mose_buffer[KbLength];	//他們分別是放:鼠標數據,遙感(4/8)鍵時的x,y值,鍵盤數據
//keyboard data format: 0:id=0x01,1:modify...
extern unsigned char kb_buffer[KbLength];
extern unsigned char joystick_buffer[KbLength];//send data id is seted by mac
#define RomBitNumber       5
//BYTE    Groupbit[RomBitNumber]={0x01,0x02,0x04,0x08,0x10,0x20};
//-------------------------------------------------------------------------------------------------------------
void MACPutHeader(BYTE flength,BYTE desAddr);
BYTE MACSaveAppData(unsigned char *buffer,unsigned char length);
static BYTE     MACGetHeader(void);
static void     MACSendAck(BYTE *Buffer,BYTE length);
//static void     TransmitIt(void);
static void 		MACReqNetState();
static void 		MACSendNetState(void);
//static BYTE 		PerformCCA(void);
static BYTE     MACProcessBeacon(void);

static void     MACSendBeacon(void);
static void 		MACPreBeacon(void);
static		void 			MACSendAssociateResponse(void);
//static		void 			MACProcessGTS(void);
static		void 			MACBufferPacket(void);
//static      void            MACTestSendAck();
static void MACDiscardRx(void)	 ;
static BYTE MACProcessNetState(void) ;
void MACPassDeviceData(BYTE deviceid,BYTE *buffer,BYTE length);
//void MACUpdateLedState(BYTE type,BYTE ledflag);
void MACKeyBufferInit()
{
	BYTE i;
	for(i=0;i<MAC_MSKEY_NUMBER;i++)
	{

		msRamMapIndex[i].length =0;
		msRamMapIndex[i].address = NULL;
	 // msRamMapIndex[i].keyNumber = i;
	}
}
/*void MACJKdevBufferInit()
{
		macJkDev[0].devAddress =0xff;
		macJkDev[0].devID = MAC_DEVICE_JOYSTICK0;
		macJkDev[1].devAddress =0xff;
		macJkDev[1].devID = MAC_DEVICE_JOYSTICK1;
}*/
BYTE MACGetBitNumber1(BYTE cmd)
{
	BYTE i;
	for(i=0;i<8;i++)
			{
				 if(cmd&Groupbit[i])
				 {
					 	return i;
				 }
			}
			return NODATA;
}
//return channelID of joystick device.
BYTE  MACGetJkChannelId(void)
{
		if(macCurrentFrame.sndAddress==MAC_DEVICE_JOYSTICK0)//channel 0
		{
					Joystick=1;
					return	MAC_DEVICE_JOYSTICK0;
		}
		Joystick=2;
		return	MAC_DEVICE_JOYSTICK1;
}

/*********************************************************************
 * Function:        void MACInit(void)
 *
 * PreCondition:    macInfo.longAddr must be initialized with
 *                  desired MAC address.
 *
 * Input:           None
 *
 * Output:          None
 *
 * Side Effects:    None
 *
 * Overview:        Initializes data variables used by MAC module.
 *
 * Note:            None
 ********************************************************************/
void MACInit(void)
{
 //   BYTE i;
bIsEnabled		=FALSE;
	bIsScan =FALSE;
		bBeaconReady = FALSE;
	//bIsTest = FALSE;
   bIsGetReady = FALSE;
   bIsMap= FALSE;
   bmsIsMap = FALSE;
    // Also initialize frame DSN queue buffer.
    bIsAssociated = FALSE;

   macStartTick =  TickGet();//synchrounous system tick
    // Clear all mac state flags.
    macCurrentFrame.frameLength = 0x00;
    macCurrentFrame.frameCtrl.Control.Val = 0x00;
//		JkchannelId=MAC_DEVICE_JOYSTICK0;
    // On start, set device id.    
    RXBuffer[0].head = NULL;
    RXBuffer[0].databuffer = NULL;
    RXBuffer[0].length = 0;
    RXBuffer[0].lqi	 	= 0;
    Joystick = 0;
    macPacketLen =0;
    macRecLen    =0;
     beaconflag=0;
    macBeaconTick = 0;
    macKbLedState = 0;
    macKbPassFlag = 0;
  //  macJk1Tick = 0;
 //   macJk2Tick = 0;
    macTickDiff = 0;
    JkeyMapId = 0;
    macMsOldKey = 0;
    JmacroKey = 0;  //record macro key number
    bchanlost=0;
  //  bledGaptime =2; //2.5s
 //   macScndtick=0;
    bkbounce=1;
    macWarncode =0;
 //   bwarnflag=0;
    macMsTick = 0;
     macKbTick=0;
   //   macWaitTick=0;
  //  pmacDownBuffer  = &Ram_Key[DATA_HEAD];
  //------------------------------------------

  Joystick_KeyInit();
  Joystick_DevInit();
 // MACJKdevBufferInit();
  //----------------------------------------

}
//search jk key map index,then put flash address index into ram
//input : flashAddress:flash map area of jk.
//flashDataLength:Flash map length.keyMap:ram index of flash key.
//KeyMapLength: ram index buffer length
//output: if search jk flash map success.return 1.else return 0
BYTE Modify_KeyMapIndex(BYTE const * flashAddress,unsigned int flashDataLength,RamMapIndex * keyMap,BYTE KeyMapLength)
{
    unsigned char i,flashDataL;
   	unsigned int length_check=0;
    flashDataL=*flashAddress;           //Key1…Keyn映射數據的總長度
    if(flashDataLength<flashDataL)
        return FALSE;

    flashAddress+=2;                    //指向Key1映射數據的數據長度
    for(i=0;i<KeyMapLength;i++)
    {
  //      keyMap[i].keyNumber=i;

        keyMap[i].length=*flashAddress;
        flashAddress++;                 //指向數據首地址
        keyMap[i].address=(byte*)flashAddress;
        flashAddress+=keyMap[i].length; //數據長度
        if(*flashAddress!=KBDATAEND)  //結束符
        		return FALSE;
        flashAddress++;                 //JUMP結束符
        length_check=2+keyMap[i].length+length_check;
        if(length_check>=flashDataLength)
            return TRUE;
    }

    return TRUE;
}
/*********************************************************************
 * Function:        void MACEnable(void)
 *
 * PreCondition:    macInfo.longAddr must be initialized with
 *                  desired MAC address.
 *
 * Input:           None
 *
 * Output:          None
 *
 * Side Effects:    None
 *
 * Overview:        Enables PHY regulator and registers.
 *
 * Note:            None
 ********************************************************************/
void MACEnable(void)
{
   	BYTE  phyParameter=0;
    // Initialize the PHY's registers/wait for it's oscillator to
    // become stable.  In the event the PHY malfunctions for too long
    // the watchdog timer will cause a reset to occur here.
    macCurrentChannel=FIRSTCHAN;
    MsMode=0;
   	bPhyGetReady=FALSE;

	//-------------------------------------------------------------------
   	if( !PHYInit(macCurrentChannel,0))
   	{
   			//printf("init PHY error!\n");
   			return;
   	}

   if(PHYGetPIB(PhyCurrentPower,&phyParameter))
    {
    	phyTransmitPower=phyParameter;
    }
    /*if(PHYGetPIB(PhyChannelMaxSupport,&phyParameter))
    {
    	if(phyParameter<MAC_SCAN_MAX_CHANNEL)
    			phyChannelMaxSupport = phyParameter;
    	else
    			phyChannelMaxSupport = MAC_SCAN_MAX_CHANNEL;
    }*/


    //-------------------------------------------------------
    ReadFlash((byte const *)FLASH_ADDRESS[0],KEYMAPMAXSIZE,Ram_Key); //read pan id address from rom and mouse key map
	if(	Modify_KeyMapIndex((BYTE const *)FLASH_ADDRESS[0],KEYMAPMAXSIZE,msRamMapIndex,MAC_MSKEY_NUMBER)) ;
		{
			phyParameter = msRamMapIndex[0].address[MAC_PAN_ID];
			macCurrentChannel = msRamMapIndex[0].address[MAC_CHNL_ID];
		}
	if(	Modify_KeyMapIndex((BYTE const *)FLASH_ADDRESS_JK1[0],PAGESIZE,jk1RamMapIndex,MAC_JKKEY_NUMBER)) ;
	if(	Modify_KeyMapIndex((BYTE const *)FLASH_ADDRESS_JK2[0],PAGESIZE,jk2RamMapIndex,MAC_JKKEY_NUMBER)) ;
	//-------------------------------------------------------------
   MACSetDeviceID(MY_DEVICEID);
    // By default, PAN is assumed to be not assigned.
    macInfo.devAddress=phyParameter;
    macInfo.panId=phyParameter;
		if( !PHYInit(macCurrentChannel,phyParameter))
   	{
   			return;
   	}  
    bIsEnabled = TRUE;
    macBeaon.Control.Val    = 0x00;
    //bmode       = MAC_MODE_NORMAL;
     bmode       =MAC_MODE_BEACON;
    macBeaon.Control.bits.bmode 					=  bmode;
   // PHYSetTRXState(PHY_TRX_RX_ON);
}

//transfer jk combin key to map key
BYTE GetKeyMapNumber(byte bkey)
{
	byte tkey = bkey>>1;
	tkey+=JK_MSTART;
	if(tkey>MAC_JKKEY_NUMBER)
	 return 0;
	return tkey;


}
//according bkey number,judge whether key is pressed or loose.and output key class
BYTE GetJkeyMode(BYTE *bkey,BYTE *bmode,BYTE *bflag)
{
	byte tkey = *bkey>>1;
	byte tlength;
		byte tmode;
		byte tdata;
		byte tkflag;
	*bflag  = *bkey%2;

	if(tkey>MAC_JKKEY_NUMBER)
	 return 0;
	tkflag = 0;
	*bkey =	tkey;
	if(tkey>=LJK_NUMBER&&tkey<LJK_NUMBER+8)//ljoystick key
	{
			 if(bdevtrans==MAC_DEVICE_JOYSTICK0)
			 {
					tmode = jk1RamMapIndex[LJK_INDEX].address[0];
				}
			else if(bdevtrans==MAC_DEVICE_JOYSTICK1)
			{
					tmode = jk2RamMapIndex[LJK_INDEX].address[0];

			}
		 if(tmode!=Key_mode)
		 {
		 		*bkey=LJK;
		 }
		 else
		 {
		 	tkflag=1;

		}

	}
	else if(tkey>=RJK_NUMBER&&tkey<RJK_NUMBER+8)//rjoystick key
	{
			 if(bdevtrans==MAC_DEVICE_JOYSTICK0)
					tmode = jk1RamMapIndex[RJK_INDEX].address[0];
			else if(bdevtrans==MAC_DEVICE_JOYSTICK1)
					tmode = jk2RamMapIndex[RJK_INDEX].address[0];
		 if(tmode!=Key_mode)
		 {
		 		*bkey=RJK;
		 }
		 else
		 {
		 		tkflag=1;
		}
		}

	else if(tkey>=HAT_NUMBER&&tkey<HAT_NUMBER+4)//hat key
	{
			 if(bdevtrans==MAC_DEVICE_JOYSTICK0)
					tmode = jk1RamMapIndex[CAPJK_INDEX].address[0];
			else if(bdevtrans==MAC_DEVICE_JOYSTICK1)
					tmode = jk2RamMapIndex[CAPJK_INDEX].address[0];
			if(tmode!=Key_mode)
					tmode+=Hat_mode;
			else
			{
					tkflag=1;
		  }
	}
	else
	{
			tkflag=1;
	}
	if(	tkflag==1)//KEY MAP
	{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色94色欧美sute亚洲线路二| 成人综合婷婷国产精品久久蜜臀| 欧美日韩一级片网站| 亚洲一区国产视频| 欧美日韩在线精品一区二区三区激情| 亚洲综合一区二区精品导航| 欧美日韩在线一区二区| 美女被吸乳得到大胸91| 久久伊人中文字幕| www.一区二区| 亚洲高清免费观看| 久久美女艺术照精彩视频福利播放 | 国产成人超碰人人澡人人澡| 国产精品污www在线观看| 色综合久久久久久久| 日韩精品亚洲专区| 久久久国产一区二区三区四区小说| www.欧美日韩| 青青草伊人久久| 国产精品理论片| 欧美日韩不卡视频| 国产福利精品一区| 亚洲国产一区视频| 久久久精品中文字幕麻豆发布| 成人avav影音| 免费久久精品视频| 国产精品高潮呻吟| 日韩一区二区高清| 风间由美一区二区av101| 亚洲综合视频在线观看| 国产亚洲精品7777| 欧美高清dvd| 99r国产精品| 久久99精品视频| 亚洲综合男人的天堂| 精品1区2区在线观看| 欧美午夜精品免费| 国产91在线看| 麻豆精品视频在线观看| 一区二区在线免费观看| 国产清纯在线一区二区www| 欧美狂野另类xxxxoooo| 99vv1com这只有精品| 激情综合亚洲精品| 无吗不卡中文字幕| 一卡二卡三卡日韩欧美| 国产精品天干天干在线综合| 日韩视频中午一区| 欧美午夜理伦三级在线观看| 成人av在线影院| 国产一区二区免费在线| 亚洲成人动漫在线免费观看| 国产精品成人网| 国产性色一区二区| 久久综合色天天久久综合图片| 欧美三级韩国三级日本三斤| 99re热这里只有精品视频| 国产综合色产在线精品| 蜜桃视频在线观看一区| 亚洲国产精品影院| 一区二区三区成人| 樱花草国产18久久久久| 欧美激情在线免费观看| 久久精品视频一区二区三区| 日韩精品一区二区在线| 日韩欧美一二区| 欧美一级片免费看| 91精品国产综合久久久蜜臀粉嫩| 色噜噜狠狠成人网p站| av影院午夜一区| caoporn国产精品| 本田岬高潮一区二区三区| 高潮精品一区videoshd| 不卡一区二区三区四区| 福利一区在线观看| 91在线视频观看| 色一情一乱一乱一91av| 在线视频国内自拍亚洲视频| 欧美伊人精品成人久久综合97| 色香蕉久久蜜桃| 欧美高清精品3d| 日韩精品一区二区三区swag| 欧美一区二区私人影院日本| 日韩欧美一级片| 日本一区二区三区电影| 国产精品久久久99| 一区二区三区电影在线播| 丝袜亚洲精品中文字幕一区| 男人的j进女人的j一区| 国产美女久久久久| 91亚洲精品乱码久久久久久蜜桃| 色综合天天综合网天天看片| 欧美性生活久久| 日韩视频国产视频| 久久久久国产精品免费免费搜索| 国产精品女上位| 亚洲综合在线视频| 毛片基地黄久久久久久天堂| 国产成人精品影视| 色婷婷av一区二区三区之一色屋| 欧美日韩精品欧美日韩精品一| 精品日韩在线观看| 亚洲色图一区二区| 美女视频免费一区| 成人午夜av影视| 欧美久久一区二区| 国产午夜精品在线观看| 亚洲综合一区二区三区| 韩国精品主播一区二区在线观看 | www.亚洲在线| 欧美无砖专区一中文字| 欧美精品一区二区三区蜜桃| 亚洲另类春色校园小说| 激情深爱一区二区| 在线观看一区日韩| 国产人久久人人人人爽| 亚洲一区二区在线播放相泽| 韩国精品久久久| 欧美在线观看视频一区二区三区| 精品少妇一区二区三区免费观看 | 亚洲一区二区视频| 亚洲靠逼com| 亚洲国产毛片aaaaa无费看| 蜜臀av亚洲一区中文字幕| 国产乱人伦偷精品视频不卡| 日本韩国欧美三级| 欧美国产欧美亚州国产日韩mv天天看完整 | 久久在线免费观看| 午夜伊人狠狠久久| 成人av网站大全| 精品国产乱码久久久久久老虎| 亚洲精品成人天堂一二三| 精品在线一区二区| 欧美色偷偷大香| 亚洲免费观看高清在线观看| 国内精品伊人久久久久av一坑| 欧美视频在线不卡| 国产精品久久久久久亚洲毛片| 美国一区二区三区在线播放| 欧美无砖砖区免费| 亚洲品质自拍视频| 不卡在线视频中文字幕| 国产偷v国产偷v亚洲高清| 日韩av在线免费观看不卡| 91传媒视频在线播放| 国产精品视频yy9299一区| 日本道色综合久久| 欧美mv和日韩mv国产网站| 亚洲国产精品欧美一二99| 91在线视频播放地址| 亚洲国产激情av| 精品无人码麻豆乱码1区2区| 日韩一区二区中文字幕| 午夜视频在线观看一区二区| 欧美午夜片在线看| 亚洲香肠在线观看| 欧美三级电影一区| 亚洲综合区在线| 欧美亚洲一区二区在线观看| 亚洲精品美国一| 91福利区一区二区三区| 亚洲综合无码一区二区| 欧美性大战久久久久久久蜜臀| 亚洲日本va在线观看| 91丨九色丨蝌蚪丨老版| 一区二区三区在线影院| 91成人网在线| 日韩精品一卡二卡三卡四卡无卡| 欧美精品久久久久久久久老牛影院| 亚洲午夜在线电影| 欧美日韩mp4| 日本视频一区二区三区| 日韩精品专区在线| 狠狠网亚洲精品| 成人午夜看片网址| 久久蜜桃一区二区| 成人动漫视频在线| 亚洲日本青草视频在线怡红院| 欧洲日韩一区二区三区| 午夜精品爽啪视频| 日韩欧美综合在线| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 极品美女销魂一区二区三区免费| 精品成a人在线观看| 不卡电影一区二区三区| 亚洲日本成人在线观看| 欧美狂野另类xxxxoooo| 精品亚洲成a人在线观看| 中文字幕不卡三区| 精品视频全国免费看| 久久精品国产一区二区| 国产精品久久久久久久久动漫| 91高清视频在线| 捆绑变态av一区二区三区| 国产三级三级三级精品8ⅰ区| 色播五月激情综合网| 欧美96一区二区免费视频| 国产欧美一区二区精品忘忧草| 色综合久久久久久久久久久| 麻豆视频一区二区|