Home | History | Annotate | Download | only in ag
      1 /******************************************************************************
      2  *
      3  *  Copyright 2004-2012 Broadcom Corporation
      4  *
      5  *  Licensed under the Apache License, Version 2.0 (the "License");
      6  *  you may not use this file except in compliance with the License.
      7  *  You may obtain a copy of the License at:
      8  *
      9  *  http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  *  Unless required by applicable law or agreed to in writing, software
     12  *  distributed under the License is distributed on an "AS IS" BASIS,
     13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  *  See the License for the specific language governing permissions and
     15  *  limitations under the License.
     16  *
     17  ******************************************************************************/
     18 
     19 /******************************************************************************
     20  *
     21  *  Interface file for BTA AG AT command interpreter.
     22  *
     23  ******************************************************************************/
     24 #ifndef BTA_AG_AT_H
     25 #define BTA_AG_AT_H
     26 
     27 /*****************************************************************************
     28  *  Constants
     29  ****************************************************************************/
     30 
     31 /* AT command argument capabilities */
     32 #define BTA_AG_AT_NONE 0x01 /* no argument */
     33 #define BTA_AG_AT_SET 0x02  /* set value */
     34 #define BTA_AG_AT_READ 0x04 /* read value */
     35 #define BTA_AG_AT_TEST 0x08 /* test value range */
     36 #define BTA_AG_AT_FREE 0x10 /* freeform argument */
     37 
     38 /* AT command argument format */
     39 #define BTA_AG_AT_STR 0 /* string */
     40 #define BTA_AG_AT_INT 1 /* integer */
     41 
     42 /*****************************************************************************
     43  *  Data types
     44  ****************************************************************************/
     45 
     46 /* AT command table element */
     47 typedef struct {
     48   const char* p_cmd; /* AT command string */
     49   size_t command_id; /* passed to the callback on p_cmd match */
     50   uint8_t arg_type;  /* allowable argument type syntax */
     51   uint8_t fmt;       /* whether arg is int or string */
     52   uint8_t min;       /* minimum value for int arg */
     53   int16_t max;       /* maximum value for int arg */
     54 } tBTA_AG_AT_CMD;
     55 
     56 /* callback function executed when command is parsed */
     57 struct tBTA_AG_SCB;
     58 typedef void(tBTA_AG_AT_CMD_CBACK)(tBTA_AG_SCB* p_user, uint16_t command_id,
     59                                    uint8_t arg_type, char* p_arg,
     60                                    int16_t int_arg);
     61 
     62 /* callback function executed to send "ERROR" result code */
     63 typedef void(tBTA_AG_AT_ERR_CBACK)(tBTA_AG_SCB* p_user, bool unknown,
     64                                    const char* p_arg);
     65 
     66 /* AT command parsing control block */
     67 typedef struct {
     68   const tBTA_AG_AT_CMD* p_at_tbl;    /* AT command table */
     69   tBTA_AG_AT_CMD_CBACK* p_cmd_cback; /* command callback */
     70   tBTA_AG_AT_ERR_CBACK* p_err_cback; /* error callback */
     71   void* p_user;                      /* user-defined data */
     72   char* p_cmd_buf;                   /* temp parsing buffer */
     73   uint16_t cmd_pos;                  /* position in temp buffer */
     74   uint16_t cmd_max_len;              /* length of temp buffer to allocate */
     75   uint8_t state;                     /* parsing state */
     76 } tBTA_AG_AT_CB;
     77 
     78 /*****************************************************************************
     79  *  Function prototypes
     80  ****************************************************************************/
     81 
     82 /*****************************************************************************
     83  *
     84  * Function         bta_ag_at_init
     85  *
     86  * Description      Initialize the AT command parser control block.
     87  *
     88  *
     89  * Returns          void
     90  *
     91  ****************************************************************************/
     92 extern void bta_ag_at_init(tBTA_AG_AT_CB* p_cb);
     93 
     94 /*****************************************************************************
     95  *
     96  * Function         bta_ag_at_reinit
     97  *
     98  * Description      Re-initialize the AT command parser control block.  This
     99  *                  function resets the AT command parser state and frees
    100  *                  any GKI buffer.
    101  *
    102  *
    103  * Returns          void
    104  *
    105  ****************************************************************************/
    106 extern void bta_ag_at_reinit(tBTA_AG_AT_CB* p_cb);
    107 
    108 /*****************************************************************************
    109  *
    110  * Function         bta_ag_at_parse
    111  *
    112  * Description      Parse AT commands.  This function will take the input
    113  *                  character string and parse it for AT commands according to
    114  *                  the AT command table passed in the control block.
    115  *
    116  *
    117  * Returns          void
    118  *
    119  ****************************************************************************/
    120 extern void bta_ag_at_parse(tBTA_AG_AT_CB* p_cb, char* p_buf, uint16_t len);
    121 
    122 #endif /* BTA_AG_AT_H */
    123