17f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* 27f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 37f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * 47f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 57f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * you may not use this file except in compliance with the License. 67f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * You may obtain a copy of the License at 77f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * 87f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 97f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * 107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * See the License for the specific language governing permissions and 147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project * limitations under the License. 157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project */ 167f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 177f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- includes ----------------------------------------------------------- */ 187f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 197f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_BasicEm/Functions.h" 207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project#include "b_BasicEm/Context.h" 217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- related objects --------------------------------------------------- */ 237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- typedefs ----------------------------------------------------------- */ 257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- constants ---------------------------------------------------------- */ 277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 287f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- globals ---------------------------------------------------------- */ 297f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ---- \ghd{ external functions } ----------------------------------------- */ 357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* */ 367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ========================================================================= */ 377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint16 bbs_swapBytes( uint16 valA ) 417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return ( ( valA >> 8 ) & 0x00FF ) | ( ( valA << 8 ) & 0xFF00 ); 437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbs_memWrite32( const void* ptrA, 487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint16* memPtrA ) 497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 valL = *( uint32* )ptrA; 517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #ifdef HW_BIG_ENDIAN 537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project *memPtrA++ = bbs_swapBytes( ( uint16 )( ( valL >> 0 ) & 0xFFFF ) ); 547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project *memPtrA++ = bbs_swapBytes( ( uint16 )( ( valL >> 16 ) & 0xFFFF ) ); 557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #else 567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project *memPtrA++ = ( valL >> 0 ) & 0xFFFF; 577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project *memPtrA++ = ( valL >> 16 ) & 0xFFFF; 587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #endif 597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return bbs_SIZEOF16( uint32 ); 627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbs_memRead32( void* ptrA, 677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const uint16* memPtrA ) 687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 valL = 0; 707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #ifdef HW_BIG_ENDIAN 727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project valL |= ( ( uint32 )bbs_swapBytes( *memPtrA++ ) << 0 ); 737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project valL |= ( ( uint32 )bbs_swapBytes( *memPtrA++ ) << 16 ); 747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #else 757f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project valL |= ( ( uint32 )*memPtrA++ << 0 ); 767f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project valL |= ( ( uint32 )*memPtrA++ << 16 ); 777f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #endif 787f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 797f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project *( uint32* )ptrA = valL; 807f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 817f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return bbs_SIZEOF16( uint32 ); 827f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 837f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 847f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 857f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 867f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbs_memPeek32( const uint16* memPtrA ) 877f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 887f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 valL = 0; 897f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 907f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #ifdef HW_BIG_ENDIAN 917f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project valL |= ( ( uint32 )bbs_swapBytes( *memPtrA++ ) << 0 ); 927f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project valL |= ( ( uint32 )bbs_swapBytes( *memPtrA++ ) << 16 ); 937f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #else 947f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project valL |= ( ( uint32 )*memPtrA++ << 0 ); 957f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project valL |= ( ( uint32 )*memPtrA++ << 16 ); 967f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #endif 977f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 987f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return valL; 997f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 1007f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1017f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1027f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1037f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbs_memWrite16( const void* ptrA, 1047f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint16* memPtrA ) 1057f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 1067f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #ifdef HW_BIG_ENDIAN 1077f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project *memPtrA++ = bbs_swapBytes( *( uint16* )ptrA ); 1087f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #else 1097f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project *memPtrA++ = *( uint16* )ptrA; 1107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #endif 1117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return bbs_SIZEOF16( uint16 ); 1127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 1137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1167f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbs_memRead16( void* ptrA, 1177f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const uint16* memPtrA ) 1187f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 1197f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #ifdef HW_BIG_ENDIAN 1207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project *( uint16* )ptrA = bbs_swapBytes( *memPtrA++ ); 1217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #else 1227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project *( uint16* )ptrA = *memPtrA++; 1237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #endif 1247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return bbs_SIZEOF16( uint16 ); 1267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 1277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1287f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1297f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbs_memWrite32Arr( struct bbs_Context* cpA, 1317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const void* ptrA, 1327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 sizeA, uint16* memPtrA ) 1337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 1347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 iL; 1357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const uint32* srcL = ( uint32* )ptrA; 1367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( bbs_Context_error( cpA ) ) return 0; 1387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project for( iL = 0; iL < sizeA; iL++ ) 1407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 1417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project memPtrA += bbs_memWrite32( srcL++, memPtrA ); 1427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 1437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return sizeA * bbs_SIZEOF16( uint32 ); 1457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 1467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbs_memRead32Arr( struct bbs_Context* cpA, 1507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project void* ptrA, 1517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 sizeA, 1527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const uint16* memPtrA ) 1537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 1547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 iL; 1557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32* dstL = ( uint32* )ptrA; 1567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( bbs_Context_error( cpA ) ) return 0; 1587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project for( iL = 0; iL < sizeA; iL++ ) 1607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 1617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project memPtrA += bbs_memRead32( dstL++, memPtrA ); 1627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 1637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return sizeA * bbs_SIZEOF16( uint32 ); 1657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 1667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbs_memWrite16Arr( struct bbs_Context* cpA, 1707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const void* ptrA, 1717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 sizeA, 1727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint16* memPtrA ) 1737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 1747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 iL; 1757f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const uint16* srcL = ( uint16* )ptrA; 1767f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1777f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( bbs_Context_error( cpA ) ) return 0; 1787f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1797f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project for( iL = 0; iL < sizeA; iL++ ) 1807f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 1817f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project memPtrA += bbs_memWrite16( srcL++, memPtrA ); 1827f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 1837f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1847f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return sizeA * bbs_SIZEOF16( uint16 ); 1857f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 1867f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1877f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 1887f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1897f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbs_memRead16Arr( struct bbs_Context* cpA, 1907f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project void* ptrA, 1917f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 sizeA, 1927f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const uint16* memPtrA ) 1937f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 1947f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 iL; 1957f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint16* dstL = ( uint16* )ptrA; 1967f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1977f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( bbs_Context_error( cpA ) ) return 0; 1987f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 1997f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project for( iL = 0; iL < sizeA; iL++ ) 2007f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2017f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project memPtrA += bbs_memRead16( dstL++, memPtrA ); 2027f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2037f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2047f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return sizeA * bbs_SIZEOF16( uint16 ); 2057f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 2067f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2077f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 2087f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2097f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbs_memWriteUInt32( uint32 valA, 2107f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint16* memPtrA ) 2117f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 2127f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #ifdef HW_BIG_ENDIAN 2137f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project *memPtrA++ = bbs_swapBytes( ( uint16 )( ( valA >> 0 ) & 0xFFFF ) ); 2147f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project *memPtrA++ = bbs_swapBytes( ( uint16 )( ( valA >> 16 ) & 0xFFFF ) ); 2157f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #else 2167f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project *memPtrA++ = ( valA >> 0 ) & 0xFFFF; 2177f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project *memPtrA++ = ( valA >> 16 ) & 0xFFFF; 2187f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #endif 2197f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2207f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return bbs_SIZEOF16( valA ); 2217f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 2227f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2237f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 2247f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2257f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbs_memWriteUInt16( uint16 valA, 2267f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint16* memPtrA ) 2277f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 2287f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #ifdef HW_BIG_ENDIAN 2297f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project *memPtrA++ = bbs_swapBytes( valA ); 2307f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #else 2317f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project *memPtrA++ = valA; 2327f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #endif 2337f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2347f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return bbs_SIZEOF16( valA ); 2357f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 2367f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2377f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 2387f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2397f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint32 bbs_memReadVersion32( struct bbs_Context* cpA, 2407f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32* versionPtrA, 2417f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 refVersionA, 2427f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project const uint16* memPtrA ) 2437f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 2447f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( bbs_Context_error( cpA ) ) return 0; 2457f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2467f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_memRead32( versionPtrA, memPtrA ); 2477f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project if( *versionPtrA > refVersionA ) 2487f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2497f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project bbs_ERR0( bbs_ERR_WRONG_VERSION, "uint32 bbs_memReadVersion32( .... ):\n" 2507f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project "Data format is newer than software or corrupt\n" ); 2517f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2527f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return bbs_SIZEOF16( uint32 ); 2537f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 2547f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2557f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 2567f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2577f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Projectuint16 bbs_memCheckSum16( const uint16* memPtrA, uint32 sizeA ) 2587f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project{ 2597f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint32 iL; 2607f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project uint16 sumL = 0; 2617f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project for( iL = 0; iL < sizeA; iL++ ) 2627f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project { 2637f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #ifdef HW_BIG_ENDIAN 2647f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project sumL += bbs_swapBytes( memPtrA[ iL ] ); 2657f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #else 2667f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project sumL += memPtrA[ iL ]; 2677f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project #endif 2687f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project } 2697f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2707f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project return sumL; 2717f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project} 2727f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 2737f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project/* ------------------------------------------------------------------------- */ 2747f81d9b6fa7f2ec161b682622db577a28c90b49fThe Android Open Source Project 275