1*74386ee0SMatthias Ringwald /* 2*74386ee0SMatthias Ringwald * Copyright (C) 2014 BlueKitchen GmbH 3*74386ee0SMatthias Ringwald * 4*74386ee0SMatthias Ringwald * Redistribution and use in source and binary forms, with or without 5*74386ee0SMatthias Ringwald * modification, are permitted provided that the following conditions 6*74386ee0SMatthias Ringwald * are met: 7*74386ee0SMatthias Ringwald * 8*74386ee0SMatthias Ringwald * 1. Redistributions of source code must retain the above copyright 9*74386ee0SMatthias Ringwald * notice, this list of conditions and the following disclaimer. 10*74386ee0SMatthias Ringwald * 2. Redistributions in binary form must reproduce the above copyright 11*74386ee0SMatthias Ringwald * notice, this list of conditions and the following disclaimer in the 12*74386ee0SMatthias Ringwald * documentation and/or other materials provided with the distribution. 13*74386ee0SMatthias Ringwald * 3. Neither the name of the copyright holders nor the names of 14*74386ee0SMatthias Ringwald * contributors may be used to endorse or promote products derived 15*74386ee0SMatthias Ringwald * from this software without specific prior written permission. 16*74386ee0SMatthias Ringwald * 4. Any redistribution, use, or modification is done solely for 17*74386ee0SMatthias Ringwald * personal benefit and not for any commercial purpose or for 18*74386ee0SMatthias Ringwald * monetary gain. 19*74386ee0SMatthias Ringwald * 20*74386ee0SMatthias Ringwald * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS 21*74386ee0SMatthias Ringwald * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22*74386ee0SMatthias Ringwald * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 23*74386ee0SMatthias Ringwald * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS 24*74386ee0SMatthias Ringwald * RINGWALD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 25*74386ee0SMatthias Ringwald * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 26*74386ee0SMatthias Ringwald * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 27*74386ee0SMatthias Ringwald * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 28*74386ee0SMatthias Ringwald * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 29*74386ee0SMatthias Ringwald * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 30*74386ee0SMatthias Ringwald * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31*74386ee0SMatthias Ringwald * SUCH DAMAGE. 32*74386ee0SMatthias Ringwald * 33*74386ee0SMatthias Ringwald * Please inquire about commercial licensing options at 34*74386ee0SMatthias Ringwald * [email protected] 35*74386ee0SMatthias Ringwald * 36*74386ee0SMatthias Ringwald */ 37*74386ee0SMatthias Ringwald 38*74386ee0SMatthias Ringwald // ***************************************************************************** 39*74386ee0SMatthias Ringwald // 40*74386ee0SMatthias Ringwald // GSM model (!! UNDER DEVELOPMENT !!) 41*74386ee0SMatthias Ringwald // 42*74386ee0SMatthias Ringwald // ***************************************************************************** 43*74386ee0SMatthias Ringwald 44*74386ee0SMatthias Ringwald 45*74386ee0SMatthias Ringwald #ifndef BTSTACK_HFP_GSM_MODEL_H 46*74386ee0SMatthias Ringwald #define BTSTACK_HFP_GSM_MODEL_H 47*74386ee0SMatthias Ringwald 48*74386ee0SMatthias Ringwald #include "hci.h" 49*74386ee0SMatthias Ringwald #include "sdp_query_rfcomm.h" 50*74386ee0SMatthias Ringwald #include "hfp.h" 51*74386ee0SMatthias Ringwald 52*74386ee0SMatthias Ringwald #if defined __cplusplus 53*74386ee0SMatthias Ringwald extern "C" { 54*74386ee0SMatthias Ringwald #endif 55*74386ee0SMatthias Ringwald 56*74386ee0SMatthias Ringwald /* API_START */ 57*74386ee0SMatthias Ringwald 58*74386ee0SMatthias Ringwald /** 59*74386ee0SMatthias Ringwald * @brief 60*74386ee0SMatthias Ringwald */ 61*74386ee0SMatthias Ringwald 62*74386ee0SMatthias Ringwald hfp_callheld_status_t hfp_gsm_callheld_status(); 63*74386ee0SMatthias Ringwald hfp_call_status_t hfp_gsm_call_status(); 64*74386ee0SMatthias Ringwald hfp_callsetup_status_t hfp_gsm_callsetup_status(); 65*74386ee0SMatthias Ringwald 66*74386ee0SMatthias Ringwald void hfp_gsm_handle_event(hfp_ag_call_event_t event); 67*74386ee0SMatthias Ringwald 68*74386ee0SMatthias Ringwald // /** 69*74386ee0SMatthias Ringwald // * @brief 70*74386ee0SMatthias Ringwald // */ 71*74386ee0SMatthias Ringwald // void hfp_gsm_incoming_call(void); 72*74386ee0SMatthias Ringwald 73*74386ee0SMatthias Ringwald 74*74386ee0SMatthias Ringwald // / 75*74386ee0SMatthias Ringwald // /** 76*74386ee0SMatthias Ringwald // * @brief Report the change in AG's call status. 77*74386ee0SMatthias Ringwald // * Call status: 78*74386ee0SMatthias Ringwald // * - 0 = No calls (held or active) 79*74386ee0SMatthias Ringwald // * - 1 = Call is present (active or held) 80*74386ee0SMatthias Ringwald // */ 81*74386ee0SMatthias Ringwald // void hfp_gsm_transfer_call_status(bd_addr_t bd_addr, hfp_call_status_t status); 82*74386ee0SMatthias Ringwald 83*74386ee0SMatthias Ringwald // /** 84*74386ee0SMatthias Ringwald // * @brief Report the change in AG's call setup status. 85*74386ee0SMatthias Ringwald // * Call setup status: 86*74386ee0SMatthias Ringwald // * - 0 = No call setup in progress 87*74386ee0SMatthias Ringwald // * - 1 = Incoming call setup in progress 88*74386ee0SMatthias Ringwald // * - 2 = Outgoing call setup in dialing state 89*74386ee0SMatthias Ringwald // * - 3 = Outgoing call setup in alerting state 90*74386ee0SMatthias Ringwald // */ 91*74386ee0SMatthias Ringwald // void hfp_gsm_transfer_callsetup_status(bd_addr_t bd_addr, hfp_callsetup_status_t status); 92*74386ee0SMatthias Ringwald 93*74386ee0SMatthias Ringwald // /** 94*74386ee0SMatthias Ringwald // * @brief Report the change in AG's held call status. 95*74386ee0SMatthias Ringwald // * Held call status: 96*74386ee0SMatthias Ringwald // * - 0 = No calls held 97*74386ee0SMatthias Ringwald // * - 1 = Call is placed on hold or active/held calls are swapped 98*74386ee0SMatthias Ringwald // * - 2 = Call on hold, no active calls 99*74386ee0SMatthias Ringwald // */ 100*74386ee0SMatthias Ringwald // void hfp_gsm_transfer_callheld_status(bd_addr_t bd_addr, hfp_callheld_status_t status); 101*74386ee0SMatthias Ringwald 102*74386ee0SMatthias Ringwald // /** 103*74386ee0SMatthias Ringwald // * @brief Enable in-band ring tone 104*74386ee0SMatthias Ringwald // */ 105*74386ee0SMatthias Ringwald // void hfp_gsm_set_use_in_band_ring_tone(int use_in_band_ring_tone); 106*74386ee0SMatthias Ringwald 107*74386ee0SMatthias Ringwald 108*74386ee0SMatthias Ringwald 109*74386ee0SMatthias Ringwald // /** 110*74386ee0SMatthias Ringwald // * @brief number is stored. 111*74386ee0SMatthias Ringwald // */ 112*74386ee0SMatthias Ringwald // void hfp_gsm_set_clip(uint8_t type, const char * number); 113*74386ee0SMatthias Ringwald 114*74386ee0SMatthias Ringwald // /** 115*74386ee0SMatthias Ringwald // * @brief 116*74386ee0SMatthias Ringwald // */ 117*74386ee0SMatthias Ringwald // void hfp_gsm_outgoing_call_rejected(void); 118*74386ee0SMatthias Ringwald 119*74386ee0SMatthias Ringwald // /** 120*74386ee0SMatthias Ringwald // * @brief 121*74386ee0SMatthias Ringwald // */ 122*74386ee0SMatthias Ringwald // void hfp_gsm_outgoing_call_accepted(void); 123*74386ee0SMatthias Ringwald 124*74386ee0SMatthias Ringwald // /** 125*74386ee0SMatthias Ringwald // * @brief 126*74386ee0SMatthias Ringwald // */ 127*74386ee0SMatthias Ringwald // void hfp_gsm_outgoing_call_ringing(void); 128*74386ee0SMatthias Ringwald 129*74386ee0SMatthias Ringwald // /** 130*74386ee0SMatthias Ringwald // * @brief 131*74386ee0SMatthias Ringwald // */ 132*74386ee0SMatthias Ringwald // void hfp_gsm_outgoing_call_established(void); 133*74386ee0SMatthias Ringwald 134*74386ee0SMatthias Ringwald // * 135*74386ee0SMatthias Ringwald // * @brief 136*74386ee0SMatthias Ringwald 137*74386ee0SMatthias Ringwald // void hfp_gsm_call_dropped(void); 138*74386ee0SMatthias Ringwald 139*74386ee0SMatthias Ringwald // /** 140*74386ee0SMatthias Ringwald // * @brief 141*74386ee0SMatthias Ringwald // */ 142*74386ee0SMatthias Ringwald // void hfp_gsm_answer_incoming_call(void); 143*74386ee0SMatthias Ringwald 144*74386ee0SMatthias Ringwald // /** 145*74386ee0SMatthias Ringwald // * @brief 146*74386ee0SMatthias Ringwald // */ 147*74386ee0SMatthias Ringwald // void hfp_gsm_join_held_call(void); 148*74386ee0SMatthias Ringwald 149*74386ee0SMatthias Ringwald // /** 150*74386ee0SMatthias Ringwald // * @brief 151*74386ee0SMatthias Ringwald // */ 152*74386ee0SMatthias Ringwald // void hfp_gsm_terminate_call(void); 153*74386ee0SMatthias Ringwald 154*74386ee0SMatthias Ringwald // /* 155*74386ee0SMatthias Ringwald // * @brief 156*74386ee0SMatthias Ringwald // */ 157*74386ee0SMatthias Ringwald // void hfp_gsm_set_registration_status(int status); 158*74386ee0SMatthias Ringwald 159*74386ee0SMatthias Ringwald // /* 160*74386ee0SMatthias Ringwald // * @brief 161*74386ee0SMatthias Ringwald // */ 162*74386ee0SMatthias Ringwald // void hfp_gsm_set_signal_strength(int strength); 163*74386ee0SMatthias Ringwald 164*74386ee0SMatthias Ringwald // /* 165*74386ee0SMatthias Ringwald // * @brief 166*74386ee0SMatthias Ringwald // */ 167*74386ee0SMatthias Ringwald // void hfp_gsm_set_roaming_status(int status); 168*74386ee0SMatthias Ringwald 169*74386ee0SMatthias Ringwald 170*74386ee0SMatthias Ringwald // /* 171*74386ee0SMatthias Ringwald // * @brief 172*74386ee0SMatthias Ringwald // */ 173*74386ee0SMatthias Ringwald // void hfp_gsm_activate_voice_recognition(bd_addr_t bd_addr, int activate); 174*74386ee0SMatthias Ringwald 175*74386ee0SMatthias Ringwald 176*74386ee0SMatthias Ringwald // /* 177*74386ee0SMatthias Ringwald // * @brief 178*74386ee0SMatthias Ringwald // */ 179*74386ee0SMatthias Ringwald // void hfp_gsm_send_phone_number_for_voice_tag(bd_addr_t bd_addr, const char * number); 180*74386ee0SMatthias Ringwald 181*74386ee0SMatthias Ringwald // /* 182*74386ee0SMatthias Ringwald // * @brief 183*74386ee0SMatthias Ringwald // */ 184*74386ee0SMatthias Ringwald // void hfp_gsm_reject_phone_number_for_voice_tag(bd_addr_t bd_addr); 185*74386ee0SMatthias Ringwald 186*74386ee0SMatthias Ringwald // /* 187*74386ee0SMatthias Ringwald // * @brief 188*74386ee0SMatthias Ringwald // */ 189*74386ee0SMatthias Ringwald // void hfp_gsm_send_dtmf_code_done(bd_addr_t bd_addr); 190*74386ee0SMatthias Ringwald 191*74386ee0SMatthias Ringwald // /* 192*74386ee0SMatthias Ringwald // * @brief 193*74386ee0SMatthias Ringwald // */ 194*74386ee0SMatthias Ringwald // void hfp_gsm_set_subcriber_number_information(hfp_phone_number_t * numbers, int numbers_count); 195*74386ee0SMatthias Ringwald 196*74386ee0SMatthias Ringwald // /* 197*74386ee0SMatthias Ringwald // * @brief 198*74386ee0SMatthias Ringwald // */ 199*74386ee0SMatthias Ringwald // void hfp_gsm_send_current_call_status(bd_addr_t bd_addr, int idx, hfp_enhanced_call_dir_t dir, 200*74386ee0SMatthias Ringwald // hfp_enhanced_call_status_t status, hfp_enhanced_call_mode_t mode, 201*74386ee0SMatthias Ringwald // hfp_enhanced_call_mpty_t mpty, uint8_t type, const char * number); 202*74386ee0SMatthias Ringwald 203*74386ee0SMatthias Ringwald // /* 204*74386ee0SMatthias Ringwald // * @brief 205*74386ee0SMatthias Ringwald // */ 206*74386ee0SMatthias Ringwald // void hfp_gsm_send_current_call_status_done(bd_addr_t bd_addr); 207*74386ee0SMatthias Ringwald 208*74386ee0SMatthias Ringwald // /* 209*74386ee0SMatthias Ringwald // * @brief 210*74386ee0SMatthias Ringwald // */ 211*74386ee0SMatthias Ringwald // void hfp_gsm_hold_incoming_call(void); 212*74386ee0SMatthias Ringwald 213*74386ee0SMatthias Ringwald // /* 214*74386ee0SMatthias Ringwald // * @brief 215*74386ee0SMatthias Ringwald // */ 216*74386ee0SMatthias Ringwald // void hfp_gsm_accept_held_incoming_call(void); 217*74386ee0SMatthias Ringwald 218*74386ee0SMatthias Ringwald // /* 219*74386ee0SMatthias Ringwald // * @brief 220*74386ee0SMatthias Ringwald // */ 221*74386ee0SMatthias Ringwald // void hfp_gsm_reject_held_incoming_call(void); 222*74386ee0SMatthias Ringwald 223*74386ee0SMatthias Ringwald /* API_END */ 224*74386ee0SMatthias Ringwald 225*74386ee0SMatthias Ringwald #if defined __cplusplus 226*74386ee0SMatthias Ringwald } 227*74386ee0SMatthias Ringwald #endif 228*74386ee0SMatthias Ringwald 229*74386ee0SMatthias Ringwald #endif