15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************
25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  Copyright (C) 2003-2012 Broadcom Corporation
45738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
55738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  Licensed under the Apache License, Version 2.0 (the "License");
65738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  you may not use this file except in compliance with the License.
75738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  You may obtain a copy of the License at:
85738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
95738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  http://www.apache.org/licenses/LICENSE-2.0
105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  See the License for the specific language governing permissions and
155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  limitations under the License.
165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/
185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************
205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  This file contains utility functions.
225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/
245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "utl.h"
255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "gki.h"
265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "btm_api.h"
275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         utl_str2int
315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      This utility function converts a character string to an
335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  integer.  Acceptable values in string are 0-9.  If invalid
345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  string or string value too large, -1 is returned.  Leading
355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  spaces are skipped.
365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          Integer value or -1 on error.
395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectINT16 utl_str2int(const char *p_s)
425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    INT32   val = 0;
445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    for (;*p_s == ' ' && *p_s != 0; p_s++);
465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if (*p_s == 0) return -1;
485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    for (;;)
505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        if ((*p_s < '0') || (*p_s > '9')) return -1;
525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        val += (INT32) (*p_s++ - '0');
545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        if (val > 32767) return -1;
565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        if (*p_s == 0)
585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        {
595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            return (INT16) val;
605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        }
615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        else
625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        {
635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            val *= 10;
645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        }
655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         utl_strucmp
715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      This utility function compares two strings in uppercase.
735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  String p_s must be uppercase.  String p_t is converted to
745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  uppercase if lowercase.  If p_s ends first, the substring
755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  match is counted as a match.
765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          0 if strings match, nonzero otherwise.
795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectint utl_strucmp(const char *p_s, const char *p_t)
825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    char c;
845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    while (*p_s && *p_t)
865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        c = *p_t++;
885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        if (c >= 'a' && c <= 'z')
895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        {
905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            c -= 0x20;
915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        }
925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        if (*p_s++ != c)
935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        {
945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            return -1;
955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        }
965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    /* if p_t hit null first, no match */
985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if (*p_t == 0 && *p_s != 0)
995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
1005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        return 1;
1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
1025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    /* else p_s hit null first, count as match */
1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    else
1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        return 0;
1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
1075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
1085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
1105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         utl_itoa
1125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      This utility function converts a UINT16 to a string.  The
1145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  string is NULL-terminated.  The length of the string is
1155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  returned;
1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          Length of string.
1195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
1215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectUINT8 utl_itoa(UINT16 i, char *p_s)
1225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
1235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    UINT16  j, k;
1245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    char    *p = p_s;
1255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BOOLEAN fill = FALSE;
1265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if (i == 0)
1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        /* take care of zero case */
1305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        *p++ = '0';
1315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
1325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    else
1335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
1345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        for(j = 10000; j > 0; j /= 10)
1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        {
1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            k = i / j;
1375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            i %= j;
1385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            if (k > 0 || fill)
1395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            {
1405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project              *p++ = k + '0';
1415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project              fill = TRUE;
1425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            }
1435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        }
1445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
1455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    *p = 0;
1465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    return (UINT8) (p - p_s);
1475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
1485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
1505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         utl_freebuf
1525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      This function calls GKI_freebuf to free the buffer passed
1545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  in, if buffer pointer is not NULL, and also initializes
1555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  buffer pointer to NULL.
1565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          Nothing.
1595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
1615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid utl_freebuf(void **p)
1625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
1635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if (*p != NULL)
1645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
1655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        GKI_freebuf(*p);
1665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        *p = NULL;
1675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
1685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
1695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
1725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         utl_set_device_class
1745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      This function updates the local Device Class.
1765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters:
1785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  p_cod   - Pointer to the device class to set to
1795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  cmd     - the fields of the device class to update.
1815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                            BTA_UTL_SET_COD_MAJOR_MINOR, - overwrite major, minor class
1825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                            BTA_UTL_SET_COD_SERVICE_CLASS - set the bits in the input
1835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                            BTA_UTL_CLR_COD_SERVICE_CLASS - clear the bits in the input
1845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                            BTA_UTL_SET_COD_ALL - overwrite major, minor, set the bits in service class
1855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                            BTA_UTL_INIT_COD - overwrite major, minor, and service class
1865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          TRUE if successful, Otherwise FALSE
1885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
1905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN utl_set_device_class(tBTA_UTL_COD *p_cod, UINT8 cmd)
1915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
1925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    UINT8 *dev;
1935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    UINT16 service;
1945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    UINT8  minor, major;
1955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    DEV_CLASS dev_class;
1965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    dev = BTM_ReadDeviceClass();
1985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTM_COD_SERVICE_CLASS( service, dev );
1995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTM_COD_MINOR_CLASS(minor, dev );
2005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTM_COD_MAJOR_CLASS(major, dev );
2015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    switch(cmd)
2035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
2045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    case BTA_UTL_SET_COD_MAJOR_MINOR:
2055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        minor = p_cod->minor & BTM_COD_MINOR_CLASS_MASK;
2065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        major = p_cod->major & BTM_COD_MAJOR_CLASS_MASK;
2075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        break;
2085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    case BTA_UTL_SET_COD_SERVICE_CLASS:
2105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        /* clear out the bits that is not SERVICE_CLASS bits */
2115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_cod->service &= BTM_COD_SERVICE_CLASS_MASK;
2125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        service = service | p_cod->service;
2135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        break;
2145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    case BTA_UTL_CLR_COD_SERVICE_CLASS:
2165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_cod->service &= BTM_COD_SERVICE_CLASS_MASK;
2175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        service = service & (~p_cod->service);
2185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        break;
2195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    case BTA_UTL_SET_COD_ALL:
2215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        minor = p_cod->minor & BTM_COD_MINOR_CLASS_MASK;
2225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        major = p_cod->major & BTM_COD_MAJOR_CLASS_MASK;
2235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_cod->service &= BTM_COD_SERVICE_CLASS_MASK;
2245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        service = service | p_cod->service;
2255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        break;
2265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    case BTA_UTL_INIT_COD:
2285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        minor = p_cod->minor & BTM_COD_MINOR_CLASS_MASK;
2295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        major = p_cod->major & BTM_COD_MAJOR_CLASS_MASK;
2305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        service = p_cod->service & BTM_COD_SERVICE_CLASS_MASK;
2315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        break;
2325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    default:
2345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        return FALSE;
2355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
2365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    /* convert the fields into the device class type */
2385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    FIELDS_TO_COD(dev_class, minor, major, service);
2395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if (BTM_SetDeviceClass(dev_class) == BTM_SUCCESS)
2415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        return TRUE;
2425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    return FALSE;
2445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
2455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
2475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         utl_isintstr
2495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      This utility function checks if the given string is an
2515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  integer string or not
2525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          TRUE if successful, Otherwise FALSE
2555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
2575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN utl_isintstr(const char *p_s)
2585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
2595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    UINT16 i = 0;
2605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    for(i=0; p_s[i] != 0; i++)
2625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
2635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        if(((p_s[i] < '0') || (p_s[i] > '9')) && (p_s[i] != ';'))
2645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            return FALSE;
2655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
2665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    return TRUE;
2685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
2695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
2715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         utl_isdialstr
2735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      This utility function checks if the given string contains
2755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  only dial digits or not
2765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          TRUE if successful, Otherwise FALSE
2795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
2815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN utl_isdialstr(const char *p_s)
2825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
2835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    UINT16 i = 0;
2845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    for(i=0; p_s[i] != 0; i++)
2865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
2875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        if(!(((p_s[i] >= '0') && (p_s[i] <= '9'))
2885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            || (p_s[i] == '*') || (p_s[i] == '+') || (p_s[i] == '#') || (p_s[i] == ';')
2895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            || ((p_s[i] >= 'A') && (p_s[i] <= 'C'))))
2905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            return FALSE;
2915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
2925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    return TRUE;
2945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
2955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
297