Avatar

帮同学宣传一下http://shop57644665.taobao.com/

无线资源管理RR(Radio Resource Management)的作用主要是建立、维护及释放无线连接,从而允许MS(Mobile Station)与网络进行点到点通信。主要包括:小区的的选择和重选,以及切换等。RR子层还包括守听单向BCCH和CCCH通道的功能,从而实现自动小区切换。

如果支持GPRS(General Packet Radio Service)点到点服务功能,RR子层还包括管理包数据物理通道(Packet data physical channels)。

如果支持VGCS(Voice Group Call Service)和VBS(Voice Broadcast Service)功能,RR子层还包括守听NCH(Notification Channel)通道的功能,以及获取及释放组呼(Voice Group Call)通道的功能。

Tagged with: , .
Avatar

帮同学宣传一下http://shop57644665.taobao.com/

当一些请求发起时,MM可能暂时无法执行,但是后续状态有是有可能允许执行该命令时。例如当mm正在等待网络回复时,此时mmi有发起了一个网络搜索命令,这个命令在现在的状态发起也不是错误的。MM此时不能对该命令返回错误。与此对应例如在无sim卡情况下发起的非紧急的call,mm就会对该命令返回错误,此命令无法被执行。
对于这些mm暂时无法执行的请求,mm会调用mm_write_entry函数将这些命令放入一张表中,等待合适的时机对其进行执行。可以执行这些等待命令的时机有mm处理完其他发送给他的原语后,mm的timer超时执行完对应的操作后。
当mm可以执行表中的命令时,mm会将整个表中的命令从头开始都执行,而不是一次只执行一个命令。在这张命令表中,存有这些消息的发起者,ti,以及命令含义。mm能够根据这些信息来重新执行这些命令。

Tagged with: .
Avatar

帮同学宣传一下http://shop57644665.taobao.com/

1. MMI/CM发送MMXX_ESTABLISH_REQ给MM。XX可能是CC, SS 或 SMS。使用的ti(transaction identifier)从0到6.

2. 当有RR connection存在时MM发送RR_DATA_REQ给RR,当没有RR connection存在时MM发送RR_ESTABLISH_REQ给RR。

3. 当RR connection确立时,MM会开启T3240 timer同时等待网络的回应。

4. 当一切正确时,网络会通过RR返回RR_ESTABLISH_CNF给MM。

5. 当网络可以提供MMI/CM所要求的服务时,RR/DL会发送RR_DATA_IND(CM SERVICE ACCEPT)给MM。

6. 接着RR/DL会发送RR_SYNC_IND(ciphering on)给MM。

7. MM返回MMXX_ESTABLISH_CNF给MMI/CM。

如果T3240超时而网络没有响应时,MM会向RR发送RR_ABORT_REQ,然后向MMI/CM发送MMXX_RELEASE_IND

Tagged with: .
Avatar

帮同学宣传一下http://shop57644665.taobao.com/

Authentication

当MM在注册网络时,网络会发送Authentication的请求。这个请求是通过RR_DATA_IND(AUTHENTICATION REQUEST)发送给MM。在这个原语中带有从网络发送过来的Random Number (RAND)。MM会通过SIM_AUTHENTICATION_REQ这个原语将RAND发送给SIM。SIM会执行RUN GSM ALGORITHM.这个命令,根据得到的RAND计算出SRES 和Kc,然后通过SIM_AUTHENTICATION_CNF发送给MM。MM得到这些数据后会通过RR_DATA_REQ(AUTHENTICATION RESPONSE),RR_SYNC_REQ (ciphering parameters)发送给RR,然后传送给网络。网络会比较传送过来的SRES 和自己计算出来的SRES 来作为Authentication的依据。Kc会被ME端用作以后同网络进行enciphered。

SIM响应MM的SIM_AUTHENTICATION_REQ代码流程如下:

if (SIM_IS_FLAG_SET (GSM_DATAFIELD))

error = FKT_Select (SIM_DF_GSM, NULL, 0);

else

error = FKT_Select (SIM_DF_1800, NULL, 0);

//需要注意的是SIM在执行RUN GSM ALGORITHM时需要先选中DFGSM

if (error EQ SIM_NO_ERROR)

error = FKT_RunGSMAlgo (sim_authentication_req->rand, response, SIM_GSM_ALG_LEN);

////////////////////////////////////

// FKT_RunGSMAlgo这个函数的实现如下

sw1sw2 = SIM_RunGSMAlgo ((UBYTE *)response,

(UBYTE *)rand,

&size);

error = FKT_convert_error (sw1sw2, size);

if (error EQ SIM_NO_ERROR)

error = FKT_GetResponse (data, len);

return error;

// SIM_RunGSMAlgo函数就是直接封装SIM的COMMAND SIM_RUN_GSM_ALGO然后发送给SIM

///////////////////////////////////////////

PSENDX (MM, sim_authentication_cnf);

error = FKT_Select (SIM_KC, NULL, 0);

if (error EQ SIM_NO_ERROR)

{

kc_n.c_kc = MAX_KC_N;

FKT_UpdateBinary (kc_n.kc, (USHORT)kc_n.c_kc, 0);

}

//发送给MM后,会继续选中SIM_KC更新该EF。

Tagged with: .
Page 1 of 11