Hello,
I have to extract the info reg rank32 (5bits), rank16(4bits), rank8(3 bits), rank4(2bits), rank2(1bit), rank1(1bit) from the encoded 16 bits
// Extract the bits from the encoded rank infomation for each of the Antenna elements, as below.
// | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
// --------------------------------------------------------------------------------------------------------------
// <------------ 32 elt -------------> <-------- 16 elt ------> <---- 8 elt ----> <- 4elt --> <-2elt-> <-NoData->
i.e if the last bit is 0, then its no data: rank32 = rank16=rank8=rank4=rank2=rank1=0
if the encoded info is : 1 then : rank32 = rank16=rank8=rank4=rank2=rank1=1
for other encoded info: then we extract the rank as follows:
rank1= 1
rank2 = Bit1 value +1
rank4= Bit 3 and 4 +1
rank8 = bit 6, 5, 4 +1
rank16 = bit 10, 9, 8, 7 +1
rank32 = bit 15, 14, 13, 12 +1
So I have written following two alternatives: could u comment which is better and any other comments please ?
Other way is :
Thanks a lot
pdk
I have to extract the info reg rank32 (5bits), rank16(4bits), rank8(3 bits), rank4(2bits), rank2(1bit), rank1(1bit) from the encoded 16 bits
// Extract the bits from the encoded rank infomation for each of the Antenna elements, as below.
// | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
// --------------------------------------------------------------------------------------------------------------
// <------------ 32 elt -------------> <-------- 16 elt ------> <---- 8 elt ----> <- 4elt --> <-2elt-> <-NoData->
i.e if the last bit is 0, then its no data: rank32 = rank16=rank8=rank4=rank2=rank1=0
if the encoded info is : 1 then : rank32 = rank16=rank8=rank4=rank2=rank1=1
for other encoded info: then we extract the rank as follows:
rank1= 1
rank2 = Bit1 value +1
rank4= Bit 3 and 4 +1
rank8 = bit 6, 5, 4 +1
rank16 = bit 10, 9, 8, 7 +1
rank32 = bit 15, 14, 13, 12 +1
So I have written following two alternatives: could u comment which is better and any other comments please ?
Code:
ASSERT_ONCE(usRank1elt == 0 && usRank2elt == 0 && usRank4elt == 0 && usRank8elt == 0 && usRank16elt == 0 && usRank32elt == 0);
unsigned short usRank = usEncodedRank;
switch (usRank)
{
case 0: break;
case 0x01:
{
usRank1elt = 1; usRank2elt = 1; usRank4elt = 1; usRank8elt = 1; usRank16elt = 1; usRank32elt = 1;
}
break;
default:
{
usRank1elt = 1;
usRank = usRank >> 1;
usRank2elt = (usRank & 0x01) + 1;
usRank = usRank >> 1;
usRank4elt = (usRank & 0x03) + 1;
usRank = usRank >> 2;
usRank8elt = (usRank & 0x07) + 1;
usRank = usRank >> 3;
usRank16elt = (usRank & 0x0f) + 1;
usRank = usRank >> 4;
usRank32elt = (usRank & 0x1f) + 1;
}
break;
}
Code:
ASSERT_ONCE(usRank1elt == 0 && usRank2elt == 0 && usRank4elt == 0 && usRank8elt == 0 && usRank16elt == 0 && usRank32elt == 0);
unsigned short usRank = usEncodedRank;
if (usRank & 0x01)
{
usRank1elt = 1;
usRank2elt = 1;
usRank4elt = 1;
usRank8elt = 1;
usRank16elt = 1;
usRank32elt = 1;
}
else
{
usRank1elt = 1;
usRank = usRank >> 1;
usRank2elt = (usRank & 0x01) + 1;
usRank = usRank >> 1;
usRank4elt = (usRank & 0x03) + 1;
usRank = usRank >> 2;
usRank8elt = (usRank & 0x07) + 1;
usRank = usRank >> 3;
usRank16elt = (usRank & 0x0f) + 1;
usRank = usRank >> 4;
usRank32elt = (usRank & 0x1f) + 1;
}
pdk