1 /*
2  * Copyright 2008-2014 Arsen Chaloyan
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  * $Id: mrcp_types.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $
17  */
18 
19 #ifndef MRCP_TYPES_H
20 #define MRCP_TYPES_H
21 
22 /**
23  * @file mrcp_types.h
24  * @brief Basic MRCP Types
25  */
26 
27 #include "mrcp.h"
28 
29 APT_BEGIN_EXTERN_C
30 
31 /** Protocol version */
32 typedef enum {
33 
34 	MRCP_VERSION_UNKNOWN = 0,  /**< Unknown version */
35 	MRCP_VERSION_1 = 1,        /**< MRCPv1 (RFC4463) */
36 	MRCP_VERSION_2 = 2         /**< MRCPv2 (draft-ietf-speechsc-mrcpv2-20) */
37 } mrcp_version_e;
38 
39 /** Enumeration of MRCP resource types */
40 typedef enum {
41 	MRCP_SYNTHESIZER_RESOURCE, /**< Synthesizer resource */
42 	MRCP_RECOGNIZER_RESOURCE,  /**< Recognizer resource */
43 	MRCP_RECORDER_RESOURCE,    /**< Recorder resource */
44 	MRCP_VERIFIER_RESOURCE,    /**< Verifier resource */
45 
46 	MRCP_RESOURCE_TYPE_COUNT   /**< Number of resources */
47 } mrcp_resource_type_e;
48 
49 /* MRCPv2 specifies request-id as 32bit unsigned integer,
50  * while MRCPv1 doesn't limit this value (1 * DIGIT).
51  * Some MRCPv1 clients use too long request-id.
52  * To support them #define TOO_LONG_MRCP_REQUEST_ID
53  */
54 #ifdef TOO_LONG_MRCP_REQUEST_ID
55 /** MRCP request identifier */
56 typedef apr_uint64_t  mrcp_request_id;
57 /** Format to log MRCP request identifier */
58 #define MRCP_REQUEST_ID_FMT    APR_UINT64_T_FMT
59 #else
60 /** MRCP request identifier */
61 typedef apr_uint32_t  mrcp_request_id;
62 /** Format to log MRCP request identifier */
63 #define MRCP_REQUEST_ID_FMT    "d"
64 #endif
65 
66 
67 /** Method identifier associated with method name */
68 typedef apr_size_t mrcp_method_id;
69 /** Resource identifier associated with resource name */
70 typedef apr_size_t mrcp_resource_id;
71 
72 
73 /** Opaque MRCP message declaration */
74 typedef struct mrcp_message_t mrcp_message_t;
75 /** Opaque MRCP resource declaration */
76 typedef struct mrcp_resource_t mrcp_resource_t;
77 /** Opaque MRCP resource factory declaration */
78 typedef struct mrcp_resource_factory_t mrcp_resource_factory_t;
79 
80 
81 APT_END_EXTERN_C
82 
83 #endif /* MRCP_TYPES_H */
84