174386ee0SMatthias Ringwald /* 274386ee0SMatthias Ringwald * Copyright (C) 2014 BlueKitchen GmbH 374386ee0SMatthias Ringwald * 474386ee0SMatthias Ringwald * Redistribution and use in source and binary forms, with or without 574386ee0SMatthias Ringwald * modification, are permitted provided that the following conditions 674386ee0SMatthias Ringwald * are met: 774386ee0SMatthias Ringwald * 874386ee0SMatthias Ringwald * 1. Redistributions of source code must retain the above copyright 974386ee0SMatthias Ringwald * notice, this list of conditions and the following disclaimer. 1074386ee0SMatthias Ringwald * 2. Redistributions in binary form must reproduce the above copyright 1174386ee0SMatthias Ringwald * notice, this list of conditions and the following disclaimer in the 1274386ee0SMatthias Ringwald * documentation and/or other materials provided with the distribution. 1374386ee0SMatthias Ringwald * 3. Neither the name of the copyright holders nor the names of 1474386ee0SMatthias Ringwald * contributors may be used to endorse or promote products derived 1574386ee0SMatthias Ringwald * from this software without specific prior written permission. 1674386ee0SMatthias Ringwald * 4. Any redistribution, use, or modification is done solely for 1774386ee0SMatthias Ringwald * personal benefit and not for any commercial purpose or for 1874386ee0SMatthias Ringwald * monetary gain. 1974386ee0SMatthias Ringwald * 2074386ee0SMatthias Ringwald * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS 2174386ee0SMatthias Ringwald * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2274386ee0SMatthias Ringwald * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 2374386ee0SMatthias Ringwald * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS 2474386ee0SMatthias Ringwald * RINGWALD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 2574386ee0SMatthias Ringwald * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 2674386ee0SMatthias Ringwald * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 2774386ee0SMatthias Ringwald * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 2874386ee0SMatthias Ringwald * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 2974386ee0SMatthias Ringwald * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 3074386ee0SMatthias Ringwald * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3174386ee0SMatthias Ringwald * SUCH DAMAGE. 3274386ee0SMatthias Ringwald * 3374386ee0SMatthias Ringwald * Please inquire about commercial licensing options at 3474386ee0SMatthias Ringwald * [email protected] 3574386ee0SMatthias Ringwald * 3674386ee0SMatthias Ringwald */ 3774386ee0SMatthias Ringwald 3874386ee0SMatthias Ringwald // ***************************************************************************** 3974386ee0SMatthias Ringwald // 4074386ee0SMatthias Ringwald // GSM model (!! UNDER DEVELOPMENT !!) 4174386ee0SMatthias Ringwald // 4274386ee0SMatthias Ringwald // ***************************************************************************** 4374386ee0SMatthias Ringwald 4474386ee0SMatthias Ringwald 4574386ee0SMatthias Ringwald #ifndef BTSTACK_HFP_GSM_MODEL_H 4674386ee0SMatthias Ringwald #define BTSTACK_HFP_GSM_MODEL_H 4774386ee0SMatthias Ringwald 4874386ee0SMatthias Ringwald #include "hci.h" 4974386ee0SMatthias Ringwald #include "sdp_query_rfcomm.h" 5074386ee0SMatthias Ringwald #include "hfp.h" 5174386ee0SMatthias Ringwald 5274386ee0SMatthias Ringwald #if defined __cplusplus 5374386ee0SMatthias Ringwald extern "C" { 5474386ee0SMatthias Ringwald #endif 5574386ee0SMatthias Ringwald 5674386ee0SMatthias Ringwald /* API_START */ 5774386ee0SMatthias Ringwald 5874386ee0SMatthias Ringwald /** 5974386ee0SMatthias Ringwald * @brief 6074386ee0SMatthias Ringwald */ 6174386ee0SMatthias Ringwald 6274386ee0SMatthias Ringwald hfp_callheld_status_t hfp_gsm_callheld_status(); 6374386ee0SMatthias Ringwald hfp_call_status_t hfp_gsm_call_status(); 6474386ee0SMatthias Ringwald hfp_callsetup_status_t hfp_gsm_callsetup_status(); 6574386ee0SMatthias Ringwald 66*d210d9c4SMatthias Ringwald int hfp_gsm_call_possible(void); 67*d210d9c4SMatthias Ringwald 68*d210d9c4SMatthias Ringwald void hfp_gsm_init(void); 69*d210d9c4SMatthias Ringwald 7074386ee0SMatthias Ringwald void hfp_gsm_handle_event(hfp_ag_call_event_t event); 7174386ee0SMatthias Ringwald 7274386ee0SMatthias Ringwald // /** 7374386ee0SMatthias Ringwald // * @brief 7474386ee0SMatthias Ringwald // */ 7574386ee0SMatthias Ringwald // void hfp_gsm_incoming_call(void); 7674386ee0SMatthias Ringwald 7774386ee0SMatthias Ringwald 7874386ee0SMatthias Ringwald // / 7974386ee0SMatthias Ringwald // /** 8074386ee0SMatthias Ringwald // * @brief Report the change in AG's call status. 8174386ee0SMatthias Ringwald // * Call status: 8274386ee0SMatthias Ringwald // * - 0 = No calls (held or active) 8374386ee0SMatthias Ringwald // * - 1 = Call is present (active or held) 8474386ee0SMatthias Ringwald // */ 8574386ee0SMatthias Ringwald // void hfp_gsm_transfer_call_status(bd_addr_t bd_addr, hfp_call_status_t status); 8674386ee0SMatthias Ringwald 8774386ee0SMatthias Ringwald // /** 8874386ee0SMatthias Ringwald // * @brief Report the change in AG's call setup status. 8974386ee0SMatthias Ringwald // * Call setup status: 9074386ee0SMatthias Ringwald // * - 0 = No call setup in progress 9174386ee0SMatthias Ringwald // * - 1 = Incoming call setup in progress 9274386ee0SMatthias Ringwald // * - 2 = Outgoing call setup in dialing state 9374386ee0SMatthias Ringwald // * - 3 = Outgoing call setup in alerting state 9474386ee0SMatthias Ringwald // */ 9574386ee0SMatthias Ringwald // void hfp_gsm_transfer_callsetup_status(bd_addr_t bd_addr, hfp_callsetup_status_t status); 9674386ee0SMatthias Ringwald 9774386ee0SMatthias Ringwald // /** 9874386ee0SMatthias Ringwald // * @brief Report the change in AG's held call status. 9974386ee0SMatthias Ringwald // * Held call status: 10074386ee0SMatthias Ringwald // * - 0 = No calls held 10174386ee0SMatthias Ringwald // * - 1 = Call is placed on hold or active/held calls are swapped 10274386ee0SMatthias Ringwald // * - 2 = Call on hold, no active calls 10374386ee0SMatthias Ringwald // */ 10474386ee0SMatthias Ringwald // void hfp_gsm_transfer_callheld_status(bd_addr_t bd_addr, hfp_callheld_status_t status); 10574386ee0SMatthias Ringwald 10674386ee0SMatthias Ringwald // /** 10774386ee0SMatthias Ringwald // * @brief Enable in-band ring tone 10874386ee0SMatthias Ringwald // */ 10974386ee0SMatthias Ringwald // void hfp_gsm_set_use_in_band_ring_tone(int use_in_band_ring_tone); 11074386ee0SMatthias Ringwald 11174386ee0SMatthias Ringwald 11274386ee0SMatthias Ringwald 11374386ee0SMatthias Ringwald // /** 11474386ee0SMatthias Ringwald // * @brief number is stored. 11574386ee0SMatthias Ringwald // */ 11674386ee0SMatthias Ringwald // void hfp_gsm_set_clip(uint8_t type, const char * number); 11774386ee0SMatthias Ringwald 11874386ee0SMatthias Ringwald // /** 11974386ee0SMatthias Ringwald // * @brief 12074386ee0SMatthias Ringwald // */ 12174386ee0SMatthias Ringwald // void hfp_gsm_outgoing_call_rejected(void); 12274386ee0SMatthias Ringwald 12374386ee0SMatthias Ringwald // /** 12474386ee0SMatthias Ringwald // * @brief 12574386ee0SMatthias Ringwald // */ 12674386ee0SMatthias Ringwald // void hfp_gsm_outgoing_call_accepted(void); 12774386ee0SMatthias Ringwald 12874386ee0SMatthias Ringwald // /** 12974386ee0SMatthias Ringwald // * @brief 13074386ee0SMatthias Ringwald // */ 13174386ee0SMatthias Ringwald // void hfp_gsm_outgoing_call_ringing(void); 13274386ee0SMatthias Ringwald 13374386ee0SMatthias Ringwald // /** 13474386ee0SMatthias Ringwald // * @brief 13574386ee0SMatthias Ringwald // */ 13674386ee0SMatthias Ringwald // void hfp_gsm_outgoing_call_established(void); 13774386ee0SMatthias Ringwald 13874386ee0SMatthias Ringwald // * 13974386ee0SMatthias Ringwald // * @brief 14074386ee0SMatthias Ringwald 14174386ee0SMatthias Ringwald // void hfp_gsm_call_dropped(void); 14274386ee0SMatthias Ringwald 14374386ee0SMatthias Ringwald // /** 14474386ee0SMatthias Ringwald // * @brief 14574386ee0SMatthias Ringwald // */ 14674386ee0SMatthias Ringwald // void hfp_gsm_answer_incoming_call(void); 14774386ee0SMatthias Ringwald 14874386ee0SMatthias Ringwald // /** 14974386ee0SMatthias Ringwald // * @brief 15074386ee0SMatthias Ringwald // */ 15174386ee0SMatthias Ringwald // void hfp_gsm_join_held_call(void); 15274386ee0SMatthias Ringwald 15374386ee0SMatthias Ringwald // /** 15474386ee0SMatthias Ringwald // * @brief 15574386ee0SMatthias Ringwald // */ 15674386ee0SMatthias Ringwald // void hfp_gsm_terminate_call(void); 15774386ee0SMatthias Ringwald 15874386ee0SMatthias Ringwald // /* 15974386ee0SMatthias Ringwald // * @brief 16074386ee0SMatthias Ringwald // */ 16174386ee0SMatthias Ringwald // void hfp_gsm_set_registration_status(int status); 16274386ee0SMatthias Ringwald 16374386ee0SMatthias Ringwald // /* 16474386ee0SMatthias Ringwald // * @brief 16574386ee0SMatthias Ringwald // */ 16674386ee0SMatthias Ringwald // void hfp_gsm_set_signal_strength(int strength); 16774386ee0SMatthias Ringwald 16874386ee0SMatthias Ringwald // /* 16974386ee0SMatthias Ringwald // * @brief 17074386ee0SMatthias Ringwald // */ 17174386ee0SMatthias Ringwald // void hfp_gsm_set_roaming_status(int status); 17274386ee0SMatthias Ringwald 17374386ee0SMatthias Ringwald 17474386ee0SMatthias Ringwald // /* 17574386ee0SMatthias Ringwald // * @brief 17674386ee0SMatthias Ringwald // */ 17774386ee0SMatthias Ringwald // void hfp_gsm_activate_voice_recognition(bd_addr_t bd_addr, int activate); 17874386ee0SMatthias Ringwald 17974386ee0SMatthias Ringwald 18074386ee0SMatthias Ringwald // /* 18174386ee0SMatthias Ringwald // * @brief 18274386ee0SMatthias Ringwald // */ 18374386ee0SMatthias Ringwald // void hfp_gsm_send_phone_number_for_voice_tag(bd_addr_t bd_addr, const char * number); 18474386ee0SMatthias Ringwald 18574386ee0SMatthias Ringwald // /* 18674386ee0SMatthias Ringwald // * @brief 18774386ee0SMatthias Ringwald // */ 18874386ee0SMatthias Ringwald // void hfp_gsm_reject_phone_number_for_voice_tag(bd_addr_t bd_addr); 18974386ee0SMatthias Ringwald 19074386ee0SMatthias Ringwald // /* 19174386ee0SMatthias Ringwald // * @brief 19274386ee0SMatthias Ringwald // */ 19374386ee0SMatthias Ringwald // void hfp_gsm_send_dtmf_code_done(bd_addr_t bd_addr); 19474386ee0SMatthias Ringwald 19574386ee0SMatthias Ringwald // /* 19674386ee0SMatthias Ringwald // * @brief 19774386ee0SMatthias Ringwald // */ 19874386ee0SMatthias Ringwald // void hfp_gsm_set_subcriber_number_information(hfp_phone_number_t * numbers, int numbers_count); 19974386ee0SMatthias Ringwald 20074386ee0SMatthias Ringwald // /* 20174386ee0SMatthias Ringwald // * @brief 20274386ee0SMatthias Ringwald // */ 20374386ee0SMatthias Ringwald // void hfp_gsm_send_current_call_status(bd_addr_t bd_addr, int idx, hfp_enhanced_call_dir_t dir, 20474386ee0SMatthias Ringwald // hfp_enhanced_call_status_t status, hfp_enhanced_call_mode_t mode, 20574386ee0SMatthias Ringwald // hfp_enhanced_call_mpty_t mpty, uint8_t type, const char * number); 20674386ee0SMatthias Ringwald 20774386ee0SMatthias Ringwald // /* 20874386ee0SMatthias Ringwald // * @brief 20974386ee0SMatthias Ringwald // */ 21074386ee0SMatthias Ringwald // void hfp_gsm_send_current_call_status_done(bd_addr_t bd_addr); 21174386ee0SMatthias Ringwald 21274386ee0SMatthias Ringwald // /* 21374386ee0SMatthias Ringwald // * @brief 21474386ee0SMatthias Ringwald // */ 21574386ee0SMatthias Ringwald // void hfp_gsm_hold_incoming_call(void); 21674386ee0SMatthias Ringwald 21774386ee0SMatthias Ringwald // /* 21874386ee0SMatthias Ringwald // * @brief 21974386ee0SMatthias Ringwald // */ 22074386ee0SMatthias Ringwald // void hfp_gsm_accept_held_incoming_call(void); 22174386ee0SMatthias Ringwald 22274386ee0SMatthias Ringwald // /* 22374386ee0SMatthias Ringwald // * @brief 22474386ee0SMatthias Ringwald // */ 22574386ee0SMatthias Ringwald // void hfp_gsm_reject_held_incoming_call(void); 22674386ee0SMatthias Ringwald 22774386ee0SMatthias Ringwald /* API_END */ 22874386ee0SMatthias Ringwald 22974386ee0SMatthias Ringwald #if defined __cplusplus 23074386ee0SMatthias Ringwald } 23174386ee0SMatthias Ringwald #endif 23274386ee0SMatthias Ringwald 23374386ee0SMatthias Ringwald #endif