Lines Matching refs:p_ccb
54 static void process_service_search(tCONN_CB* p_ccb, uint16_t trans_num,
58 static void process_service_attr_req(tCONN_CB* p_ccb, uint16_t trans_num,
62 static void process_service_search_attr_req(tCONN_CB* p_ccb, uint16_t trans_num,
115 void sdp_server_handle_client_req(tCONN_CB* p_ccb, BT_HDR* p_msg) { in sdp_server_handle_client_req() argument
122 alarm_set_on_mloop(p_ccb->sdp_conn_timer, SDP_INACT_TIMEOUT_MS, in sdp_server_handle_client_req()
123 sdp_conn_timer_timeout, p_ccb); in sdp_server_handle_client_req()
128 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, in sdp_server_handle_client_req()
140 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, in sdp_server_handle_client_req()
147 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_PDU_SIZE, in sdp_server_handle_client_req()
154 process_service_search(p_ccb, trans_num, param_len, p_req, p_req_end); in sdp_server_handle_client_req()
158 process_service_attr_req(p_ccb, trans_num, param_len, p_req, p_req_end); in sdp_server_handle_client_req()
162 process_service_search_attr_req(p_ccb, trans_num, param_len, p_req, in sdp_server_handle_client_req()
167 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, in sdp_server_handle_client_req()
185 static void process_service_search(tCONN_CB* p_ccb, uint16_t trans_num, in process_service_search() argument
199 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, in process_service_search()
207 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, in process_service_search()
229 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE, in process_service_search()
235 if (cont_offset != p_ccb->cont_offset || num_rsp_handles < cont_offset) { in process_service_search()
236 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE, in process_service_search()
246 p_ccb->cont_offset = 0; in process_service_search()
251 (uint16_t)((p_ccb->rem_mtu_size - SDP_MAX_SERVICE_RSPHDR_LEN) / 4); in process_service_search()
257 p_ccb->cont_offset += cur_handles; in process_service_search()
287 UINT16_TO_BE_STREAM(p_rsp, p_ccb->cont_offset); in process_service_search()
299 L2CA_DataWrite(p_ccb->connection_id, p_buf); in process_service_search()
313 static void process_service_attr_req(tCONN_CB* p_ccb, uint16_t trans_num, in process_service_attr_req() argument
329 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_SERV_REC_HDL, in process_service_attr_req()
342 if (max_list_len > (p_ccb->rem_mtu_size - SDP_MAX_ATTR_RSPHDR_LEN)) in process_service_attr_req()
343 max_list_len = p_ccb->rem_mtu_size - SDP_MAX_ATTR_RSPHDR_LEN; in process_service_attr_req()
349 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, in process_service_attr_req()
359 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_SERV_REC_HDL, in process_service_attr_req()
365 sdpu_build_n_send_error(p_ccb, trans_num, SDP_ILLEGAL_PARAMETER, NULL); in process_service_attr_req()
371 osi_free(p_ccb->rsp_list); in process_service_attr_req()
372 p_ccb->rsp_list = (uint8_t*)osi_malloc(max_list_len); in process_service_attr_req()
378 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE, in process_service_attr_req()
384 if (cont_offset != p_ccb->cont_offset) { in process_service_attr_req()
385 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE, in process_service_attr_req()
392 p_rsp = &p_ccb->rsp_list[0]; in process_service_attr_req()
393 attr_seq.attr_entry[p_ccb->cont_info.next_attr_index].start = in process_service_attr_req()
394 p_ccb->cont_info.next_attr_start_id; in process_service_attr_req()
396 p_ccb->cont_offset = 0; in process_service_attr_req()
397 p_rsp = &p_ccb->rsp_list[3]; /* Leave space for data elem descr */ in process_service_attr_req()
400 p_ccb->cont_info.prev_sdp_rec = NULL; in process_service_attr_req()
401 p_ccb->cont_info.next_attr_index = 0; in process_service_attr_req()
402 p_ccb->cont_info.attr_offset = 0; in process_service_attr_req()
406 for (xx = p_ccb->cont_info.next_attr_index; xx < attr_seq.num_attr; xx++) { in process_service_attr_req()
412 rem_len = max_list_len - (int16_t)(p_rsp - &p_ccb->rsp_list[0]); in process_service_attr_req()
416 p_ccb->cont_info.next_attr_index = xx; in process_service_attr_req()
417 p_ccb->cont_info.next_attr_start_id = p_attr->id; in process_service_attr_req()
423 if (p_ccb->cont_info.attr_offset) { in process_service_attr_req()
424 if (attr_len < p_ccb->cont_info.attr_offset) { in process_service_attr_req()
427 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE, in process_service_attr_req()
432 &p_ccb->cont_info.attr_offset); in process_service_attr_req()
435 if (p_ccb->cont_info.attr_offset != attr_len) in process_service_attr_req()
438 p_ccb->cont_info.attr_offset = 0; /* reset attr_offset */ in process_service_attr_req()
445 sdpu_build_n_send_error(p_ccb, trans_num, SDP_NO_RESOURCES, NULL); in process_service_attr_req()
451 p_rsp, p_attr, (uint16_t)rem_len, &p_ccb->cont_info.attr_offset); in process_service_attr_req()
453 p_ccb->cont_info.next_attr_index = xx; in process_service_attr_req()
454 p_ccb->cont_info.next_attr_start_id = p_attr->id; in process_service_attr_req()
470 if (xx == attr_seq.num_attr) p_ccb->cont_info.next_attr_index = 0; in process_service_attr_req()
472 len_to_send = (uint16_t)(p_rsp - &p_ccb->rsp_list[0]); in process_service_attr_req()
476 p_ccb->list_len = sdpu_get_attrib_seq_len(p_rec, &attr_seq_sav) + 3; in process_service_attr_req()
478 if (p_ccb->list_len > 255) { in process_service_attr_req()
479 p_ccb->rsp_list[0] = in process_service_attr_req()
481 p_ccb->rsp_list[1] = (uint8_t)((p_ccb->list_len - 3) >> 8); in process_service_attr_req()
482 p_ccb->rsp_list[2] = (uint8_t)(p_ccb->list_len - 3); in process_service_attr_req()
486 p_ccb->rsp_list[1] = in process_service_attr_req()
488 p_ccb->rsp_list[2] = (uint8_t)(p_ccb->list_len - 3); in process_service_attr_req()
490 p_ccb->list_len--; in process_service_attr_req()
510 memcpy(p_rsp, &p_ccb->rsp_list[cont_offset], len_to_send); in process_service_attr_req()
513 p_ccb->cont_offset += len_to_send; in process_service_attr_req()
516 if (p_ccb->cont_offset < p_ccb->list_len) { in process_service_attr_req()
520 UINT16_TO_BE_STREAM(p_rsp, p_ccb->cont_offset); in process_service_attr_req()
532 L2CA_DataWrite(p_ccb->connection_id, p_buf); in process_service_attr_req()
547 static void process_service_search_attr_req(tCONN_CB* p_ccb, uint16_t trans_num, in process_service_search_attr_req() argument
568 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, in process_service_search_attr_req()
576 if (max_list_len > (p_ccb->rem_mtu_size - SDP_MAX_SERVATTR_RSPHDR_LEN)) in process_service_search_attr_req()
577 max_list_len = p_ccb->rem_mtu_size - SDP_MAX_SERVATTR_RSPHDR_LEN; in process_service_search_attr_req()
584 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, in process_service_search_attr_req()
592 sdpu_build_n_send_error(p_ccb, trans_num, SDP_ILLEGAL_PARAMETER, NULL); in process_service_search_attr_req()
598 osi_free(p_ccb->rsp_list); in process_service_search_attr_req()
599 p_ccb->rsp_list = (uint8_t*)osi_malloc(max_list_len); in process_service_search_attr_req()
605 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE, in process_service_search_attr_req()
611 if (cont_offset != p_ccb->cont_offset) { in process_service_search_attr_req()
612 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE, in process_service_search_attr_req()
619 p_rsp = &p_ccb->rsp_list[0]; in process_service_search_attr_req()
620 attr_seq.attr_entry[p_ccb->cont_info.next_attr_index].start = in process_service_search_attr_req()
621 p_ccb->cont_info.next_attr_start_id; in process_service_search_attr_req()
623 p_ccb->cont_offset = 0; in process_service_search_attr_req()
624 p_rsp = &p_ccb->rsp_list[3]; /* Leave space for data elem descr */ in process_service_search_attr_req()
627 p_ccb->cont_info.prev_sdp_rec = NULL; in process_service_search_attr_req()
628 p_ccb->cont_info.next_attr_index = 0; in process_service_search_attr_req()
629 p_ccb->cont_info.last_attr_seq_desc_sent = false; in process_service_search_attr_req()
630 p_ccb->cont_info.attr_offset = 0; in process_service_search_attr_req()
634 for (p_rec = sdp_db_service_search(p_ccb->cont_info.prev_sdp_rec, &uid_seq); in process_service_search_attr_req()
638 if (!p_ccb->cont_info.last_attr_seq_desc_sent) { in process_service_search_attr_req()
641 rem_len = max_list_len - (int16_t)(p_rsp - &p_ccb->rsp_list[0]); in process_service_search_attr_req()
644 p_ccb->cont_info.next_attr_index = 0; in process_service_search_attr_req()
645 p_ccb->cont_info.next_attr_start_id = attr_seq.attr_entry[0].start; in process_service_search_attr_req()
652 for (xx = p_ccb->cont_info.next_attr_index; xx < attr_seq.num_attr; xx++) { in process_service_search_attr_req()
658 rem_len = max_list_len - (int16_t)(p_rsp - &p_ccb->rsp_list[0]); in process_service_search_attr_req()
662 p_ccb->cont_info.next_attr_index = xx; in process_service_search_attr_req()
663 p_ccb->cont_info.next_attr_start_id = p_attr->id; in process_service_search_attr_req()
670 if (p_ccb->cont_info.attr_offset) { in process_service_search_attr_req()
671 if (attr_len < p_ccb->cont_info.attr_offset) { in process_service_search_attr_req()
674 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE, in process_service_search_attr_req()
679 p_rsp, p_attr, rem_len, &p_ccb->cont_info.attr_offset); in process_service_search_attr_req()
682 if (p_ccb->cont_info.attr_offset != attr_len) { in process_service_search_attr_req()
686 p_ccb->cont_info.attr_offset = 0; /* reset attr_offset */ in process_service_search_attr_req()
693 sdpu_build_n_send_error(p_ccb, trans_num, SDP_NO_RESOURCES, NULL); in process_service_search_attr_req()
699 p_rsp, p_attr, (uint16_t)rem_len, &p_ccb->cont_info.attr_offset); in process_service_search_attr_req()
701 p_ccb->cont_info.next_attr_index = xx; in process_service_search_attr_req()
702 p_ccb->cont_info.next_attr_start_id = p_attr->id; in process_service_search_attr_req()
720 if (!p_ccb->cont_info.last_attr_seq_desc_sent) { in process_service_search_attr_req()
727 if (maxxed_out) p_ccb->cont_info.last_attr_seq_desc_sent = true; in process_service_search_attr_req()
738 p_ccb->cont_info.next_attr_index = 0; in process_service_search_attr_req()
739 p_ccb->cont_info.prev_sdp_rec = p_rec; in process_service_search_attr_req()
740 p_ccb->cont_info.last_attr_seq_desc_sent = false; in process_service_search_attr_req()
744 len_to_send = (uint16_t)(p_rsp - &p_ccb->rsp_list[0]); in process_service_search_attr_req()
769 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE, NULL); in process_service_search_attr_req()
776 p_ccb->list_len = sdpu_get_list_len(&uid_seq, &attr_seq_sav) + 3; in process_service_search_attr_req()
778 if (p_ccb->list_len > 255) { in process_service_search_attr_req()
779 p_ccb->rsp_list[0] = in process_service_search_attr_req()
781 p_ccb->rsp_list[1] = (uint8_t)((p_ccb->list_len - 3) >> 8); in process_service_search_attr_req()
782 p_ccb->rsp_list[2] = (uint8_t)(p_ccb->list_len - 3); in process_service_search_attr_req()
786 p_ccb->rsp_list[1] = in process_service_search_attr_req()
788 p_ccb->rsp_list[2] = (uint8_t)(p_ccb->list_len - 3); in process_service_search_attr_req()
790 p_ccb->list_len--; in process_service_search_attr_req()
812 memcpy(p_rsp, &p_ccb->rsp_list[cont_offset], len_to_send); in process_service_search_attr_req()
815 p_ccb->cont_offset += len_to_send; in process_service_search_attr_req()
818 if (p_ccb->cont_offset < p_ccb->list_len) { in process_service_search_attr_req()
822 UINT16_TO_BE_STREAM(p_rsp, p_ccb->cont_offset); in process_service_search_attr_req()
834 L2CA_DataWrite(p_ccb->connection_id, p_buf); in process_service_search_attr_req()