Home | History | Annotate | Download | only in sdp

Lines Matching refs:p_ccb

55 static void process_service_search (tCONN_CB *p_ccb, UINT16 trans_num,
59 static void process_service_attr_req (tCONN_CB *p_ccb, UINT16 trans_num,
63 static void process_service_search_attr_req (tCONN_CB *p_ccb, UINT16 trans_num,
117 void sdp_server_handle_client_req (tCONN_CB *p_ccb, BT_HDR *p_msg)
126 alarm_set_on_queue(p_ccb->sdp_conn_timer, SDP_INACT_TIMEOUT_MS,
127 sdp_conn_timer_timeout, p_ccb, btu_general_alarm_queue);
138 sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_PDU_SIZE, SDP_TEXT_BAD_HEADER);
145 process_service_search (p_ccb, trans_num, param_len, p_req, p_req_end);
149 process_service_attr_req (p_ccb, trans_num, param_len, p_req, p_req_end);
153 process_service_search_attr_req (p_ccb, trans_num, param_len, p_req, p_req_end);
157 sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, SDP_TEXT_BAD_PDU);
176 static void process_service_search (tCONN_CB *p_ccb, UINT16 trans_num,
193 sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, SDP_TEXT_BAD_UUID_LIST);
206 sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, SDP_TEXT_BAD_MAX_RECORDS_LIST);
227 sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_CONT_STATE,
233 if (cont_offset != p_ccb->cont_offset)
235 sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_CONT_STATE,
246 p_ccb->cont_offset = 0;
250 cur_handles = (UINT16)((p_ccb->rem_mtu_size - SDP_MAX_SERVICE_RSPHDR_LEN) / 4);
256 p_ccb->cont_offset += cur_handles;
286 UINT16_TO_BE_STREAM (p_rsp, p_ccb->cont_offset);
300 L2CA_DataWrite (p_ccb->connection_id, p_buf);
315 static void process_service_attr_req (tCONN_CB *p_ccb, UINT16 trans_num,
335 sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_SERV_REC_HDL, SDP_TEXT_BAD_HANDLE);
342 if (max_list_len > (p_ccb->rem_mtu_size - SDP_MAX_ATTR_RSPHDR_LEN))
343 max_list_len = p_ccb->rem_mtu_size - SDP_MAX_ATTR_RSPHDR_LEN;
349 sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, SDP_TEXT_BAD_ATTR_LIST);
359 sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_SERV_REC_HDL, SDP_TEXT_BAD_HANDLE);
364 osi_free(p_ccb->rsp_list);
365 p_ccb->rsp_list = (UINT8 *)osi_malloc(max_list_len);
370 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE,
376 if (cont_offset != p_ccb->cont_offset) {
377 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE,
384 p_rsp = &p_ccb->rsp_list[0];
385 attr_seq.attr_entry[p_ccb->cont_info.next_attr_index].start =
386 p_ccb->cont_info.next_attr_start_id;
388 p_ccb->cont_offset = 0;
389 p_rsp = &p_ccb->rsp_list[3]; /* Leave space for data elem descr */
391 /* Reset continuation parameters in p_ccb */
392 p_ccb->cont_info.prev_sdp_rec = NULL;
393 p_ccb->cont_info.next_attr_index = 0;
394 p_ccb->cont_info.attr_offset = 0;
398 for (xx = p_ccb->cont_info.next_attr_index; xx < attr_seq.num_attr; xx++)
405 rem_len = max_list_len - (INT16) (p_rsp - &p_ccb->rsp_list[0]);
410 p_ccb->cont_info.next_attr_index = xx;
411 p_ccb->cont_info.next_attr_start_id = p_attr->id;
417 if (p_ccb->cont_info.attr_offset)
420 &p_ccb->cont_info.attr_offset);
423 if (p_ccb->cont_info.attr_offset != attr_len)
426 p_ccb->cont_info.attr_offset = 0; /* reset attr_offset */
433 sdpu_build_n_send_error (p_ccb, trans_num, SDP_NO_RESOURCES, NULL);
439 &p_ccb->cont_info.attr_offset);
441 p_ccb->cont_info.next_attr_index = xx;
442 p_ccb->cont_info.next_attr_start_id = p_attr->id;
461 p_ccb->cont_info.next_attr_index = 0;
463 len_to_send = (UINT16) (p_rsp - &p_ccb->rsp_list[0]);
468 p_ccb->list_len = sdpu_get_attrib_seq_len(p_rec, &attr_seq_sav) + 3;
470 if (p_ccb->list_len > 255)
472 p_ccb->rsp_list[0] = (UINT8) ((DATA_ELE_SEQ_DESC_TYPE << 3) | SIZE_IN_NEXT_WORD);
473 p_ccb->rsp_list[1] = (UINT8) ((p_ccb->list_len - 3) >> 8);
474 p_ccb->rsp_list[2] = (UINT8) (p_ccb->list_len - 3);
480 p_ccb->rsp_list[1] = (UINT8) ((DATA_ELE_SEQ_DESC_TYPE << 3) | SIZE_IN_NEXT_BYTE);
481 p_ccb->rsp_list[2] = (UINT8) (p_ccb->list_len - 3);
483 p_ccb->list_len--;
503 memcpy (p_rsp, &p_ccb->rsp_list[cont_offset], len_to_send);
506 p_ccb->cont_offset += len_to_send;
509 if (p_ccb->cont_offset < p_ccb->list_len)
514 UINT16_TO_BE_STREAM (p_rsp, p_ccb->cont_offset);
528 L2CA_DataWrite (p_ccb->connection_id, p_buf);
544 static void process_service_search_attr_req (tCONN_CB *p_ccb, UINT16 trans_num,
567 sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, SDP_TEXT_BAD_UUID_LIST);
574 if (max_list_len > (p_ccb->rem_mtu_size - SDP_MAX_SERVATTR_RSPHDR_LEN))
575 max_list_len = p_ccb->rem_mtu_size - SDP_MAX_SERVATTR_RSPHDR_LEN;
581 sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, SDP_TEXT_BAD_ATTR_LIST);
588 osi_free(p_ccb->rsp_list);
589 p_ccb->rsp_list = (UINT8 *)osi_malloc(max_list_len);
594 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE,
600 if (cont_offset != p_ccb->cont_offset) {
601 sdpu_build_n_send_error (p_ccb, trans_num, SDP_INVALID_CONT_STATE,
608 p_rsp = &p_ccb->rsp_list[0];
609 attr_seq.attr_entry[p_ccb->cont_info.next_attr_index].start =
610 p_ccb->cont_info.next_attr_start_id;
612 p_ccb->cont_offset = 0;
613 p_rsp = &p_ccb->rsp_list[3]; /* Leave space for data elem descr */
615 /* Reset continuation parameters in p_ccb */
616 p_ccb->cont_info.prev_sdp_rec = NULL;
617 p_ccb->cont_info.next_attr_index = 0;
618 p_ccb->cont_info.last_attr_seq_desc_sent = FALSE;
619 p_ccb->cont_info.attr_offset = 0;
623 for (p_rec = sdp_db_service_search (p_ccb->cont_info.prev_sdp_rec, &uid_seq); p_rec; p_rec = sdp_db_service_search (p_rec, &uid_seq))
627 if (p_ccb->cont_info.last_attr_seq_desc_sent == FALSE)
630 rem_len = max_list_len - (INT16) (p_rsp - &p_ccb->rsp_list[0]);
634 p_ccb->cont_info.next_attr_index = 0;
635 p_ccb->cont_info.next_attr_start_id = attr_seq.attr_entry[0].start;
642 for (xx = p_ccb->cont_info.next_attr_index; xx < attr_seq.num_attr; xx++)
649 rem_len = max_list_len - (INT16) (p_rsp - &p_ccb->rsp_list[0]);
654 p_ccb->cont_info.next_attr_index = xx;
655 p_ccb->cont_info.next_attr_start_id = p_attr->id;
662 if (p_ccb->cont_info.attr_offset)
665 &p_ccb->cont_info.attr_offset);
668 if (p_ccb->cont_info.attr_offset != attr_len)
674 p_ccb->cont_info.attr_offset = 0; /* reset attr_offset */
681 sdpu_build_n_send_error (p_ccb, trans_num, SDP_NO_RESOURCES, NULL);
687 &p_ccb->cont_info.attr_offset);
689 p_ccb->cont_info.next_attr_index = xx;
690 p_ccb->cont_info.next_attr_start_id = p_attr->id;
709 if (p_ccb->cont_info.last_attr_seq_desc_sent == FALSE)
718 p_ccb->cont_info.last_attr_seq_desc_sent = TRUE;
731 p_ccb->cont_info.next_attr_index = 0;
732 p_ccb->cont_info.prev_sdp_rec = p_rec;
733 p_ccb->cont_info.last_attr_seq_desc_sent = FALSE;
737 len_to_send = (UINT16) (p_rsp - &p_ccb->rsp_list[0]);
757 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE, NULL);
765 p_ccb->list_len = sdpu_get_list_len(&uid_seq, &attr_seq_sav) + 3;
767 if (p_ccb->list_len > 255)
769 p_ccb->rsp_list[0] = (UINT8) ((DATA_ELE_SEQ_DESC_TYPE << 3) | SIZE_IN_NEXT_WORD);
770 p_ccb->rsp_list[1] = (UINT8) ((p_ccb->list_len - 3) >> 8);
771 p_ccb->rsp_list[2] = (UINT8) (p_ccb->list_len - 3);
777 p_ccb->rsp_list[1] = (UINT8) ((DATA_ELE_SEQ_DESC_TYPE << 3) | SIZE_IN_NEXT_BYTE);
778 p_ccb->rsp_list[2] = (UINT8) (p_ccb->list_len - 3);
780 p_ccb->list_len--;
802 memcpy (p_rsp, &p_ccb->rsp_list[cont_offset], len_to_send);
805 p_ccb->cont_offset += len_to_send;
808 if (p_ccb->cont_offset < p_ccb->list_len)
813 UINT16_TO_BE_STREAM (p_rsp, p_ccb->cont_offset);
827 L2CA_DataWrite (p_ccb->connection_id, p_buf);