mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	Query and make use of the current configuration.
This commit is contained in:
		
							parent
							
								
									071b3e7fc5
								
							
						
					
					
						commit
						168c741b64
					
				
					 1 changed files with 16 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -275,7 +275,7 @@ static ssize_t service_expect(struct userdata*u, bt_audio_msg_header_t *rsp, siz
 | 
			
		|||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int parse_caps(struct userdata *u, const struct bt_get_capabilities_rsp *rsp) {
 | 
			
		||||
static int parse_caps(struct userdata *u, uint8_t seid, const struct bt_get_capabilities_rsp *rsp) {
 | 
			
		||||
    uint16_t bytes_left;
 | 
			
		||||
    const codec_capabilities_t *codec;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -306,6 +306,9 @@ static int parse_caps(struct userdata *u, const struct bt_get_capabilities_rsp *
 | 
			
		|||
 | 
			
		||||
        pa_assert(codec->type == BT_HFP_CODEC_PCM);
 | 
			
		||||
 | 
			
		||||
        if (codec->configured && seid == 0)
 | 
			
		||||
            return codec->seid;
 | 
			
		||||
 | 
			
		||||
        memcpy(&u->hsp.pcm_capabilities, codec, sizeof(u->hsp.pcm_capabilities));
 | 
			
		||||
 | 
			
		||||
    } else if (u->profile == PROFILE_A2DP) {
 | 
			
		||||
| 
						 | 
				
			
			@ -323,19 +326,23 @@ static int parse_caps(struct userdata *u, const struct bt_get_capabilities_rsp *
 | 
			
		|||
 | 
			
		||||
        pa_assert(codec->type == BT_A2DP_SBC_SINK);
 | 
			
		||||
 | 
			
		||||
        if (codec->configured && seid == 0)
 | 
			
		||||
            return codec->seid;
 | 
			
		||||
 | 
			
		||||
        memcpy(&u->a2dp.sbc_capabilities, codec, sizeof(u->a2dp.sbc_capabilities));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int get_caps(struct userdata *u) {
 | 
			
		||||
static int get_caps(struct userdata *u, uint8_t seid) {
 | 
			
		||||
    union {
 | 
			
		||||
        struct bt_get_capabilities_req getcaps_req;
 | 
			
		||||
        struct bt_get_capabilities_rsp getcaps_rsp;
 | 
			
		||||
        bt_audio_error_t error;
 | 
			
		||||
        uint8_t buf[BT_SUGGESTED_BUFFER_SIZE];
 | 
			
		||||
    } msg;
 | 
			
		||||
    int ret;
 | 
			
		||||
 | 
			
		||||
    pa_assert(u);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -343,6 +350,7 @@ static int get_caps(struct userdata *u) {
 | 
			
		|||
    msg.getcaps_req.h.type = BT_REQUEST;
 | 
			
		||||
    msg.getcaps_req.h.name = BT_GET_CAPABILITIES;
 | 
			
		||||
    msg.getcaps_req.h.length = sizeof(msg.getcaps_req);
 | 
			
		||||
    msg.getcaps_req.seid = seid;
 | 
			
		||||
 | 
			
		||||
    pa_strlcpy(msg.getcaps_req.object, u->path, sizeof(msg.getcaps_req.object));
 | 
			
		||||
    if (u->profile == PROFILE_A2DP)
 | 
			
		||||
| 
						 | 
				
			
			@ -359,7 +367,11 @@ static int get_caps(struct userdata *u) {
 | 
			
		|||
    if (service_expect(u, &msg.getcaps_rsp.h, sizeof(msg), BT_GET_CAPABILITIES, 0) < 0)
 | 
			
		||||
        return -1;
 | 
			
		||||
 | 
			
		||||
    return parse_caps(u, &msg.getcaps_rsp);
 | 
			
		||||
    ret = parse_caps(u, seid, &msg.getcaps_rsp);
 | 
			
		||||
    if (ret <= 0)
 | 
			
		||||
        return ret;
 | 
			
		||||
 | 
			
		||||
    return get_caps(u, ret);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static uint8_t a2dp_default_bitpool(uint8_t freq, uint8_t mode) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1575,7 +1587,7 @@ static int init_bt(struct userdata *u) {
 | 
			
		|||
static int setup_bt(struct userdata *u) {
 | 
			
		||||
    pa_assert(u);
 | 
			
		||||
 | 
			
		||||
    if (get_caps(u) < 0)
 | 
			
		||||
    if (get_caps(u, 0) < 0)
 | 
			
		||||
        return -1;
 | 
			
		||||
 | 
			
		||||
    pa_log_debug("Got device capabilities");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue