Lines Matching refs:p_ccb
46 static void process_service_search(tCONN_CB* p_ccb, uint16_t trans_num,
50 static void process_service_attr_req(tCONN_CB* p_ccb, uint16_t trans_num,
54 static void process_service_search_attr_req(tCONN_CB* p_ccb, uint16_t trans_num,
107 void sdp_server_handle_client_req(tCONN_CB* p_ccb, BT_HDR* p_msg) { in sdp_server_handle_client_req() argument
114 alarm_set_on_mloop(p_ccb->sdp_conn_timer, SDP_INACT_TIMEOUT_MS, in sdp_server_handle_client_req()
115 sdp_conn_timer_timeout, p_ccb); in sdp_server_handle_client_req()
121 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, in sdp_server_handle_client_req()
135 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, in sdp_server_handle_client_req()
143 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_PDU_SIZE, in sdp_server_handle_client_req()
150 process_service_search(p_ccb, trans_num, param_len, p_req, p_req_end); in sdp_server_handle_client_req()
154 process_service_attr_req(p_ccb, trans_num, param_len, p_req, p_req_end); in sdp_server_handle_client_req()
158 process_service_search_attr_req(p_ccb, trans_num, param_len, p_req, in sdp_server_handle_client_req()
163 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, in sdp_server_handle_client_req()
181 static void process_service_search(tCONN_CB* p_ccb, uint16_t trans_num, in process_service_search() argument
195 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, in process_service_search()
203 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, in process_service_search()
225 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE, in process_service_search()
231 if (cont_offset != p_ccb->cont_offset || num_rsp_handles < cont_offset) { in process_service_search()
232 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE, in process_service_search()
242 p_ccb->cont_offset = 0; in process_service_search()
247 (uint16_t)((p_ccb->rem_mtu_size - SDP_MAX_SERVICE_RSPHDR_LEN) / 4); in process_service_search()
253 p_ccb->cont_offset += cur_handles; in process_service_search()
283 UINT16_TO_BE_STREAM(p_rsp, p_ccb->cont_offset); in process_service_search()
295 L2CA_DataWrite(p_ccb->connection_id, p_buf); in process_service_search()
309 static void process_service_attr_req(tCONN_CB* p_ccb, uint16_t trans_num, in process_service_attr_req() argument
325 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_SERV_REC_HDL, in process_service_attr_req()
338 if (max_list_len > (p_ccb->rem_mtu_size - SDP_MAX_ATTR_RSPHDR_LEN)) in process_service_attr_req()
339 max_list_len = p_ccb->rem_mtu_size - SDP_MAX_ATTR_RSPHDR_LEN; in process_service_attr_req()
345 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, in process_service_attr_req()
355 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_SERV_REC_HDL, in process_service_attr_req()
361 sdpu_build_n_send_error(p_ccb, trans_num, SDP_ILLEGAL_PARAMETER, NULL); in process_service_attr_req()
367 osi_free(p_ccb->rsp_list); in process_service_attr_req()
368 p_ccb->rsp_list = (uint8_t*)osi_malloc(max_list_len); in process_service_attr_req()
374 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE, in process_service_attr_req()
380 if (cont_offset != p_ccb->cont_offset) { in process_service_attr_req()
381 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE, in process_service_attr_req()
388 p_rsp = &p_ccb->rsp_list[0]; in process_service_attr_req()
389 attr_seq.attr_entry[p_ccb->cont_info.next_attr_index].start = in process_service_attr_req()
390 p_ccb->cont_info.next_attr_start_id; in process_service_attr_req()
392 p_ccb->cont_offset = 0; in process_service_attr_req()
393 p_rsp = &p_ccb->rsp_list[3]; /* Leave space for data elem descr */ in process_service_attr_req()
396 p_ccb->cont_info.prev_sdp_rec = NULL; in process_service_attr_req()
397 p_ccb->cont_info.next_attr_index = 0; in process_service_attr_req()
398 p_ccb->cont_info.attr_offset = 0; in process_service_attr_req()
402 for (xx = p_ccb->cont_info.next_attr_index; xx < attr_seq.num_attr; xx++) { in process_service_attr_req()
408 rem_len = max_list_len - (int16_t)(p_rsp - &p_ccb->rsp_list[0]); in process_service_attr_req()
412 p_ccb->cont_info.next_attr_index = xx; in process_service_attr_req()
413 p_ccb->cont_info.next_attr_start_id = p_attr->id; in process_service_attr_req()
419 if (p_ccb->cont_info.attr_offset) { in process_service_attr_req()
420 if (attr_len < p_ccb->cont_info.attr_offset) { in process_service_attr_req()
423 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE, in process_service_attr_req()
428 &p_ccb->cont_info.attr_offset); in process_service_attr_req()
431 if (p_ccb->cont_info.attr_offset != attr_len) in process_service_attr_req()
434 p_ccb->cont_info.attr_offset = 0; /* reset attr_offset */ in process_service_attr_req()
441 sdpu_build_n_send_error(p_ccb, trans_num, SDP_NO_RESOURCES, NULL); in process_service_attr_req()
447 p_rsp, p_attr, (uint16_t)rem_len, &p_ccb->cont_info.attr_offset); in process_service_attr_req()
449 p_ccb->cont_info.next_attr_index = xx; in process_service_attr_req()
450 p_ccb->cont_info.next_attr_start_id = p_attr->id; in process_service_attr_req()
466 if (xx == attr_seq.num_attr) p_ccb->cont_info.next_attr_index = 0; in process_service_attr_req()
468 len_to_send = (uint16_t)(p_rsp - &p_ccb->rsp_list[0]); in process_service_attr_req()
472 p_ccb->list_len = sdpu_get_attrib_seq_len(p_rec, &attr_seq_sav) + 3; in process_service_attr_req()
474 if (p_ccb->list_len > 255) { in process_service_attr_req()
475 p_ccb->rsp_list[0] = in process_service_attr_req()
477 p_ccb->rsp_list[1] = (uint8_t)((p_ccb->list_len - 3) >> 8); in process_service_attr_req()
478 p_ccb->rsp_list[2] = (uint8_t)(p_ccb->list_len - 3); in process_service_attr_req()
482 p_ccb->rsp_list[1] = in process_service_attr_req()
484 p_ccb->rsp_list[2] = (uint8_t)(p_ccb->list_len - 3); in process_service_attr_req()
486 p_ccb->list_len--; in process_service_attr_req()
506 memcpy(p_rsp, &p_ccb->rsp_list[cont_offset], len_to_send); in process_service_attr_req()
509 p_ccb->cont_offset += len_to_send; in process_service_attr_req()
512 if (p_ccb->cont_offset < p_ccb->list_len) { in process_service_attr_req()
516 UINT16_TO_BE_STREAM(p_rsp, p_ccb->cont_offset); in process_service_attr_req()
528 L2CA_DataWrite(p_ccb->connection_id, p_buf); in process_service_attr_req()
543 static void process_service_search_attr_req(tCONN_CB* p_ccb, uint16_t trans_num, in process_service_search_attr_req() argument
565 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, in process_service_search_attr_req()
573 if (max_list_len > (p_ccb->rem_mtu_size - SDP_MAX_SERVATTR_RSPHDR_LEN)) in process_service_search_attr_req()
574 max_list_len = p_ccb->rem_mtu_size - SDP_MAX_SERVATTR_RSPHDR_LEN; in process_service_search_attr_req()
581 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX, in process_service_search_attr_req()
589 sdpu_build_n_send_error(p_ccb, trans_num, SDP_ILLEGAL_PARAMETER, NULL); in process_service_search_attr_req()
595 osi_free(p_ccb->rsp_list); in process_service_search_attr_req()
596 p_ccb->rsp_list = (uint8_t*)osi_malloc(max_list_len); in process_service_search_attr_req()
602 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE, in process_service_search_attr_req()
608 if (cont_offset != p_ccb->cont_offset) { in process_service_search_attr_req()
609 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE, in process_service_search_attr_req()
616 p_rsp = &p_ccb->rsp_list[0]; in process_service_search_attr_req()
617 attr_seq.attr_entry[p_ccb->cont_info.next_attr_index].start = in process_service_search_attr_req()
618 p_ccb->cont_info.next_attr_start_id; in process_service_search_attr_req()
620 p_ccb->cont_offset = 0; in process_service_search_attr_req()
621 p_rsp = &p_ccb->rsp_list[3]; /* Leave space for data elem descr */ in process_service_search_attr_req()
624 p_ccb->cont_info.prev_sdp_rec = NULL; in process_service_search_attr_req()
625 p_ccb->cont_info.next_attr_index = 0; in process_service_search_attr_req()
626 p_ccb->cont_info.last_attr_seq_desc_sent = false; in process_service_search_attr_req()
627 p_ccb->cont_info.attr_offset = 0; in process_service_search_attr_req()
631 for (p_rec = sdp_db_service_search(p_ccb->cont_info.prev_sdp_rec, &uid_seq); in process_service_search_attr_req()
635 if (!p_ccb->cont_info.last_attr_seq_desc_sent) { in process_service_search_attr_req()
638 rem_len = max_list_len - (int16_t)(p_rsp - &p_ccb->rsp_list[0]); in process_service_search_attr_req()
641 p_ccb->cont_info.next_attr_index = 0; in process_service_search_attr_req()
642 p_ccb->cont_info.next_attr_start_id = attr_seq.attr_entry[0].start; in process_service_search_attr_req()
649 for (xx = p_ccb->cont_info.next_attr_index; xx < attr_seq.num_attr; xx++) { in process_service_search_attr_req()
658 &(p_ccb->device_address))) { in process_service_search_attr_req()
662 __func__, p_ccb->device_address.ToString().c_str()); in process_service_search_attr_req()
668 rem_len = max_list_len - (int16_t)(p_rsp - &p_ccb->rsp_list[0]); in process_service_search_attr_req()
672 p_ccb->cont_info.next_attr_index = xx; in process_service_search_attr_req()
673 p_ccb->cont_info.next_attr_start_id = p_attr->id; in process_service_search_attr_req()
680 if (p_ccb->cont_info.attr_offset) { in process_service_search_attr_req()
681 if (attr_len < p_ccb->cont_info.attr_offset) { in process_service_search_attr_req()
684 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE, in process_service_search_attr_req()
689 p_rsp, p_attr, rem_len, &p_ccb->cont_info.attr_offset); in process_service_search_attr_req()
692 if (p_ccb->cont_info.attr_offset != attr_len) { in process_service_search_attr_req()
696 p_ccb->cont_info.attr_offset = 0; /* reset attr_offset */ in process_service_search_attr_req()
703 sdpu_build_n_send_error(p_ccb, trans_num, SDP_NO_RESOURCES, NULL); in process_service_search_attr_req()
709 p_rsp, p_attr, (uint16_t)rem_len, &p_ccb->cont_info.attr_offset); in process_service_search_attr_req()
711 p_ccb->cont_info.next_attr_index = xx; in process_service_search_attr_req()
712 p_ccb->cont_info.next_attr_start_id = p_attr->id; in process_service_search_attr_req()
730 if (!p_ccb->cont_info.last_attr_seq_desc_sent) { in process_service_search_attr_req()
737 if (maxxed_out) p_ccb->cont_info.last_attr_seq_desc_sent = true; in process_service_search_attr_req()
748 p_ccb->cont_info.next_attr_index = 0; in process_service_search_attr_req()
749 p_ccb->cont_info.prev_sdp_rec = p_rec; in process_service_search_attr_req()
750 p_ccb->cont_info.last_attr_seq_desc_sent = false; in process_service_search_attr_req()
754 len_to_send = (uint16_t)(p_rsp - &p_ccb->rsp_list[0]); in process_service_search_attr_req()
779 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE, NULL); in process_service_search_attr_req()
786 p_ccb->list_len = sdpu_get_list_len(&uid_seq, &attr_seq_sav) + 3; in process_service_search_attr_req()
788 if (p_ccb->list_len > 255) { in process_service_search_attr_req()
789 p_ccb->rsp_list[0] = in process_service_search_attr_req()
791 p_ccb->rsp_list[1] = (uint8_t)((p_ccb->list_len - 3) >> 8); in process_service_search_attr_req()
792 p_ccb->rsp_list[2] = (uint8_t)(p_ccb->list_len - 3); in process_service_search_attr_req()
796 p_ccb->rsp_list[1] = in process_service_search_attr_req()
798 p_ccb->rsp_list[2] = (uint8_t)(p_ccb->list_len - 3); in process_service_search_attr_req()
800 p_ccb->list_len--; in process_service_search_attr_req()
822 memcpy(p_rsp, &p_ccb->rsp_list[cont_offset], len_to_send); in process_service_search_attr_req()
825 p_ccb->cont_offset += len_to_send; in process_service_search_attr_req()
828 if (p_ccb->cont_offset < p_ccb->list_len) { in process_service_search_attr_req()
832 UINT16_TO_BE_STREAM(p_rsp, p_ccb->cont_offset); in process_service_search_attr_req()
844 L2CA_DataWrite(p_ccb->connection_id, p_buf); in process_service_search_attr_req()