Forums | developer.brewmp.com Forums | developer.brewmp.com

Developer

Forums

Forums:

Could you please clarify the following five
questions. 

As you know each cell tower (base station) has
unique parameters. 

For GSM they are: 
- Cell Id - cell tower identifier 
- LAC - local area code 
- MNC - mobile network code 
- MCC - mobile country code 

For CDMA they are: 
BID - base station identification number 
SID - system identification number 
NID - network identification number 

I'm developing a LBS application and would like to
know how to get all these params. 

I was able to get MNC & MCC via ITelephone API
for GSM, and it seems that ITelephone API also provides SID & NID on CDMA
networks via "AEETSSInfo.sys_id.id.is95" structure. 

1) As I understand 'sid' & 'nid' items of
"AEETSSInfo.sys_id.id.is95" structure are valid for CDMA networks
only and contains invalid data for GSM networks, am I right? 

2) As described on Brew mp developer net, we can
use "IPOSDET_GetSectorInfo" for getting cell tower params. But
AEESectorInfo structure contains only CDMA related params like SID,NID,BID. So
it seems that it can be used for getting base station params on CDMA network
only. An I right? And if not then how these fields corresponds to GSM cell
tower params (LAC, Cell ID)? 

3) I tried "IPOSDET_GetSectorInfo( pPosDet,
&stSectorInfo )" on HTC F5151 & HTC F3188 phones on GSM network,
it always returns EUNSUPPORTED error code. My '.cif' file contains
AEEPRIVID_PLSectorInfo & AEEPRIVID_PLPosLocation priviledges. It seems that
these devices doesn't support this API. Could you please confirm that? 

4) Are there any other ways to get LAC, Cell ID
parameters on GSM network? 

5) Are there any other ways to get BID on CDMA
networks? 

Here are the answers: 

1) “sys_id” is of “AEETSysID” type. After you read
“AEETSysID” structure check for the “AEETSysID.id_type” value if it is 
- “AEET_SYS_ID_TYPE_UMTS” then use “AEETSysID.id”
value is “plmn”( AEETPLMNID plmn;), here you get “MCC” and “MNC” 
- “AEET_SYS_ID_TYPE_IS95” then “AEETSysID.id”
value is “is95” (AEETIS95SysID is95;), here you have “sid” and “nid” 
(AEETSysIDData is Union) 
typedef struct 

AEETSysIDType id_type; 
AEETSysIDData id; 
AEETSysID; 
2) In BMP the recommendation is to use the
“ITelephone" interface. 
3) HTC F5151 and F3188 don’t support
“Sector-based’ position determination. 
4) For LAC use “ITELEPHONE_GetExtSSInfo” API and
“AEETSSExInfo” structure will have the data(AEETSSExInfo.lac_id). 
Use “tapi_IServingNetworks_GetSrvNetworks” to get
the Network ID. 
5) BID can be read using “IPOSDET_GetSectorInfo”. 
(AEESectorInfo. wBaseID will give you Base station
identification) 
Thanks & Regards 
Sridhar A.

Here are the answers: 

1) “sys_id” is of “AEETSysID” type. After you read
“AEETSysID” structure check for the “AEETSysID.id_type” value if it is 
- “AEET_SYS_ID_TYPE_UMTS” then use “AEETSysID.id”
value is “plmn”( AEETPLMNID plmn;), here you get “MCC” and “MNC” 
- “AEET_SYS_ID_TYPE_IS95” then “AEETSysID.id”
value is “is95” (AEETIS95SysID is95;), here you have “sid” and “nid” 
(AEETSysIDData is Union) 
typedef struct 

AEETSysIDType id_type; 
AEETSysIDData id; 
AEETSysID; 
2) In BMP the recommendation is to use the
“ITelephone" interface. 
3) HTC F5151 and F3188 don’t support
“Sector-based’ position determination. 
4) For LAC use “ITELEPHONE_GetExtSSInfo” API and
“AEETSSExInfo” structure will have the data(AEETSSExInfo.lac_id). 
Use “tapi_IServingNetworks_GetSrvNetworks” to get
the Network ID. 
5) BID can be read using “IPOSDET_GetSectorInfo”. 
(AEESectorInfo. wBaseID will give you Base station
identification) 
Thanks & Regards 
Sridhar A.

