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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sim.c

?? 是一個手機(jī)功能的模擬程序
?? C
?? 第 1 頁 / 共 5 頁
字號:
	SIM_dbg_write_trace((SYS_UWORD8 *)"AVCMD", 5);
	SIM_dbg_write_trace(p->xbuf, len+5);
	SIM_dbg_write_trace((SYS_UWORD8 *)"AVANS", 5);
	SIM_dbg_write_trace(rcvSize, 1);
	SIM_dbg_write_trace(result, *rcvSize);
	SIM_dbg_tmp[0] = (SYS_WORD8)(res>>8);
	SIM_dbg_tmp[1] = (SYS_WORD8)res;
	SIM_dbg_write_trace(SIM_dbg_tmp, 2);
	SIM_dbg_write_trace(SIM_dbg_null, SIM_DBG_NULL);
	if (SIM_dbg_tdma_diff > SIM_dbg_max_interchardelay)
	   SIM_dbg_max_interchardelay = SIM_dbg_tdma_diff;
	SIM_dbg_tmp[0] = (SYS_UWORD8)(SIM_dbg_tdma_diff >> 8);
	SIM_dbg_tmp[1] = (SYS_UWORD8)(SIM_dbg_tdma_diff);
	SIM_dbg_write_trace(SIM_dbg_tmp, 2);
#endif

    return(res);
}


/*
* Use to detect end of characters reception
* input:    p       pointer on sim structure
*           n       number of extra character to send
*
* output:   return 0 if sucess
*                  SIM_ERR_x in case of error
*
*/

SYS_UWORD16 SIM_WaitReception(SIM_PORT *p)
{
    SYS_UWORD16 returncode;


    //analyse the nature of the command to execute

    if ((p->xbuf[1] == 0x12) || (p->xbuf[1] == 0xB2) || (p->xbuf[1] == 0xB0) || (p->xbuf[1] == 0xF2)
    || (p->xbuf[1] == 0xC0))       
    //FETCH, READ_RECORD, READ_BINARY, STATUS, GET_RESPONSE commands == receive command
    {
        if (p->xbuf[4] == 0)                    //if P3 == 0 when sending receive command
        {
            p->expected_data = 256; 
        }
        else
        {
            p->expected_data = p->xbuf[4];
        }

        p->moderx = 1;                          //wait for procedure byte

        if (returncode = SIM_Waitforchars (p, p->etu9600))
        {
            return returncode;
        }
    }
    else    //direct command : INVALIDATE, REHABILITATE, SLEEP
    {
        p->moderx = 5;      //mode reception of SW1/SW2

        if (returncode = SIM_Waitforchars (p, p->etu9600))
        {
            return returncode;
        }
    }
    return (0);
}



/*
* Use to read file characteristics information
* input:    p       pointer on sim structure
*
* output:   return 0 if sucess
*                  1 in case of error
*
*/


SYS_UWORD8 SIM_GetFileCharacteristics(SIM_PORT *p)
{
    int   res;
    SYS_UWORD8  ubuf[40];
    SYS_UWORD8  sz;

    res = SIM_Select(DF_GSM, ubuf, &sz);
    if ((res & 0xFF00) != 0x9F00)
    {
        res = SIM_Select(DF_DCS1800, ubuf, &sz);                                        
        if ((res & 0xFF00) != 0x9F00)                                
        {
            return (1);
        }
    }
    res = SIM_GetResponse( ubuf, res & 0x00FF , &sz);
    if (res != 0x9000)
        return (1);

    p->FileC = ubuf[13];
    return (0);
}  
  
/*
* Use to determine value of b2 in file caracteristics contained in response
* of SELECT Master File command
* return    0 if no preferred speed during authentication
*           1 if 13/4Mhz mandatory 
*
*
*/
 
