Home | History | Annotate | Download | only in hf_client
      1 /******************************************************************************
      2  *
      3  *  Copyright (c) 2014 The Android Open Source Project
      4  *  Copyright (C) 2003-2012 Broadcom Corporation
      5  *
      6  *  Licensed under the Apache License, Version 2.0 (the "License");
      7  *  you may not use this file except in compliance with the License.
      8  *  You may obtain a copy of the License at:
      9  *
     10  *  http://www.apache.org/licenses/LICENSE-2.0
     11  *
     12  *  Unless required by applicable law or agreed to in writing, software
     13  *  distributed under the License is distributed on an "AS IS" BASIS,
     14  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     15  *  See the License for the specific language governing permissions and
     16  *  limitations under the License.
     17  *
     18  ******************************************************************************/
     19 
     20 /*****************************************************************************
     21 **  Data types
     22 *****************************************************************************/
     23 
     24 /* ASCII character string of arguments to the AT command */
     25 #define BTA_HF_CLIENT_AT_MAX_LEN        512
     26 
     27 /* AT command table element */
     28 typedef struct
     29 {
     30     const char  *p_cmd;         /* AT command string */
     31     UINT8       arg_type;       /* allowable argument type syntax */
     32     UINT8       fmt;            /* whether arg is int or string */
     33     UINT8       min;            /* minimum value for int arg */
     34     INT16       max;            /* maximum value for int arg */
     35 } tBTA_AG_AT_CMD;
     36 
     37 /* callback function executed when command is parsed */
     38 typedef void (tBTA_AG_AT_CMD_CBACK)(void *p_user, UINT16 cmd, UINT8 arg_type,
     39                                     char *p_arg, INT16 int_arg);
     40 
     41 /* callback function executed to send "ERROR" result code */
     42 typedef void (tBTA_AG_AT_ERR_CBACK)(void *p_user, BOOLEAN unknown, char *p_arg);
     43 
     44 enum
     45 {
     46     BTA_HF_CLIENT_AT_NONE,
     47     BTA_HF_CLIENT_AT_BRSF,
     48     BTA_HF_CLIENT_AT_BAC,
     49     BTA_HF_CLIENT_AT_CIND,
     50     BTA_HF_CLIENT_AT_CIND_STATUS,
     51     BTA_HF_CLIENT_AT_CMER,
     52     BTA_HF_CLIENT_AT_CHLD,
     53     BTA_HF_CLIENT_AT_CMEE,
     54     BTA_HF_CLIENT_AT_BIA,
     55     BTA_HF_CLIENT_AT_CLIP,
     56     BTA_HF_CLIENT_AT_CCWA,
     57     BTA_HF_CLIENT_AT_COPS,
     58     BTA_HF_CLIENT_AT_CLCC,
     59     BTA_HF_CLIENT_AT_BVRA,
     60     BTA_HF_CLIENT_AT_VGS,
     61     BTA_HF_CLIENT_AT_VGM,
     62     BTA_HF_CLIENT_AT_ATD,
     63     BTA_HF_CLIENT_AT_BLDN,
     64     BTA_HF_CLIENT_AT_ATA,
     65     BTA_HF_CLIENT_AT_CHUP,
     66     BTA_HF_CLIENT_AT_BTRH,
     67     BTA_HF_CLIENT_AT_VTS,
     68     BTA_HF_CLIENT_AT_BCC,
     69     BTA_HF_CLIENT_AT_BCS,
     70     BTA_HF_CLIENT_AT_CNUM,
     71     BTA_HF_CLIENT_AT_NREC,
     72     BTA_HF_CLIENT_AT_BINP,
     73 };
     74 
     75 typedef UINT8 tBTA_HF_CLIENT_AT_CMD;
     76 
     77 /* Maximum combined buffer for received AT events string */
     78 #define BTA_HF_CLIENT_AT_PARSER_MAX_LEN        4096
     79 
     80 /* This structure holds prepared AT command queued for sending */
     81 struct queued_at_cmd{
     82     tBTA_HF_CLIENT_AT_CMD cmd;
     83     char buf[BTA_HF_CLIENT_AT_MAX_LEN];
     84     UINT16 buf_len;
     85     struct queued_at_cmd *next;
     86 };
     87 typedef struct queued_at_cmd tBTA_HF_CLIENT_AT_QCMD;
     88 
     89 /* Maximum number of indicators */
     90 #define BTA_HF_CLIENT_AT_INDICATOR_COUNT 20
     91 
     92 /* AT command parsing control block */
     93 typedef struct
     94 {
     95     char                    buf[BTA_HF_CLIENT_AT_PARSER_MAX_LEN + 1]; /* extra byte to always have \0 at the end */
     96     unsigned int            offset;
     97     tBTA_HF_CLIENT_AT_CMD   current_cmd;
     98     tBTA_HF_CLIENT_AT_QCMD  *queued_cmd;
     99     alarm_t                 *resp_timer;    /* AT response timer */
    100     alarm_t                 *hold_timer;    /* AT hold timer */
    101 
    102     /* CIND: lookup table to store the sequence of incoming indicators and their values
    103        so when their values come later, we know which value in sequence match certain indicator */
    104     int                     indicator_lookup[BTA_HF_CLIENT_AT_INDICATOR_COUNT];
    105 
    106 } tBTA_HF_CLIENT_AT_CB;
    107 
    108 /*****************************************************************************
    109 **  Functions
    110 *****************************************************************************/
    111 
    112 void bta_hf_client_at_init(void);
    113 void bta_hf_client_at_reset(void);
    114