Am dealing with some of the same questions. Per 4) I use the following to get LAC:
bool ret = false;
ITelephone *pITelephone = NULL;
ISHELL_CreateInstance(PISHELL, AEECLSID_TELEPHONE, (void**)&pITelephone);

if (pITelephone) {
AEETSSExInfo SSExInfo;
if (SUCCESS==ITELEPHONE_GetExtSSInfo(pITelephone,&SSExInfo, sizeof SSExInfo)) {
#define LacBufSize 11 // enough to hold largest int string...
AECHAR lacBuf[LacBufSize];
WSPRINTF(lacBuf, LacBufSize,(AECHAR*)L"%d",SSExInfo.lac_id);
if ( WSTRLEN(lacBuf)My question is whether there's any way to do a sanity check on the returned number. How to tell (cross-check?) if that code is correct? Also for 4), are you saying that CellId maps to something returned from tapi_IServingNetworks_GetSrvNetworks? (if so, what?)
thanks!
-steve

Am dealing with some of the same questions. Per 4) I use the following to get LAC:
bool ret = false;
ITelephone *pITelephone = NULL;
ISHELL_CreateInstance(PISHELL, AEECLSID_TELEPHONE, (void**)&pITelephone);

if (pITelephone) {
AEETSSExInfo SSExInfo;
if (SUCCESS==ITELEPHONE_GetExtSSInfo(pITelephone,&SSExInfo, sizeof SSExInfo)) {
#define LacBufSize 11 // enough to hold largest int string...
AECHAR lacBuf[LacBufSize];
WSPRINTF(lacBuf, LacBufSize,(AECHAR*)L"%d",SSExInfo.lac_id);
if ( WSTRLEN(lacBuf)My question is whether there's any way to do a sanity check on the returned number. How to tell (cross-check?) if that code is correct? Also for 4), are you saying that CellId maps to something returned from tapi_IServingNetworks_GetSrvNetworks? (if so, what?)
thanks!
-steve

there is no way to cross check (AEETSSExInfo*)->lac_id got from ITELEPHONE_GetExtSSInfo().
though you can check this return value against a correct pre-known value in a Network you are running for test purpose.
- tapi_IServingNetworks_GetSrvNetworks returns the current N/W in range (for which the device can receive signal). so its Network ID which u can get from here. you may not get cell id directly from this value.

there is no way to cross check (AEETSSExInfo*)->lac_id got from ITELEPHONE_GetExtSSInfo().
though you can check this return value against a correct pre-known value in a Network you are running for test purpose.
- tapi_IServingNetworks_GetSrvNetworks returns the current N/W in range (for which the device can receive signal). so its Network ID which u can get from here. you may not get cell id directly from this value.

thanks for the response.
 
So is there any way to retrieve "Cell Id" in a gsm network? (using BrewMP 1.0.2?) (or some newer version?)
 
-sh

thanks for the response.
 
So is there any way to retrieve "Cell Id" in a gsm network? (using BrewMP 1.0.2?) (or some newer version?)
 
-sh

I'll take the lack of response to indicate that BrewMP does NOT provide access to the CellID.
(please do let me know if that conclusion is incorrect.)
 
-sh

I'll take the lack of response to indicate that BrewMP does NOT provide access to the CellID.
(please do let me know if that conclusion is incorrect.)
 
-sh

I do not see anything specifically mentioned as CellID but Base Station ID should change in parellel/co-ordiantion with CellID, in case its not same as CellID.
so may it can be useful.
you can use IPOSDET_GetSectorInfo() to get (AEESectorInfo*)->wBaseID//Base Station Identification.
requires privilages, see documentation.

I do not see anything specifically mentioned as CellID but Base Station ID should change in parellel/co-ordiantion with CellID, in case its not same as CellID.
so may it can be useful.
you can use IPOSDET_GetSectorInfo() to get (AEESectorInfo*)->wBaseID//Base Station Identification.
requires privilages, see documentation.

SDK docs, at least up to 1.04, state that IPOSDET_GetSectorInfo() is "Unsupported on UMTS network"

SDK docs, at least up to 1.04, state that IPOSDET_GetSectorInfo() is "Unsupported on UMTS network"