Lines Matching full: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) {
122 alarm_set_on_mloop(p_ccb->sdp_conn_timer, SDP_INACT_TIMEOUT_MS,
123 sdp_conn_timer_timeout, p_ccb);
128 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX,
140 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX,
147 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_PDU_SIZE,
154 process_service_search(p_ccb, trans_num, param_len, p_req, p_req_end);
158 process_service_attr_req(p_ccb, trans_num, param_len, p_req, p_req_end);
162 process_service_search_attr_req(p_ccb, trans_num, param_len, p_req,
167 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX,
185 static void process_service_search(tCONN_CB* p_ccb, uint16_t trans_num,
199 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX,
207 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX,
229 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE,
235 if (cont_offset != p_ccb->cont_offset || num_rsp_handles < cont_offset) {
236 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE,
246 p_ccb->cont_offset = 0;
251 (uint16_t)((p_ccb->rem_mtu_size - SDP_MAX_SERVICE_RSPHDR_LEN) / 4);
257 p_ccb->cont_offset += cur_handles;
287 UINT16_TO_BE_STREAM(p_rsp, p_ccb->cont_offset);
299 L2CA_DataWrite(p_ccb->connection_id, p_buf);
313 static void process_service_attr_req(tCONN_CB* p_ccb, uint16_t trans_num,
329 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_SERV_REC_HDL,
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,
359 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_SERV_REC_HDL,
365 sdpu_build_n_send_error(p_ccb, trans_num, SDP_ILLEGAL_PARAMETER, NULL);
371 osi_free(p_ccb->rsp_list);
372 p_ccb->rsp_list = (uint8_t*)osi_malloc(max_list_len);
378 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE,
384 if (cont_offset != p_ccb->cont_offset) {
385 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE,
392 p_rsp = &p_ccb->rsp_list[0];
393 attr_seq.attr_entry[p_ccb->cont_info.next_attr_index].start =
394 p_ccb->cont_info.next_attr_start_id;
396 p_ccb->cont_offset = 0;
397 p_rsp = &p_ccb->rsp_list[3]; /* Leave space for data elem descr */
399 /* Reset continuation parameters in p_ccb */
400 p_ccb->cont_info.prev_sdp_rec = NULL;
401 p_ccb->cont_info.next_attr_index = 0;
402 p_ccb->cont_info.attr_offset = 0;
406 for (xx = p_ccb->cont_info.next_attr_index; xx < attr_seq.num_attr; xx++) {
412 rem_len = max_list_len - (int16_t)(p_rsp - &p_ccb->rsp_list[0]);
416 p_ccb->cont_info.next_attr_index = xx;
417 p_ccb->cont_info.next_attr_start_id = p_attr->id;
423 if (p_ccb->cont_info.attr_offset) {
425 &p_ccb->cont_info.attr_offset);
428 if (p_ccb->cont_info.attr_offset != attr_len)
431 p_ccb->cont_info.attr_offset = 0; /* reset attr_offset */
438 sdpu_build_n_send_error(p_ccb, trans_num, SDP_NO_RESOURCES, NULL);
444 p_rsp, p_attr, (uint16_t)rem_len, &p_ccb->cont_info.attr_offset);
446 p_ccb->cont_info.next_attr_index = xx;
447 p_ccb->cont_info.next_attr_start_id = p_attr->id;
463 if (xx == attr_seq.num_attr) p_ccb
465 len_to_send = (uint16_t)(p_rsp - &p_ccb->rsp_list[0]);
469 p_ccb->list_len = sdpu_get_attrib_seq_len(p_rec, &attr_seq_sav) + 3;
471 if (p_ccb->list_len > 255) {
472 p_ccb->rsp_list[0] =
474 p_ccb->rsp_list[1] = (uint8_t)((p_ccb->list_len - 3) >> 8);
475 p_ccb->rsp_list[2] = (uint8_t)(p_ccb->list_len - 3);
479 p_ccb->rsp_list[1] =
481 p_ccb->rsp_list[2] = (uint8_t)(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) {
513 UINT16_TO_BE_STREAM(p_rsp, p_ccb->cont_offset);
525 L2CA_DataWrite(p_ccb->connection_id, p_buf);
540 static void process_service_search_attr_req(tCONN_CB* p_ccb, uint16_t trans_num,
561 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX,
569 if (max_list_len > (p_ccb->rem_mtu_size - SDP_MAX_SERVATTR_RSPHDR_LEN))
570 max_list_len = p_ccb->rem_mtu_size - SDP_MAX_SERVATTR_RSPHDR_LEN;
577 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_REQ_SYNTAX,
585 sdpu_build_n_send_error(p_ccb, trans_num, SDP_ILLEGAL_PARAMETER, NULL);
591 osi_free(p_ccb->rsp_list);
592 p_ccb->rsp_list = (uint8_t*)osi_malloc(max_list_len);
598 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE,
604 if (cont_offset != p_ccb->cont_offset) {
605 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE,
612 p_rsp = &p_ccb->rsp_list[0];
613 attr_seq.attr_entry[p_ccb->cont_info.next_attr_index].start =
614 p_ccb->cont_info.next_attr_start_id;
616 p_ccb->cont_offset = 0;
617 p_rsp = &p_ccb->rsp_list[3]; /* Leave space for data elem descr */
619 /* Reset continuation parameters in p_ccb */
620 p_ccb->cont_info.prev_sdp_rec = NULL;
621 p_ccb->cont_info.next_attr_index = 0;
622 p_ccb->cont_info.last_attr_seq_desc_sent = false;
623 p_ccb->cont_info.attr_offset = 0;
627 for (p_rec = sdp_db_service_search(p_ccb->cont_info.prev_sdp_rec, &uid_seq);
631 if (!p_ccb->cont_info.last_attr_seq_desc_sent) {
634 rem_len = max_list_len - (int16_t)(p_rsp - &p_ccb->rsp_list[0]);
637 p_ccb->cont_info.next_attr_index = 0;
638 p_ccb->cont_info.next_attr_start_id = attr_seq.attr_entry[0].start;
645 for (xx = p_ccb->cont_info.next_attr_index; xx < attr_seq.num_attr; xx++) {
651 rem_len = max_list_len - (int16_t)(p_rsp - &p_ccb->rsp_list[0]);
655 p_ccb->cont_info.next_attr_index = xx;
656 p_ccb->cont_info.next_attr_start_id = p_attr->id;
663 if (p_ccb->cont_info.attr_offset) {
665 p_rsp, p_attr, rem_len, &p_ccb->cont_info.attr_offset);
668 if (p_ccb->cont_info.attr_offset != attr_len) {
672 p_ccb->cont_info.attr_offset = 0; /* reset attr_offset */
679 sdpu_build_n_send_error(p_ccb, trans_num, SDP_NO_RESOURCES, NULL);
685 p_rsp, p_attr, (uint16_t)rem_len, &p_ccb->cont_info.attr_offset);
687 p_ccb->cont_info.next_attr_index = xx;
688 p_ccb->cont_info.next_attr_start_id = p_attr->id;
706 if (!p_ccb->cont_info.last_attr_seq_desc_sent) {
713 if (maxxed_out) p_ccb->cont_info.last_attr_seq_desc_sent = true;
724 p_ccb->cont_info.next_attr_index = 0;
725 p_ccb->cont_info.prev_sdp_rec = p_rec;
726 p_ccb->cont_info.last_attr_seq_desc_sent = false;
730 len_to_send = (uint16_t)(p_rsp - &p_ccb->rsp_list[0]);
755 sdpu_build_n_send_error(p_ccb, trans_num, SDP_INVALID_CONT_STATE, NULL);
762 p_ccb->list_len = sdpu_get_list_len(&uid_seq, &attr_seq_sav) + 3;
764 if (p_ccb->list_len > 255) {
765 p_ccb->rsp_list[0] =
767 p_ccb->rsp_list[1] = (uint8_t)((p_ccb->list_len - 3) >> 8);
768 p_ccb->rsp_list[2] = (uint8_t)(p_ccb->list_len - 3);
772 p_ccb->rsp_list[1] =
774 p_ccb->rsp_list[2] = (uint8_t)(p_ccb->list_len - 3);
776 p_ccb->list_len--;
798 memcpy(p_rsp, &p_ccb->rsp_list[cont_offset], len_to_send);
801 p_ccb->cont_offset += len_to_send;
804 if (p_ccb->cont_offset < p_ccb->list_len) {
808 UINT16_TO_BE_STREAM(p_rsp, p_ccb->cont_offset);
820 L2CA_DataWrite(p_ccb->connection_id, p_buf);