avdtp_sink.c (8b94010e12739aabcaac42189964e23fa45295e6) avdtp_sink.c (522706d7b490f85207c492962f874b9f76884c09)
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

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

187uint8_t avdtp_sink_set_configuration(uint16_t avdtp_cid, uint8_t local_seid, uint8_t remote_seid, uint16_t configured_services_bitmap, avdtp_capabilities_t configuration){
188 return avdtp_set_configuration(avdtp_cid, local_seid, remote_seid, configured_services_bitmap, configuration, avdtp_sink_context);
189}
190
191uint8_t avdtp_sink_reconfigure(uint16_t avdtp_cid, uint8_t local_seid, uint8_t remote_seid, uint16_t configured_services_bitmap, avdtp_capabilities_t configuration){
192 return avdtp_reconfigure(avdtp_cid, local_seid, remote_seid, configured_services_bitmap, configuration, avdtp_sink_context);
193}
194
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

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

187uint8_t avdtp_sink_set_configuration(uint16_t avdtp_cid, uint8_t local_seid, uint8_t remote_seid, uint16_t configured_services_bitmap, avdtp_capabilities_t configuration){
188 return avdtp_set_configuration(avdtp_cid, local_seid, remote_seid, configured_services_bitmap, configuration, avdtp_sink_context);
189}
190
191uint8_t avdtp_sink_reconfigure(uint16_t avdtp_cid, uint8_t local_seid, uint8_t remote_seid, uint16_t configured_services_bitmap, avdtp_capabilities_t configuration){
192 return avdtp_reconfigure(avdtp_cid, local_seid, remote_seid, configured_services_bitmap, configuration, avdtp_sink_context);
193}
194
195uint8_t avdtp_sink_delay_report(uint16_t avdtp_cid, uint8_t local_seid, uint16_t delay_ms){
196 printf("send delay_report\n");
195uint8_t avdtp_sink_delay_report(uint16_t avdtp_cid, uint8_t local_seid, uint16_t delay_100us){
197 avdtp_connection_t * connection = avdtp_connection_for_avdtp_cid(avdtp_cid, avdtp_sink_context);
198 if (!connection){
199 log_error("delay_report: no connection for signaling cid 0x%02x found", avdtp_cid);
200 return AVDTP_CONNECTION_DOES_NOT_EXIST;
201 }
196 avdtp_connection_t * connection = avdtp_connection_for_avdtp_cid(avdtp_cid, avdtp_sink_context);
197 if (!connection){
198 log_error("delay_report: no connection for signaling cid 0x%02x found", avdtp_cid);
199 return AVDTP_CONNECTION_DOES_NOT_EXIST;
200 }
202 printf("send delay_report 1\n");
201
203 if (connection->state != AVDTP_SIGNALING_CONNECTION_OPENED ||
204 connection->initiator_connection_state != AVDTP_SIGNALING_CONNECTION_INITIATOR_IDLE) {
205 log_error("delay_report: connection in wrong state, state %d, initiator state %d", connection->state, connection->initiator_connection_state);
206 return AVDTP_CONNECTION_IN_WRONG_STATE;
207 }
208
202 if (connection->state != AVDTP_SIGNALING_CONNECTION_OPENED ||
203 connection->initiator_connection_state != AVDTP_SIGNALING_CONNECTION_INITIATOR_IDLE) {
204 log_error("delay_report: connection in wrong state, state %d, initiator state %d", connection->state, connection->initiator_connection_state);
205 return AVDTP_CONNECTION_IN_WRONG_STATE;
206 }
207
209 printf("send delay_report 2\n");
210 avdtp_stream_endpoint_t * stream_endpoint = avdtp_stream_endpoint_with_seid(local_seid, avdtp_sink_context);
211 if (!stream_endpoint) {
212 log_error("delay_report: no stream_endpoint with seid %d found", local_seid);
213 return AVDTP_SEID_DOES_NOT_EXIST;
214 }
208 avdtp_stream_endpoint_t * stream_endpoint = avdtp_stream_endpoint_with_seid(local_seid, avdtp_sink_context);
209 if (!stream_endpoint) {
210 log_error("delay_report: no stream_endpoint with seid %d found", local_seid);
211 return AVDTP_SEID_DOES_NOT_EXIST;
212 }
215 printf("send delay_report 3\n");
216
213
217 if (stream_endpoint->state < AVDTP_STREAM_ENDPOINT_CONFIGURED){
218 log_error("Stream endpoint seid %d in wrong state %d", local_seid, stream_endpoint->state);
219 return AVDTP_STREAM_ENDPOINT_IN_WRONG_STATE;
220 }
214 if (stream_endpoint->state < AVDTP_STREAM_ENDPOINT_CONFIGURED){
215 log_error("Stream endpoint seid %d in wrong state %d", local_seid, stream_endpoint->state);
216 return AVDTP_STREAM_ENDPOINT_IN_WRONG_STATE;
217 }
221 printf("send delay_report 4\n");
222
218
223 connection->initiator_transaction_label++;
224 connection->initiator_connection_state = AVDTP_SIGNALING_CONNECTION_INITIATOR_W2_SEND_DELAY_REPORT;
219 connection->initiator_transaction_label++;
220 connection->initiator_connection_state = AVDTP_SIGNALING_CONNECTION_INITIATOR_W2_SEND_DELAY_REPORT;
225 connection->delay_ms = delay_ms * 10;
221 connection->delay_ms = delay_100us;
226 connection->local_seid = local_seid;
227 connection->remote_seid = stream_endpoint->remote_sep.seid;
228 avdtp_request_can_send_now_initiator(connection, connection->l2cap_signaling_cid);
229 return ERROR_CODE_SUCCESS;
230}
231
222 connection->local_seid = local_seid;
223 connection->remote_seid = stream_endpoint->remote_sep.seid;
224 avdtp_request_can_send_now_initiator(connection, connection->l2cap_signaling_cid);
225 return ERROR_CODE_SUCCESS;
226}
227