xref: /freebsd/usr.sbin/bluetooth/sdpd/profile.h (revision 42b388439bd3795e09258c57a74ce9eec3651c7b)
107be7a6cSMaksim Yevmenkin /*
207be7a6cSMaksim Yevmenkin  * profile.h
3f2505d70SMaksim Yevmenkin  */
4f2505d70SMaksim Yevmenkin 
5f2505d70SMaksim Yevmenkin /*-
6*4d846d26SWarner Losh  * SPDX-License-Identifier: BSD-2-Clause
71de7b4b8SPedro F. Giffuni  *
807be7a6cSMaksim Yevmenkin  * Copyright (c) 2004 Maksim Yevmenkin <m_evmenkin@yahoo.com>
907be7a6cSMaksim Yevmenkin  * All rights reserved.
1007be7a6cSMaksim Yevmenkin  *
1107be7a6cSMaksim Yevmenkin  * Redistribution and use in source and binary forms, with or without
1207be7a6cSMaksim Yevmenkin  * modification, are permitted provided that the following conditions
1307be7a6cSMaksim Yevmenkin  * are met:
1407be7a6cSMaksim Yevmenkin  * 1. Redistributions of source code must retain the above copyright
1507be7a6cSMaksim Yevmenkin  *    notice, this list of conditions and the following disclaimer.
1607be7a6cSMaksim Yevmenkin  * 2. Redistributions in binary form must reproduce the above copyright
1707be7a6cSMaksim Yevmenkin  *    notice, this list of conditions and the following disclaimer in the
1807be7a6cSMaksim Yevmenkin  *    documentation and/or other materials provided with the distribution.
1907be7a6cSMaksim Yevmenkin  *
2007be7a6cSMaksim Yevmenkin  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
2107be7a6cSMaksim Yevmenkin  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2207be7a6cSMaksim Yevmenkin  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2307be7a6cSMaksim Yevmenkin  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
2407be7a6cSMaksim Yevmenkin  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2507be7a6cSMaksim Yevmenkin  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2607be7a6cSMaksim Yevmenkin  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2707be7a6cSMaksim Yevmenkin  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2807be7a6cSMaksim Yevmenkin  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2907be7a6cSMaksim Yevmenkin  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3007be7a6cSMaksim Yevmenkin  * SUCH DAMAGE.
3107be7a6cSMaksim Yevmenkin  *
3207be7a6cSMaksim Yevmenkin  * $Id: profile.h,v 1.6 2004/01/13 19:31:54 max Exp $
3307be7a6cSMaksim Yevmenkin  */
3407be7a6cSMaksim Yevmenkin 
3507be7a6cSMaksim Yevmenkin #ifndef _PROFILE_H_
3607be7a6cSMaksim Yevmenkin #define _PROFILE_H_
3707be7a6cSMaksim Yevmenkin 
3807be7a6cSMaksim Yevmenkin /*
3907be7a6cSMaksim Yevmenkin  * Attribute descriptor
4007be7a6cSMaksim Yevmenkin  */
4107be7a6cSMaksim Yevmenkin 
4207be7a6cSMaksim Yevmenkin typedef int32_t	(profile_attr_create_t)(
4307be7a6cSMaksim Yevmenkin 			uint8_t *buf, uint8_t const * const eob,
4407be7a6cSMaksim Yevmenkin 			uint8_t const *data, uint32_t datalen);
4507be7a6cSMaksim Yevmenkin typedef profile_attr_create_t *	profile_attr_create_p;
4607be7a6cSMaksim Yevmenkin 
4707be7a6cSMaksim Yevmenkin typedef int32_t	(profile_data_valid_t)(
4807be7a6cSMaksim Yevmenkin 			uint8_t const *data, uint32_t datalen);
4907be7a6cSMaksim Yevmenkin typedef profile_data_valid_t *	profile_data_valid_p;
5007be7a6cSMaksim Yevmenkin 
5107be7a6cSMaksim Yevmenkin struct attr
5207be7a6cSMaksim Yevmenkin {
5307be7a6cSMaksim Yevmenkin 	uint16_t		attr;	/* attribute id */
5407be7a6cSMaksim Yevmenkin 	profile_attr_create_p	create;	/* create attr value */
5507be7a6cSMaksim Yevmenkin };
5607be7a6cSMaksim Yevmenkin 
5707be7a6cSMaksim Yevmenkin typedef struct attr	attr_t;
5807be7a6cSMaksim Yevmenkin typedef struct attr *	attr_p;
5907be7a6cSMaksim Yevmenkin 
6007be7a6cSMaksim Yevmenkin /*
6107be7a6cSMaksim Yevmenkin  * Profile descriptor
6207be7a6cSMaksim Yevmenkin  */
6307be7a6cSMaksim Yevmenkin 
6407be7a6cSMaksim Yevmenkin 
6507be7a6cSMaksim Yevmenkin struct profile
6607be7a6cSMaksim Yevmenkin {
6707be7a6cSMaksim Yevmenkin 	uint16_t		uuid;	/* profile uuid */
6807be7a6cSMaksim Yevmenkin 	uint16_t		dsize;	/* profile data size */
6907be7a6cSMaksim Yevmenkin 	profile_data_valid_p	valid;	/* profile data validator */
7007be7a6cSMaksim Yevmenkin 	attr_t const * const	attrs;	/* supported attributes */
7107be7a6cSMaksim Yevmenkin };
7207be7a6cSMaksim Yevmenkin 
7307be7a6cSMaksim Yevmenkin typedef struct profile	profile_t;
7407be7a6cSMaksim Yevmenkin typedef struct profile *profile_p;
7507be7a6cSMaksim Yevmenkin 
7607be7a6cSMaksim Yevmenkin profile_p		profile_get_descriptor(uint16_t uuid);
7707be7a6cSMaksim Yevmenkin profile_attr_create_p	profile_get_attr(const profile_p profile, uint16_t attr);
7807be7a6cSMaksim Yevmenkin 
7907be7a6cSMaksim Yevmenkin profile_attr_create_t	common_profile_create_service_record_handle;
8007be7a6cSMaksim Yevmenkin profile_attr_create_t	common_profile_create_service_class_id_list;
8107be7a6cSMaksim Yevmenkin profile_attr_create_t	common_profile_create_bluetooth_profile_descriptor_list;
8207be7a6cSMaksim Yevmenkin profile_attr_create_t	common_profile_create_language_base_attribute_id_list;
8307be7a6cSMaksim Yevmenkin profile_attr_create_t	common_profile_create_service_provider_name;
8407be7a6cSMaksim Yevmenkin profile_attr_create_t	common_profile_create_string8;
8513040bc9SMaksim Yevmenkin profile_attr_create_t	common_profile_create_service_availability;
8607be7a6cSMaksim Yevmenkin profile_attr_create_t	rfcomm_profile_create_protocol_descriptor_list;
8707be7a6cSMaksim Yevmenkin profile_attr_create_t	obex_profile_create_protocol_descriptor_list;
8807be7a6cSMaksim Yevmenkin profile_attr_create_t	obex_profile_create_supported_formats_list;
89f2505d70SMaksim Yevmenkin profile_attr_create_t	bnep_profile_create_protocol_descriptor_list;
90f2505d70SMaksim Yevmenkin profile_attr_create_t	bnep_profile_create_security_description;
9107be7a6cSMaksim Yevmenkin 
92f2505d70SMaksim Yevmenkin profile_data_valid_t	common_profile_always_valid;
9307be7a6cSMaksim Yevmenkin profile_data_valid_t	common_profile_server_channel_valid;
9407be7a6cSMaksim Yevmenkin profile_data_valid_t	obex_profile_data_valid;
9507be7a6cSMaksim Yevmenkin 
9607be7a6cSMaksim Yevmenkin #endif /* ndef _PROFILE_H_ */
9707be7a6cSMaksim Yevmenkin 
98