1 /** @file 2 * @brief Handsfree Profile handling. 3 */ 4 5 /* 6 * Copyright (c) 2015-2016 Intel Corporation 7 * 8 * SPDX-License-Identifier: Apache-2.0 9 */ 10 #ifndef ZEPHYR_INCLUDE_BLUETOOTH_HFP_HF_H_ 11 #define ZEPHYR_INCLUDE_BLUETOOTH_HFP_HF_H_ 12 13 /** 14 * @brief Hands Free Profile (HFP) 15 * @defgroup bt_hfp Hands Free Profile (HFP) 16 * @ingroup bluetooth 17 * @{ 18 */ 19 20 #include <zephyr/bluetooth/bluetooth.h> 21 22 #ifdef __cplusplus 23 extern "C" { 24 #endif 25 26 /* AT Commands */ 27 enum bt_hfp_hf_at_cmd { 28 BT_HFP_HF_ATA, 29 BT_HFP_HF_AT_CHUP, 30 }; 31 32 /* 33 * Command complete types for the application 34 */ 35 #define HFP_HF_CMD_OK 0 36 #define HFP_HF_CMD_ERROR 1 37 #define HFP_HF_CMD_CME_ERROR 2 38 #define HFP_HF_CMD_UNKNOWN_ERROR 4 39 40 /** @brief HFP HF Command completion field */ 41 struct bt_hfp_hf_cmd_complete { 42 /* Command complete status */ 43 uint8_t type; 44 /* CME error number to be added */ 45 uint8_t cme; 46 }; 47 48 /** @brief HFP profile application callback */ 49 struct bt_hfp_hf_cb { 50 /** HF connected callback to application 51 * 52 * If this callback is provided it will be called whenever the 53 * connection completes. 54 * 55 * @param conn Connection object. 56 */ 57 void (*connected)(struct bt_conn *conn); 58 /** HF disconnected callback to application 59 * 60 * If this callback is provided it will be called whenever the 61 * connection gets disconnected, including when a connection gets 62 * rejected or cancelled or any error in SLC establishment. 63 * 64 * @param conn Connection object. 65 */ 66 void (*disconnected)(struct bt_conn *conn); 67 /** HF SCO/eSCO connected Callback 68 * 69 * If this callback is provided it will be called whenever the 70 * SCO/eSCO connection completes. 71 * 72 * @param conn Connection object. 73 * @param sco_conn SCO/eSCO Connection object. 74 */ 75 void (*sco_connected)(struct bt_conn *conn, struct bt_conn *sco_conn); 76 /** HF SCO/eSCO disconnected Callback 77 * 78 * If this callback is provided it will be called whenever the 79 * SCO/eSCO connection gets disconnected. 80 * 81 * @param conn Connection object. 82 * @param reason BT_HCI_ERR_* reason for the disconnection. 83 */ 84 void (*sco_disconnected)(struct bt_conn *sco_conn, uint8_t reason); 85 /** HF indicator Callback 86 * 87 * This callback provides service indicator value to the application 88 * 89 * @param conn Connection object. 90 * @param value service indicator value received from the AG. 91 */ 92 void (*service)(struct bt_conn *conn, uint32_t value); 93 /** HF indicator Callback 94 * 95 * This callback provides call indicator value to the application 96 * 97 * @param conn Connection object. 98 * @param value call indicator value received from the AG. 99 */ 100 void (*call)(struct bt_conn *conn, uint32_t value); 101 /** HF indicator Callback 102 * 103 * This callback provides call setup indicator value to the application 104 * 105 * @param conn Connection object. 106 * @param value call setup indicator value received from the AG. 107 */ 108 void (*call_setup)(struct bt_conn *conn, uint32_t value); 109 /** HF indicator Callback 110 * 111 * This callback provides call held indicator value to the application 112 * 113 * @param conn Connection object. 114 * @param value call held indicator value received from the AG. 115 */ 116 void (*call_held)(struct bt_conn *conn, uint32_t value); 117 /** HF indicator Callback 118 * 119 * This callback provides signal indicator value to the application 120 * 121 * @param conn Connection object. 122 * @param value signal indicator value received from the AG. 123 */ 124 void (*signal)(struct bt_conn *conn, uint32_t value); 125 /** HF indicator Callback 126 * 127 * This callback provides roaming indicator value to the application 128 * 129 * @param conn Connection object. 130 * @param value roaming indicator value received from the AG. 131 */ 132 void (*roam)(struct bt_conn *conn, uint32_t value); 133 /** HF indicator Callback 134 * 135 * This callback battery service indicator value to the application 136 * 137 * @param conn Connection object. 138 * @param value battery indicator value received from the AG. 139 */ 140 void (*battery)(struct bt_conn *conn, uint32_t value); 141 /** HF incoming call Ring indication callback to application 142 * 143 * If this callback is provided it will be called whenever there 144 * is an incoming call. 145 * 146 * @param conn Connection object. 147 */ 148 void (*ring_indication)(struct bt_conn *conn); 149 /** HF notify command completed callback to application 150 * 151 * The command sent from the application is notified about its status 152 * 153 * @param conn Connection object. 154 * @param cmd structure contains status of the command including cme. 155 */ 156 void (*cmd_complete_cb)(struct bt_conn *conn, 157 struct bt_hfp_hf_cmd_complete *cmd); 158 }; 159 160 /** @brief Register HFP HF profile 161 * 162 * Register Handsfree profile callbacks to monitor the state and get the 163 * required HFP details to display. 164 * 165 * @param cb callback structure. 166 * 167 * @return 0 in case of success or negative value in case of error. 168 */ 169 int bt_hfp_hf_register(struct bt_hfp_hf_cb *cb); 170 171 /** @brief Handsfree client Send AT 172 * 173 * Send specific AT commands to handsfree client profile. 174 * 175 * @param conn Connection object. 176 * @param cmd AT command to be sent. 177 * 178 * @return 0 in case of success or negative value in case of error. 179 */ 180 int bt_hfp_hf_send_cmd(struct bt_conn *conn, enum bt_hfp_hf_at_cmd cmd); 181 182 #ifdef __cplusplus 183 } 184 #endif 185 186 /** 187 * @} 188 */ 189 190 #endif /* ZEPHYR_INCLUDE_BLUETOOTH_HFP_HF_H_ */ 191