2011-08-30 29 views
5

Trong UMTS, tôi nhận được một số lớn được trả về bởi getCid() (lớn hơn giá trị được phép). Đây có phải là UTRAN Cell Identity (UC-ID) không?UTRAN Cell Identity được trả về bởi getCid()

UC-Id = RNC-Id + C-Id 

Có ai biết điều đó không? Cách lấy số C-Id từ số UC-Id?

Cảm ơn và tốt nhất, Benny

+1

Tôi nghĩ rằng không ai thực sự hiểu được cốt lõi của câu hỏi của bạn, xin vui lòng được cụ thể hơn – barmaley

+2

Được rồi, trong GSM getCid() trả về CellID của ô. Theo tôi biết trong UMTS giá trị nhận được bao gồm mã định danh của RNC và mã định danh của ô. Điều này có nghĩa là số dài (7-9 chữ số) được trả về bởi getCid() trong một mạng UMTS chứa cả hai, nhưng tôi chỉ muốn có CellId. Tôi nghĩ rằng cách sau đây là: C-Id = UC-Id% 65536 và RnC-Id = (UC-Id) - (C-Id)/65536.Hoặc tại sao giá trị trả về trong UMTS là một số lớn hơn 65536, là giá trị tối đa cho phép nếu tài liệu android là chính xác. – Benny

Trả lời

3

thử (id tế bào% 65536) nó làm việc cho tôi.

6

Id RNC là 2 byte đầu tiên của Id ô 4 byte (3GPP 25.401, mục 6.1.5), nếu loại mạng là UMTS/HSxPA/HSPA +. "
Tôi có quyền truy cập vào mạng vận hành và I kiểm tra trong hệ thống và đó là sự thật và chính xác
trên cơ sở đó xin vui lòng xem mã của tôi như thế nào bạn có thể dễ dàng có được RNCID + CID:.
Chuyển đổi CID để ByteArray:

public static byte[] convertByteArray__p(int p_int){ 
    byte[] l_byte_array = new byte[4]; 
    int MASK_c = 0xFF; 
    for (short i=0; i<=3; i++){ 
     l_byte_array[i] = (byte) ((p_int >> (8*i)) & MASK_c); 
    } 
    return l_byte_array; 
} 


lấy RNCID và CID:

public int getRNCID_or_CID__p(byte[] p_bytes, short p_which){ 
    int MASK_c = 0xFF; 
    int l_result = 0; 
    if (p_which == Constants.CID_C) { 
     l_result = p_bytes[0] & MASK_c ; 
     l_result = l_result + ((p_bytes[1] & MASK_c) << 8); 
    } else if (p_which == Constants.RNCID_C){ 
     l_result = p_bytes[2] & MASK_c ; 
     l_result = l_result + ((p_bytes[3] & MASK_c) << 8); 
    } else { 
     g_FileHandler.putLog__p('E', "getRNCID_or_CID__p invalid parameter"); 
    } 
    return l_result;  
} 


Hơn bạn có thể dễ dàng gọi như thế này:

 byte[] l_byte_array = new byte[4]; 
     l_byte_array = convertByteArray__p(l_cid); 
     int l_RNC_ID = getRNCID_or_CID__p(l_byte_array,Constants.RNCID_C); 
     int l_real_CID = getRNCID_or_CID__p(l_byte_array,Constants.CID_C); 


Constants RNCID_C (1) và CID_C (2) chỉ contants chỉ cho tôi để tách mà tham số sẽ được chuyển qua.

2

Nếu CID là> 65536, nó không thực sự là cell-ID, nhưng một kết hợp tuyến tính của các CellID sản và RNC-ID:

UTRAN_CELL_ID = RNCID x 65536 + CellID 

Để trích xuất các CellID, sử dụng các phép toán module:

CellID = UTRAN_CELL_ID % 65536 

Để trích xuất các RNCID, có được một phần số nguyên:

RNCID = UTRAN_CELL_ID/65536 
+0

RNCID phải bằng (UTRAN_CELL_ID - UTRAN_CELL_ID% 65536)/65536 – vladiz

Các vấn đề liên quan