avdtp_acceptor.c (c70720c67056dadfbbef227c89dcb22a37fba036) avdtp_acceptor.c (48ce193c1bb43973676c530932628af0332bfb28)
1/*
2 * Copyright (C) 2016 BlueKitchen GmbH
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright

--- 371 unchanged lines hidden (view full) ---

380 case AVDTP_SI_START:
381 if (stream_endpoint->state != AVDTP_STREAM_ENDPOINT_OPENED){
382 log_info("REJECT AVDTP_SI_START, BAD_STATE, state %d", stream_endpoint->state);
383 stream_endpoint->acceptor_config_state = AVDTP_ACCEPTOR_W2_REJECT_CATEGORY_WITH_ERROR_CODE;
384 connection->error_code = AVDTP_ERROR_CODE_BAD_STATE;
385 connection->reject_signal_identifier = connection->acceptor_signaling_packet.signal_identifier;
386 break;
387 }
1/*
2 * Copyright (C) 2016 BlueKitchen GmbH
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright

--- 371 unchanged lines hidden (view full) ---

380 case AVDTP_SI_START:
381 if (stream_endpoint->state != AVDTP_STREAM_ENDPOINT_OPENED){
382 log_info("REJECT AVDTP_SI_START, BAD_STATE, state %d", stream_endpoint->state);
383 stream_endpoint->acceptor_config_state = AVDTP_ACCEPTOR_W2_REJECT_CATEGORY_WITH_ERROR_CODE;
384 connection->error_code = AVDTP_ERROR_CODE_BAD_STATE;
385 connection->reject_signal_identifier = connection->acceptor_signaling_packet.signal_identifier;
386 break;
387 }
388#ifdef ENABLE_AVDTP_ACCEPTOR_EXPLICIT_START_STREAM_CONFIRMATION
389 log_info("W2_ACCEPT_START_STREAM");
390 stream_endpoint->acceptor_config_state = AVDTP_ACCEPTOR_W4_USER_CONFIRM_START_STREAM;
391#else
388 log_info("W2_ANSWER_START_STREAM");
392 log_info("W2_ANSWER_START_STREAM");
389 stream_endpoint->acceptor_config_state = AVDTP_ACCEPTOR_W2_ANSWER_START_STREAM;
393 stream_endpoint->acceptor_config_state = AVDTP_ACCEPTOR_W2_ACCEPT_START_STREAM;
394#endif
390 break;
391 case AVDTP_SI_CLOSE:
392 switch (stream_endpoint->state){
393 case AVDTP_STREAM_ENDPOINT_OPENED:
394 case AVDTP_STREAM_ENDPOINT_STREAMING:
395 log_info("W2_ANSWER_CLOSE_STREAM");
396 stream_endpoint->state = AVDTP_STREAM_ENDPOINT_CLOSING;
397 stream_endpoint->acceptor_config_state = AVDTP_ACCEPTOR_W2_ANSWER_CLOSE_STREAM;

--- 223 unchanged lines hidden (view full) ---

621 l2cap_send_prepared(cid, pos);
622 break;
623 }
624 case AVDTP_ACCEPTOR_W2_ANSWER_OPEN_STREAM:
625 log_info("DONE");
626 avdtp_acceptor_send_accept_response(cid, trid, AVDTP_SI_OPEN);
627 emit_accept = true;
628 break;
395 break;
396 case AVDTP_SI_CLOSE:
397 switch (stream_endpoint->state){
398 case AVDTP_STREAM_ENDPOINT_OPENED:
399 case AVDTP_STREAM_ENDPOINT_STREAMING:
400 log_info("W2_ANSWER_CLOSE_STREAM");
401 stream_endpoint->state = AVDTP_STREAM_ENDPOINT_CLOSING;
402 stream_endpoint->acceptor_config_state = AVDTP_ACCEPTOR_W2_ANSWER_CLOSE_STREAM;

--- 223 unchanged lines hidden (view full) ---

626 l2cap_send_prepared(cid, pos);
627 break;
628 }
629 case AVDTP_ACCEPTOR_W2_ANSWER_OPEN_STREAM:
630 log_info("DONE");
631 avdtp_acceptor_send_accept_response(cid, trid, AVDTP_SI_OPEN);
632 emit_accept = true;
633 break;
629 case AVDTP_ACCEPTOR_W2_ANSWER_START_STREAM:
634
635#ifdef ENABLE_AVDTP_ACCEPTOR_EXPLICIT_START_STREAM_CONFIRMATION
636 case AVDTP_ACCEPTOR_W4_USER_CONFIRM_START_STREAM:
637 // keep state until user calls API to confirm or reject starting the stream
638 stream_endpoint->acceptor_config_state = AVDTP_ACCEPTOR_W4_USER_CONFIRM_START_STREAM;
639 avdtp_signaling_emit_accept(connection->avdtp_cid, avdtp_local_seid(stream_endpoint), AVDTP_SI_ACCEPT_START, false);
640 break;
641 case AVDTP_ACCEPTOR_W2_REJECT_START_STREAM:
642 stream_endpoint->state = AVDTP_STREAM_ENDPOINT_OPENED;
643 connection->acceptor_signaling_packet.signal_identifier = AVDTP_SI_START;
644 emit_reject = true;
645 avdtp_acceptor_send_response_reject(cid, AVDTP_SI_START, trid);
646 break;
647#endif
648 case AVDTP_ACCEPTOR_W2_ACCEPT_START_STREAM:
630 log_info("DONE ");
631 log_info(" -> AVDTP_STREAM_ENDPOINT_STREAMING ");
632 stream_endpoint->state = AVDTP_STREAM_ENDPOINT_STREAMING;
633 avdtp_acceptor_send_accept_response(cid, trid, AVDTP_SI_START);
634 emit_accept = true;
635 break;
636 case AVDTP_ACCEPTOR_W2_ANSWER_CLOSE_STREAM:
637 log_info("DONE");

--- 52 unchanged lines hidden ---
649 log_info("DONE ");
650 log_info(" -> AVDTP_STREAM_ENDPOINT_STREAMING ");
651 stream_endpoint->state = AVDTP_STREAM_ENDPOINT_STREAMING;
652 avdtp_acceptor_send_accept_response(cid, trid, AVDTP_SI_START);
653 emit_accept = true;
654 break;
655 case AVDTP_ACCEPTOR_W2_ANSWER_CLOSE_STREAM:
656 log_info("DONE");

--- 52 unchanged lines hidden ---