void SIM_Interpret_FileCharacteristics(SIM_PORT *p)
{
    //interpret b2 bit for operating authentication speed
    if((p->conf1 & 0x0020) && (p->FileC & 0x02))  
    {
        p->Freq_Algo = 1;                                 
    }

    //interpret Clock stop behavior
	// modified by J. Yp-Tcha to integrate all the behaviors required by ETSI.
	// 18/11/2002 : TI Chip always allowed low level, high level is hard dependant

	if ((p->FileC & SIM_CLK_STOP_MASK) == SIM_CLK_STOP_NOT_ALLWD) {
		/* Sim Clock Stop Not Allowed */
		SIM_sleep_status = SIM_SLEEP_NOT_ALLOWED;
		/* There is not need to modifiy p->conf1 */ 
        status_os_sim = NU_Delete_Timer (&SIM_timer);
	}
	else {
		if ((p->FileC & SIM_CLK_STOP_MASK) == SIM_CLK_STOP_ALLWD) {
			/* Sim Clock Stop Allowed, no prefered level */
			/* Default value for TI Chip shall always be Low Level */
	        SIM_sleep_status = SIM_SLEEP_DESACT;
		    p->c->conf1 = p->conf1 &= ~SIM_CONF1_SCLKLEV;
		}
		else {
			/* Clock Stop is allowed, the level shall be checked */
			if ((p->FileC & SIM_CLK_STOP_HIGH) == SIM_CLK_STOP_HIGH) {
				/* high level is mandatory */
/* OMEGA/NAUSICA can not handle sim stop clock at high level */
#ifndef ANALOG1
	            SIM_sleep_status = SIM_SLEEP_DESACT;
    	        p->c->conf1 = p->conf1 |= SIM_CONF1_SCLKLEV;
#else
				/* Sim Clock Stop Not Allowed because the interface do not support this level */
				SIM_sleep_status = SIM_SLEEP_NOT_ALLOWED;
				/* There is not need to modifiy p->conf1 */ 
		        status_os_sim = NU_Delete_Timer (&SIM_timer);
#endif
			}
			else {
				/* by default, Low Level is allowed */
	            SIM_sleep_status = SIM_SLEEP_DESACT;
	            p->c->conf1 = p->conf1 &= ~SIM_CONF1_SCLKLEV;
			}
		}
	}
    if (SIM_sleep_status == SIM_SLEEP_NONE)
    {
        status_os_sim = NU_Delete_Timer (&SIM_timer);
    }
}

/*
* Use to evaluate need of sending PTS procedure regarding
* the ATR. If default not used, PTS initiates F and D adequate values
* for speed enhancement.
* In case of 2 wrong PTS answer (speed enhanced), a third PTS with default value
* is used. If the third PTS attempt failed, the ME reset the SIM and use default
* value.
*  Return Value : SIM_ERR_READ, SIM_ERRCARDREJECT, SIM_ERR_WAIT
 *
*/


SYS_UWORD16 SIM_PTSprocedure(SIM_CARD *cP, SIM_PORT *p)
{

    SYS_UWORD8            TA1;
    SYS_UWORD8            n;
    SYS_UWORD8            err;

    p->xbuf[0]       = 0xFF;                        //character of PTS proc to send
    p->xbuf[1]       = 0; 
    p->xbuf[2]       = 0xFF;
    p->xbuf[3]       = 0x7B;

      //TA1,TB1,TC1,TD1 present in ATR ?

    n   = 3;

    p->PTS_Try++;

    if (p->PTS_Try > 4)
    {
        return (SIM_ERR_CARDREJECT);  
    }                       // at the fourth attempt, PTS procedure is unusefull. Use default value.
                            //TA1 present?  Test 27.11.2.6
    else if ( p->PTS_Try == 4)
    {
        SIM_Calcetu (p);
        return (0);    
    }
    
    if(cP->AtrData[1] & 0x10)
    {
        TA1 = cP->AtrData[2];
    }
    else                    //if TA1 not present, return
    {
        SIM_Calcetu (p);
        return (0);
    }

    if (TA1 == 0x94)        //speed enhancement
    {
	SIM_Calcetu (p);
        return (0);         //temporary disabling of speed enhancement feature

        if (p->PTS_Try <= 2)
        {
            n = 4;
            p->xbuf[1] = 0x10;    
            p->xbuf[2] = TA1;
        }
    }
    if (TA1 == 0x11)
    {
        SIM_Calcetu (p);
        return (0);
    }                       //if TA1 != 0x11 and 0x94, need to send PTS request
                            //transmit request of speed enhancement : PTS
    SIM_WriteBuffer(p, 0, n);    

    p->moderx = 0;          //mode of normal reception
    p->expected_data = n;

    if (err = SIM_Waitforchars (p, p->etu9600))
    {
      return (err);
    }
                            //should received same chars as PTS request
    if ((p->rbuf[0] != p->xbuf[0]) || (p->rbuf[1] != p->xbuf[1]) || 
    (p->rbuf[2] != p->xbuf[2])) 
    {
      return(SIM_ERR_READ);
    }


    if (n == 4)
    {
        if (p->rbuf[3] != p->xbuf[3])
        {
            return(SIM_ERR_READ);
        }   
        
        //correct response from SIM : with speed enhanced
        p->c->conf1 = p->conf1 |= SIM_CONF1_ETU; //set F=512 D=8
    }

    SIM_Calcetu (p);
    return (0);

}

