18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Copyright (C) 2007-2008 The Android Open Source Project
28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project**
38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** This software is licensed under the terms of the GNU General Public
48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** License version 2, as published by the Free Software Foundation, and
58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** may be copied, distributed, and modified under those terms.
68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project**
78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** This program is distributed in the hope that it will be useful,
88b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** but WITHOUT ANY WARRANTY; without even the implied warranty of
98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project** GNU General Public License for more details.
118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project*/
128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef _android_gsm_h
138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define _android_gsm_h
148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/** USEFUL TYPES
168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project **/
178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef unsigned char  byte_t;
198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef byte_t*        bytes_t;
208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef const byte_t*  cbytes_t;
218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/** BCD
238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project **/
248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* convert a 8-bit value into the corresponding nibble-bcd byte */
268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern byte_t   gsm_int_to_bcdi( int  value );
278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* convert a nibble-bcd byte into an int, invalid nibbles are silently converted to 0 */
298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int      gsm_int_from_bcdi( byte_t  value );
308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/** HEX
328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project **/
338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* try to convert a hex string into a byte string, assumes 'dst' is properly sized, and hexlen is even.
358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * returns the number of bytes on exit, or -1 in case of badly formatted data */
368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int      gsm_hex_to_bytes  ( cbytes_t  hex, int  hexlen, bytes_t  dst );
378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* convert a hex string into a byte string, assumes 'dst' is properly sized, and hexlen is even.
398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * no checks are performed */
408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void     gsm_hex_to_bytes0 ( cbytes_t  hex, int  hexlen, bytes_t  dst );
418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* convert a byte string into a hex string, assumes 'hex' is properly sized */
438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void     gsm_hex_from_bytes( char*  hex, cbytes_t  src, int  srclen );
448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* convert a hexchar to an int, returns -1 on error */
468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int      gsm_hexchar_to_int( char  c );
478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* convert a hexchar to an int, returns 0 on error */
498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int      gsm_hexchar_to_int0( char  c );
508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* convert a 2-char hex value into an int, returns -1 on error */
528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int      gsm_hex2_to_byte( const char*  hex );
538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* convert a 2-char hex value into an int, returns 0 on error */
558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int      gsm_hex2_to_byte0( const char*  hex );
568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* convert a 4-char hex value into an int, returns -1 on error */
588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int      gsm_hex4_to_short( const char*  hex );
598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* convert a 4-char hex value into an int, returns 0 on error */
618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int      gsm_hex4_to_short0( const char*  hex );
628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* write a byte to a 2-byte hex string */
648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void     gsm_hex_from_byte( char*  hex, int  val );
658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void     gsm_hex_from_short( char*  hex, int  val );
678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/** UTF-8 and GSM Alphabet
698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project **/
708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* check that a given utf8 string is well-formed, returns 1 on success, 0 otherwise */
728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int      utf8_check( cbytes_t  utf8, int  utf8len );
738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* check that all characters in a given utf8 string can be encoded into the GSM alphabet.
758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   returns 1 if TRUE, 0 otherwise */
768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int      utf8_check_gsm7( cbytes_t  utf8, int  utf8len );
778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* try to skip enough utf8 characters to generate gsm7len GSM septets */
798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern cbytes_t utf8_skip_gsm7( cbytes_t  utf8, cbytes_t  utf8end, int  gsm7len );
808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* convert a utf-8 string into a GSM septet string, assumes 'dst' is NULL or is properly sized,
828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   and that all characters are representable. 'offset' is the starting bit offset in 'dst'.
838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   non-representable characters are replaced by spaces.
848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   returns the number of septets, */
858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int      utf8_to_gsm7( cbytes_t  utf8, int  utf8len, bytes_t  dst, int  offset );
868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* convert a utf8 string into an array of 8-bit unpacked GSM septets,
888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * assumes 'dst' is NULL or is properly sized, returns the number of GSM bytes */
898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int      utf8_to_gsm8( cbytes_t  utf8, int  utf8len, bytes_t  dst );
908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* convert a GSM septets string into a utf-8 byte string. assumes that 'utf8' is NULL or properly
928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   sized. 'offset' is the starting bit offset in 'src', 'count' is the number of input septets.
938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return the number of utf8 bytes. */
948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int      utf8_from_gsm7( cbytes_t  src, int  offset, int  count, bytes_t  utf8 );
958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* convert an unpacked 8-bit GSM septets string into a utf-8 byte string. assumes that 'utf8'
978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   is NULL or properly sized. 'count' is the number of input bytes.
988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   returns the number of utf8 bytes */
998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int      utf8_from_gsm8( cbytes_t  src, int  count, bytes_t  utf8 );
1008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/** UCS-2 and GSM Alphabet
1038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project **
1048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project ** Note that here, 'ucs2' really refers to non-aligned UCS2-BE, as used by the GSM standard
1058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project **/
1068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* check that all characters in a given ucs2 string can be encoded into the GSM alphabet.
1088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   returns 1 if TRUE, 0 otherwise */
1098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int      ucs2_check_gsm7( cbytes_t  ucs2, int  ucs2len );
1108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* convert a ucs2 string into a GSM septet string, assumes 'dst' is NULL or properly sized,
1128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   'offset' is the starting bit offset in 'dst'. non-representable characters are replaced
1138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   by spaces. returns the number of septets */
1148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int      ucs2_to_gsm7( cbytes_t  ucs2, int  ucs2len, bytes_t  dst, int  offset );
1158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* convert a ucs2 string into a GSM septet string, assumes 'dst' is NULL or properly sized,
1178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   non-representable characters are replaced by spaces. returns the number of bytes */
1188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int      ucs2_to_gsm8( cbytes_t  ucs2, int  ucs2len, bytes_t  dst );
1198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* convert a GSM septets string into a ucs2 string. assumes that 'ucs2' is NULL or
1218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   properly sized. 'offset' is the starting bit offset in 'src', 'count' is the number
1228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   of input septets. return the number of ucs2 characters (not bytes) */
1238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int      ucs2_from_gsm7( bytes_t   ucs2, cbytes_t  src, int  offset, int  count );
1248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* convert an 8-bit unpacked GSM septets string into a ucs2 string. assumes that 'ucs2'
1268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   is NULL or properly sized. 'count' is the number of input septets. return the number
1278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   of ucs2 characters (not bytes) */
1288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int      ucs2_from_gsm8( bytes_t   ucs2, cbytes_t  src, int  count );
1298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/** UCS2 to/from UTF8
1328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project **/
1338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* convert a ucs2 string into a utf8 byte string, assumes 'utf8' NULL or properly sized.
1358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   returns the number of utf8 bytes*/
1368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int      ucs2_to_utf8( cbytes_t  ucs2, int  ucs2len, bytes_t  utf8 );
1378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* convert a utf8 byte string into a ucs2 string, assumes 'ucs2' NULL or properly sized.
1398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   returns the number of ucs2 chars */
1408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int      utf8_to_ucs2( cbytes_t  utf8, int  utf8len, bytes_t  ucs2 );
1418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* try to skip a given number of characters in a utf-8 byte string, return new position */
1438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern cbytes_t  utf8_skip( cbytes_t   utf8, cbytes_t   utf8end, int  count);
1448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/** Dial Numbers: TON byte + 'count' bcd numbers
1468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project **/
1478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* convert a bcd-coded GSM dial number into an ASCII string (not zero-terminated)
1498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   assumes 'dst' is NULL or properly sized, returns 0 in case of success, -1 in case of error.
1508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   'num_digits' is the number of digits, not input bytes. a trailing 0xf0 is ignored automatically
1518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project   return the number of ASCII chars */
1528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int  gsm_bcdnum_to_ascii  ( cbytes_t  bcd, int  num_digits, bytes_t  dst );
1538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* convert an ASCII dial-number into a bcd-coded string, returns the number of 4-bit nibbles written, */
1558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int  gsm_bcdnum_from_ascii( cbytes_t  ascii, int  asciilen, bytes_t  dst );
1568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/** ADN: Abbreviated Dialing Numbers
1588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project **/
1598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define  SIM_ADN_MAX_ALPHA        20  /* maximum number of characters in ADN alpha tag */
1608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define  SIM_ADN_MAX_NUMBER       20  /* maximum digits in ADN number */
1618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct {
1638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    byte_t  alpha [ SIM_ADN_MAX_ALPHA*3+1 ];  /* alpha tag in zero-terminated utf-8      */
1648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    char    number[ SIM_ADN_MAX_NUMBER+1 ];   /* dialing number in zero-terminated ASCII */
1658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
1668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectSimAdnRec, *SimAdn;
1678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct {
1698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    SimAdnRec       adn;
1708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    byte_t          ext_record;  /* 0 or 0xFF means no extension */
1718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project}
1728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectSimAdnRecordRec, *SimAdnRecord;
1738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int  sim_adn_record_from_bytes( SimAdnRecord  rec, cbytes_t  data, int  datalen );
1758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int  sim_adn_record_to_bytes  ( SimAdnRecord  rec, bytes_t   data, int  datalen );
1768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/** ROPES
1788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project **/
1798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct {
1818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    bytes_t         data;
1828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int             max;
1838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int             pos;
1848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    int             error;
1858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project    unsigned char   data0[16];
1868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} GsmRopeRec, *GsmRope;
1878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
1888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void      gsm_rope_init( GsmRope  rope );
1898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void      gsm_rope_init_alloc( GsmRope  rope, int  alloc );
1908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern int       gsm_rope_done( GsmRope  rope );
1918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern bytes_t   gsm_rope_done_acquire( GsmRope  rope, int  *psize );
1928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void      gsm_rope_add_c( GsmRope  rope, char  c );
1938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void      gsm_rope_add( GsmRope  rope, const void*  str, int  len );
1948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectextern void*     gsm_rope_reserve( GsmRope  rope, int  len );
1958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project
196a1b379c65f787fc85bd9c6f4a6d14d8a2bebc9d5Marc Petit-Huguenin#define  PHONE_PREFIX "1555521"
197a1b379c65f787fc85bd9c6f4a6d14d8a2bebc9d5Marc Petit-Huguenin
1988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif /* _android_gsm_h */
199