15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Copyright (C) 2004-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 * Interface file for BTA AG AT command interpreter. 225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef BTA_AG_AT_H 255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTA_AG_AT_H 265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/***************************************************************************** 288af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Constants 298af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ****************************************************************************/ 305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AT command argument capabilities */ 32cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_AG_AT_NONE 0x01 /* no argument */ 33cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_AG_AT_SET 0x02 /* set value */ 34cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_AG_AT_READ 0x04 /* read value */ 35cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_AG_AT_TEST 0x08 /* test value range */ 36cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_AG_AT_FREE 0x10 /* freeform argument */ 375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AT command argument format */ 39cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_AG_AT_STR 0 /* string */ 40cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_AG_AT_INT 1 /* integer */ 415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/***************************************************************************** 438af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Data types 448af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ****************************************************************************/ 455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AT command table element */ 47cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 48cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson const char* p_cmd; /* AT command string */ 49cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson size_t command_id; /* passed to the callback on p_cmd match */ 50cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t arg_type; /* allowable argument type syntax */ 51cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t fmt; /* whether arg is int or string */ 52cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t min; /* minimum value for int arg */ 53cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson int16_t max; /* maximum value for int arg */ 545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_AG_AT_CMD; 555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* callback function executed when command is parsed */ 57cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef void(tBTA_AG_AT_CMD_CBACK)(void* p_user, uint16_t command_id, 58cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t arg_type, char* p_arg, 59cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson int16_t int_arg); 605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* callback function executed to send "ERROR" result code */ 62cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef void(tBTA_AG_AT_ERR_CBACK)(void* p_user, bool unknown, char* p_arg); 635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AT command parsing control block */ 65cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 66cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_AG_AT_CMD* p_at_tbl; /* AT command table */ 67cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_AG_AT_CMD_CBACK* p_cmd_cback; /* command callback */ 68cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_AG_AT_ERR_CBACK* p_err_cback; /* error callback */ 69cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson void* p_user; /* user-defined data */ 70cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson char* p_cmd_buf; /* temp parsing buffer */ 71cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t cmd_pos; /* position in temp buffer */ 72cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t cmd_max_len; /* length of temp buffer to allocate */ 73cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t state; /* parsing state */ 745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_AG_AT_CB; 755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/***************************************************************************** 778af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function prototypes 788af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ****************************************************************************/ 795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/***************************************************************************** 818af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 828af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function bta_ag_at_init 838af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 848af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description Initialize the AT command parser control block. 858af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 868af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 878af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 888af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 898af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ****************************************************************************/ 90cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_ag_at_init(tBTA_AG_AT_CB* p_cb); 915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/***************************************************************************** 938af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 948af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function bta_ag_at_reinit 958af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 968af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description Re-initialize the AT command parser control block. This 978af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * function resets the AT command parser state and frees 988af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * any GKI buffer. 998af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1008af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1018af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 1028af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1038af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ****************************************************************************/ 104cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_ag_at_reinit(tBTA_AG_AT_CB* p_cb); 1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/***************************************************************************** 1078af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1088af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function bta_ag_at_parse 1098af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1108af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description Parse AT commands. This function will take the input 1118af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * character string and parse it for AT commands according to 1128af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * the AT command table passed in the control block. 1138af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1148af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1158af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 1168af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1178af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ****************************************************************************/ 118cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_ag_at_parse(tBTA_AG_AT_CB* p_cb, char* p_buf, uint16_t len); 1195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 120b2a292b5d8df2f359c38b0787bc01181225a9bc9Pavlin Radoslavov#endif /* BTA_AG_AT_H */ 121