xref: /btstack/src/classic/hfp_gsm_model.h (revision d210d9c4c04e085d9ff7b69e25d289dddd16b904)
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