Home | History | Annotate | Download | only in server
      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