/*
* procedure of WARM reset consists on asserting
* reset signal at 0 during at least 400 ETU
* input     p pointer of type SIM_PORT
*/

void SIM_WARMReset (SIM_PORT *p)
{

    p->c->conf1 = p->conf1 &= ~SIM_CONF1_SRSTLEV;
    ind_os_sleep (p->etu400);  /// wait 400 ETU
    p->c->conf1 = p->conf1 |= SIM_CONF1_SRSTLEV;
    p->rx_index = 0;

}


/*
* procedure use to get out sleepMode
* input     p pointer of type SIM_PORT
*/

void SIM_SleepMode_In (SYS_UWORD32 param)
{
    if (SIM_sleep_status == SIM_SLEEP_DESACT)
    {
        (&(Sim[0]))->c->conf1 &= ~SIM_CONF1_SCLKEN;  //disabled the clock for the SIM card
        SIM_sleep_status = SIM_SLEEP_ACT;
    }
    status_os_sim = NU_Control_Timer (&SIM_timer,  NU_DISABLE_TIMER);
}




/*
* procedure use to get out sleepMode
* input     p pointer of type SIM_PORT
*/

void SIM_SleepMode_Out (SIM_PORT *p)
{
    if (SIM_sleep_status == SIM_SLEEP_ACT)
    {
        p->c->conf1 = p->conf1 |= SIM_CONF1_SCLKEN;
        // WCS patch for NU_Sleep(0) bug
        if (p->startclock > 0)
		ind_os_sleep (p->startclock);    
        // End WCS patch
        SIM_sleep_status = SIM_SLEEP_DESACT;
    }    
}
               
/*
*  procedure to parse ATR dynamically
*  input     p pointer of type SIM_PORT
*  output    return error code
*  SIM_ERR_WAIT, p->errorSIM
*  SIM_ERR_CARDREJECT,
*
*
*/


