xref: /btstack/src/classic/avrcp_media_item_iterator.h (revision 954cc391b7ff237c6d9460ea14cf8b96b1fbd1e4)
1*954cc391SMilanka Ringwald /*
2*954cc391SMilanka Ringwald  * Copyright (C) 2017 BlueKitchen GmbH
3*954cc391SMilanka Ringwald  *
4*954cc391SMilanka Ringwald  * Redistribution and use in source and binary forms, with or without
5*954cc391SMilanka Ringwald  * modification, are permitted provided that the following conditions
6*954cc391SMilanka Ringwald  * are met:
7*954cc391SMilanka Ringwald  *
8*954cc391SMilanka Ringwald  * 1. Redistributions of source code must retain the above copyright
9*954cc391SMilanka Ringwald  *    notice, this list of conditions and the following disclaimer.
10*954cc391SMilanka Ringwald  * 2. Redistributions in binary form must reproduce the above copyright
11*954cc391SMilanka Ringwald  *    notice, this list of conditions and the following disclaimer in the
12*954cc391SMilanka Ringwald  *    documentation and/or other materials provided with the distribution.
13*954cc391SMilanka Ringwald  * 3. Neither the name of the copyright holders nor the names of
14*954cc391SMilanka Ringwald  *    contributors may be used to endorse or promote products derived
15*954cc391SMilanka Ringwald  *    from this software without specific prior written permission.
16*954cc391SMilanka Ringwald  * 4. Any redistribution, use, or modification is done solely for
17*954cc391SMilanka Ringwald  *    personal benefit and not for any commercial purpose or for
18*954cc391SMilanka Ringwald  *    monetary gain.
19*954cc391SMilanka Ringwald  *
20*954cc391SMilanka Ringwald  * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS
21*954cc391SMilanka Ringwald  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22*954cc391SMilanka Ringwald  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23*954cc391SMilanka Ringwald  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS
24*954cc391SMilanka Ringwald  * RINGWALD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25*954cc391SMilanka Ringwald  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26*954cc391SMilanka Ringwald  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
27*954cc391SMilanka Ringwald  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
28*954cc391SMilanka Ringwald  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29*954cc391SMilanka Ringwald  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
30*954cc391SMilanka Ringwald  * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31*954cc391SMilanka Ringwald  * SUCH DAMAGE.
32*954cc391SMilanka Ringwald  *
33*954cc391SMilanka Ringwald  * Please inquire about commercial licensing options at
34*954cc391SMilanka Ringwald  * [email protected]
35*954cc391SMilanka Ringwald  *
36*954cc391SMilanka Ringwald  */
37*954cc391SMilanka Ringwald 
38*954cc391SMilanka Ringwald // *****************************************************************************
39*954cc391SMilanka Ringwald //
40*954cc391SMilanka Ringwald // AVRCP Media Item Iterator
41*954cc391SMilanka Ringwald //
42*954cc391SMilanka Ringwald // *****************************************************************************
43*954cc391SMilanka Ringwald 
44*954cc391SMilanka Ringwald #ifndef __AVRCP_MEDIA_ITEM_ITERATOR_H
45*954cc391SMilanka Ringwald #define __AVRCP_MEDIA_ITEM_ITERATOR_H
46*954cc391SMilanka Ringwald 
47*954cc391SMilanka Ringwald #include "btstack_config.h"
48*954cc391SMilanka Ringwald #include <stdint.h>
49*954cc391SMilanka Ringwald 
50*954cc391SMilanka Ringwald #if defined __cplusplus
51*954cc391SMilanka Ringwald extern "C" {
52*954cc391SMilanka Ringwald #endif
53*954cc391SMilanka Ringwald 
54*954cc391SMilanka Ringwald /* API_START */
55*954cc391SMilanka Ringwald 
56*954cc391SMilanka Ringwald typedef struct avrcp_media_item_context {
57*954cc391SMilanka Ringwald      const uint8_t * data;
58*954cc391SMilanka Ringwald      uint16_t   offset;
59*954cc391SMilanka Ringwald      uint16_t   length;
60*954cc391SMilanka Ringwald } avrcp_media_item_context_t;
61*954cc391SMilanka Ringwald 
62*954cc391SMilanka Ringwald // Media item data iterator
63*954cc391SMilanka Ringwald void avrcp_media_item_iterator_init(avrcp_media_item_context_t *context, uint16_t avrcp_media_item_len, const uint8_t * avrcp_media_item_data);
64*954cc391SMilanka Ringwald int  avrcp_media_item_iterator_has_more(const avrcp_media_item_context_t * context);
65*954cc391SMilanka Ringwald void avrcp_media_item_iterator_next(avrcp_media_item_context_t * context);
66*954cc391SMilanka Ringwald 
67*954cc391SMilanka Ringwald // Access functions
68*954cc391SMilanka Ringwald uint32_t          avrcp_media_item_iterator_get_attr_id(const avrcp_media_item_context_t * context);
69*954cc391SMilanka Ringwald uint16_t         avrcp_media_item_iterator_get_attr_charset(const avrcp_media_item_context_t * context);
70*954cc391SMilanka Ringwald uint16_t         avrcp_media_item_iterator_get_attr_value_len(const avrcp_media_item_context_t * context);
71*954cc391SMilanka Ringwald const uint8_t *  avrcp_media_item_iterator_get_attr_value(const avrcp_media_item_context_t * context);
72*954cc391SMilanka Ringwald 
73*954cc391SMilanka Ringwald /* API_END */
74*954cc391SMilanka Ringwald 
75*954cc391SMilanka Ringwald #if defined __cplusplus
76*954cc391SMilanka Ringwald }
77*954cc391SMilanka Ringwald #endif
78*954cc391SMilanka Ringwald #endif // __AVRCP_MEDIA_ITEM_ITERATOR_H
79