1 /* Copyright (c) 2013 The Chromium OS Authors. All rights reserved. 2 * Use of this source code is governed by a BSD-style license that can be 3 * found in the LICENSE file. 4 */ 5 6 #ifndef CRAS_HFP_SLC_H_ 7 #define CRAS_HFP_SLC_H_ 8 9 struct hfp_slc_handle; 10 11 /* Callback to call when service level connection initialized. */ 12 typedef int (*hfp_slc_init_cb)(struct hfp_slc_handle *handle); 13 14 /* Callback to call when service level connection disconnected. */ 15 typedef int (*hfp_slc_disconnect_cb)(struct hfp_slc_handle *handle); 16 17 /* Creates an hfp_slc_handle to poll the RFCOMM file descriptor 18 * to read and handle received AT commands. 19 * Args: 20 * fd - the rfcomm fd used to initialize service level connection 21 * is_hsp - if the slc handle is created for headset profile 22 * device - The bt device associated with the created slc object 23 * init_cb - the callback function to be triggered when a service level 24 * connection is initialized. 25 * disconnect_cb - the callback function to be triggered when the service 26 * level connection is disconnected. 27 */ 28 struct hfp_slc_handle *hfp_slc_create(int fd, int is_hsp, 29 struct cras_bt_device *device, 30 hfp_slc_init_cb init_cb, 31 hfp_slc_disconnect_cb disconnect_cb); 32 33 /* Destroys an hfp_slc_handle. */ 34 void hfp_slc_destroy(struct hfp_slc_handle *handle); 35 36 /* Sets the call status to notify handsfree device. */ 37 int hfp_set_call_status(struct hfp_slc_handle *handle, int call); 38 39 /* Fakes the incoming call event for qualification test. */ 40 int hfp_event_incoming_call(struct hfp_slc_handle *handle, 41 const char *number, 42 int type); 43 44 /* Handles the call status changed event. 45 * AG will send notification to HF accordingly. */ 46 int hfp_event_update_call(struct hfp_slc_handle *handle); 47 48 /* Handles the call setup status changed event. 49 * AG will send notification to HF accordingly. */ 50 int hfp_event_update_callsetup(struct hfp_slc_handle *handle); 51 52 /* Handles the call held status changed event. 53 * AG will send notification to HF accordingly. */ 54 int hfp_event_update_callheld(struct hfp_slc_handle *handle); 55 56 /* Sets battery level which is required for qualification test. */ 57 int hfp_event_set_battery(struct hfp_slc_handle *handle, int value); 58 59 /* Sets signal strength which is required for qualification test. */ 60 int hfp_event_set_signal(struct hfp_slc_handle *handle, int value); 61 62 /* Sets service availability which is required for qualification test. */ 63 int hfp_event_set_service(struct hfp_slc_handle *handle, int value); 64 65 /* Sets speaker gain value to headsfree device. */ 66 int hfp_event_speaker_gain(struct hfp_slc_handle *handle, int gain); 67 68 #endif /* CRAS_HFP_SLC_H_ */ 69