SYS_UWORD16 SIM_ATRdynamictreatement (SIM_PORT *p, SIM_CARD *cP)
{

    volatile SYS_UWORD8   HistChar;
    volatile SYS_UWORD8   InterfChar;
    SYS_UWORD16          countT;
    SYS_UWORD16          mask;
    SYS_UWORD16          returncode;
    SYS_UWORD8            i;
    SYS_UWORD8            firstprotocol;    
    SYS_UWORD8            Tx,T;
    SYS_UWORD8            TDi;
    SYS_UWORD8            position_of_TC1;
    SYS_UWORD8            another_protocol_present;
    SYS_UWORD16            wait80000clk;
        
    i               = 0;
    //wait for TS and T0
    p->moderx       = 0;
    p->expected_data= 1;
    firstprotocol   = 0;
    position_of_TC1 = 0;
    another_protocol_present = 0;
    wait80000clk    = 6; // > 24 ms

    //wait for first character TS of ATR sequence. It should arrive before 80000sclk
    if (returncode = SIM_Waitforchars (p, wait80000clk))
    {
        return returncode;
    }
    
    //wait for T0
    p->expected_data++; 
    if (returncode = SIM_Waitforchars (p, p->etu9600))
    {
        return returncode;
    }

    if (((p->rbuf[0] & 0xF0) == 0x30) && (p->rx_index != 0))
    {
        cP->Inverse = 0;
    }
        /*-----------------------------------------------------------*/
        /*              Inverse convention card                      */
            // If first byte is correct for inverse card, return success 
    else if (((p->rbuf[0] & 0x0F) == 0x03) && (p->rx_index != 0))
    {
        cP->Inverse = 1;
    }
    else
    {
        return (SIM_ERR_CARDREJECT);  //Test 27.11.2.4.5
    }

    countT          = 0;
    mask            = 0x10;
    InterfChar      = 2;
    TDi             = 1;


    Tx = SIM_Translate_atr_char (p->rbuf[1], cP);

    HistChar        = Tx & 0x0F;        //get K, number of transmitted historical character

    
    while (TDi != 0)
    {
        while (mask < 0x100)            //monitors interface chars
        {
            if ((Tx & mask) == mask)    //monitors if interface character TAx,TBx,TCx,TDc present
            {
                InterfChar++;
            }
                                        //wait for TC1 and save its position
            if ((firstprotocol == 0) && ((Tx & 0x40) == mask))
            {
                position_of_TC1 = InterfChar - 1;            
            }
            mask = mask << 1;
        }

        p->expected_data = InterfChar;     //wait for TAi,TBi,TCi,TDi if present
        
        if (returncode = SIM_Waitforchars (p, p->etu9600))
        {
            return returncode;
        }

                                        //need to monitor if TC1 present and if equal to 0 or 255 on first protocol
        if ((firstprotocol == 0) && (position_of_TC1 != 0))
        {
            T = SIM_Translate_atr_char (p->rbuf[position_of_TC1], cP);

            if ((T != 0) && (T != 255)) //test 27.11.1.3
            {                           //return Error in case of bad TC1 value            
                return (SIM_ERR_CARDREJECT);            
            }
        }

        if ((Tx & 0x80) == 0x80)        //TDi byte on first protocol must be 0
        {                               //get new TD char
            Tx = SIM_Translate_atr_char (p->rbuf[InterfChar - 1], cP);
          
            if ((Tx & 0x0F) != 0)
            {
                if (firstprotocol == 0) //if first protocol received is not T=0, card is rejected   
                {
                    return (SIM_ERR_CARDREJECT);            //protocol other than T=0
                }    
                else
                {                       //if an another protocol T != 0 present, need to wait for TCK char
                    another_protocol_present = 1;                
                }
            }
            mask = 0x10;    
            firstprotocol++;            //indicate another protocol T
        }
        else
        {
            TDi = 0;
        }
    }
                                        //add TCK if necessary
    p->expected_data =  HistChar + InterfChar + another_protocol_present;
 
    if (returncode = SIM_Waitforchars (p, p->etu9600))
    {
        return returncode;
    }

    cP->AtrSize = p->rx_index;

    if (cP->Inverse)        //inverse card
    {
        // Copy ATR data       
        for (i=0;i<cP->AtrSize;i++)
        {
            cP->AtrData[i] = SIM_ByteReverse(p->rbuf[i]);    
        }
        p->c->conf1 = p->conf1 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品进线69影院| 国产精品视频九色porn| 精品国一区二区三区| 中文字幕中文乱码欧美一区二区 | 精品免费视频一区二区| 亚洲色图在线看| 国产美女精品人人做人人爽| 色妞www精品视频| 久久久久亚洲综合| 青青草成人在线观看| 日本高清不卡一区| 亚洲欧洲三级电影| 国产不卡视频在线观看| 日韩一级免费观看| 亚洲与欧洲av电影| 色综合久久88色综合天天6| 国产日产精品1区| 国产呦精品一区二区三区网站| 欧美性猛片aaaaaaa做受| 国产精品成人一区二区三区夜夜夜| 久久成人羞羞网站| 日韩一级黄色片| 免费人成精品欧美精品| 91精品在线一区二区| 视频一区视频二区中文| 欧美日韩一区高清| 亚洲r级在线视频| 欧美性大战久久久久久久蜜臀| 日韩美女精品在线| av不卡在线观看| 中文字幕亚洲精品在线观看| 成人av网在线| 国产精品麻豆一区二区| 成人性视频网站| 亚洲国产精品传媒在线观看| 国产麻豆精品95视频| 国产日韩在线不卡| 成人aa视频在线观看| 国产精品欧美一级免费| 欧美日韩国产一级二级| 亚洲夂夂婷婷色拍ww47| 91久久精品一区二区三| 亚洲国产另类精品专区| 欧美日韩在线综合| 日韩成人午夜精品| 欧美精品一区男女天堂| 国产精品小仙女| 国产精品进线69影院| 欧洲视频一区二区| 视频一区二区中文字幕| 精品国产乱码久久久久久图片| 国产酒店精品激情| 亚洲色图欧美激情| 777亚洲妇女| 国产在线观看免费一区| 椎名由奈av一区二区三区| 色爱区综合激月婷婷| 秋霞电影一区二区| 日本一区二区三区四区| 在线观看不卡一区| 麻豆国产精品官网| 综合欧美一区二区三区| 在线不卡中文字幕| 国产美女精品一区二区三区| 亚洲免费在线播放| 欧美成人伊人久久综合网| 波多野结衣中文字幕一区二区三区 | 亚洲视频免费在线| 欧美日韩aaa| 国产99久久久国产精品| 五月激情六月综合| 中文字幕高清不卡| 欧美一区二区三区免费| 国产成人av一区二区三区在线| 亚洲精品乱码久久久久久久久 | 欧美顶级少妇做爰| 国产成人精品免费看| 亚洲电影中文字幕在线观看| 2欧美一区二区三区在线观看视频| av色综合久久天堂av综合| 全部av―极品视觉盛宴亚洲| 亚洲激情图片小说视频| 精品免费国产一区二区三区四区| 91麻豆免费看片| 国产一区二区三区免费播放| 亚洲一区二区三区四区在线观看 | 99在线精品视频| 精品午夜久久福利影院| 亚洲一区视频在线| 国产亚洲一区二区三区在线观看| 欧美欧美午夜aⅴ在线观看| 成人高清视频免费观看| 国产精品1区二区.| 毛片av一区二区| 亚洲va在线va天堂| 一区二区三区四区不卡在线| 欧美高清在线一区二区| 日韩精品最新网址| 欧美日韩国产小视频| 色狠狠av一区二区三区| 波波电影院一区二区三区| 久草中文综合在线| 久久精品国产秦先生| 日韩电影在线观看网站| 五月天亚洲精品| 亚洲国产成人av网| 亚洲电影你懂得| 亚洲精品国产a| 玉米视频成人免费看| 亚洲视频资源在线| 亚洲天堂网中文字| 国产精品久久久久久久久晋中| 国产网站一区二区| 中文乱码免费一区二区| 国产精品系列在线| 亚洲精品一二三区| 亚洲自拍偷拍欧美| 五月天欧美精品| 首页国产欧美日韩丝袜| 日韩高清一级片| 六月丁香综合在线视频| 激情小说欧美图片| 国产aⅴ精品一区二区三区色成熟| 韩国三级电影一区二区| 国产一二精品视频| 成人av在线网| 欧美午夜精品久久久久久孕妇 | 91日韩在线专区| 色www精品视频在线观看| 欧美日韩激情一区二区| 欧美成人精精品一区二区频| 久久先锋影音av鲁色资源网| 日本一区免费视频| 亚洲综合成人在线视频| 另类成人小视频在线| 国产主播一区二区三区| 成人激情电影免费在线观看| 色婷婷精品久久二区二区蜜臂av| 欧美日韩色综合| 欧美大片顶级少妇| 成人欧美一区二区三区小说| 亚洲国产精品天堂| 国模无码大尺度一区二区三区| 播五月开心婷婷综合| 欧美日韩另类一区| 国产亚洲成aⅴ人片在线观看 | 国产精品乱码久久久久久| 亚洲精品中文在线| 韩国av一区二区三区在线观看| www.久久精品| 制服丝袜在线91| 中文字幕在线观看不卡| 日韩精品一级中文字幕精品视频免费观看 | 丁香桃色午夜亚洲一区二区三区| 不卡大黄网站免费看| 91精品国产一区二区三区| 国产精品视频观看| 捆绑调教一区二区三区| 99久久久久久| 26uuu亚洲| 午夜精品久久一牛影视| 成人免费看黄yyy456| 宅男在线国产精品| 亚洲免费观看高清| 成人精品小蝌蚪| 欧美一区二区成人| 艳妇臀荡乳欲伦亚洲一区| 国内精品第一页| 欧美日本一区二区在线观看| 国产精品福利一区| 国产精品一区二区免费不卡| 欧美精品久久天天躁| 自拍偷拍亚洲欧美日韩| 国产一区二区h| 91精品国产综合久久久久久久 | 欧美日韩一区在线| 中文字幕在线观看不卡| 国产成人福利片| 精品国精品国产尤物美女| 首页国产欧美日韩丝袜| 欧美吻胸吃奶大尺度电影 | 91国产福利在线| 国产精品色呦呦| 国产精品538一区二区在线| 精品国产麻豆免费人成网站| 日本亚洲三级在线| 91精品蜜臀在线一区尤物| 日韩中文字幕1| 欧美区在线观看| 日韩va欧美va亚洲va久久| 欧美性受xxxx| 亚洲成a人v欧美综合天堂下载 | 国产日韩亚洲欧美综合| 国产乱码精品一区二区三区忘忧草| 日韩欧美国产综合| 久久99九九99精品| 久久美女高清视频| 国产精品一区二区男女羞羞无遮挡| 久久免费精品国产久精品久久久久| 国产综合久久久久久鬼色 |