]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - drivers/staging/csr/csr_msgconv.h
staging: csr: remove csr_utf16.c
[karo-tx-linux.git] / drivers / staging / csr / csr_msgconv.h
1 #ifndef CSR_MSGCONV_H__
2 #define CSR_MSGCONV_H__
3
4 /*****************************************************************************
5
6             (c) Cambridge Silicon Radio Limited 2010
7             All rights reserved and confidential information of CSR
8
9             Refer to LICENSE.txt included with this source for details
10             on the license terms.
11
12 *****************************************************************************/
13
14 #include <linux/types.h>
15 #include "csr_prim_defs.h"
16 #include "csr_sched.h"
17
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21
22 typedef size_t (CsrMsgSizeofFunc)(void *msg);
23 typedef u8 *(CsrMsgSerializeFunc)(u8 *buffer, size_t *length, void *msg);
24 typedef void (CsrMsgFreeFunc)(void *msg);
25 typedef void *(CsrMsgDeserializeFunc)(u8 *buffer, size_t length);
26
27 /* Converter entry for one message type */
28 typedef struct CsrMsgConvMsgEntry
29 {
30     u16              msgType;
31     CsrMsgSizeofFunc      *sizeofFunc;
32     CsrMsgSerializeFunc   *serFunc;
33     CsrMsgDeserializeFunc *deserFunc;
34     CsrMsgFreeFunc        *freeFunc;
35 } CsrMsgConvMsgEntry;
36
37 /* Optional lookup function */
38 typedef CsrMsgConvMsgEntry *(CsrMsgCustomLookupFunc)(CsrMsgConvMsgEntry *ce, u16 msgType);
39
40 /* All converter entries for one specific primitive */
41 typedef struct CsrMsgConvPrimEntry
42 {
43     u16                   primType;
44     const CsrMsgConvMsgEntry   *conv;
45     CsrMsgCustomLookupFunc     *lookupFunc;
46     struct CsrMsgConvPrimEntry *next;
47 } CsrMsgConvPrimEntry;
48
49 typedef struct
50 {
51     CsrMsgConvPrimEntry *profile_converters;
52     void *(*deserialize_data)(u16 primType, size_t length, u8 * data);
53     u8 (*free_message)(u16 primType, u8 *data);
54     size_t (*sizeof_message)(u16 primType, void *msg);
55     u8 *(*serialize_message)(u16 primType, void *msg,
56                                    size_t * length,
57                                    u8 * buffer);
58 } CsrMsgConvEntry;
59
60 size_t CsrMsgConvSizeof(u16 primType, void *msg);
61 u8 *CsrMsgConvSerialize(u8 *buffer, size_t maxBufferOffset, size_t *offset, u16 primType, void *msg);
62 void CsrMsgConvCustomLookupRegister(u16 primType, CsrMsgCustomLookupFunc *lookupFunc);
63 void CsrMsgConvInsert(u16 primType, const CsrMsgConvMsgEntry *ce);
64 CsrMsgConvPrimEntry *CsrMsgConvFind(u16 primType);
65 CsrMsgConvMsgEntry *CsrMsgConvFindEntry(u16 primType, u16 msgType);
66 CsrMsgConvMsgEntry *CsrMsgConvFindEntryByMsg(u16 primType, const void *msg);
67 CsrMsgConvEntry *CsrMsgConvGet(void);
68 CsrMsgConvEntry *CsrMsgConvInit(void);
69 #ifdef ENABLE_SHUTDOWN
70 void CsrMsgConvDeinit(void);
71 #endif /* ENABLE_SHUTDOWN */
72
73 /* SHOULD BE INTERNAL TO FRAMEWORK AKA DEPRECATED */
74
75 u32 CsrCharStringSerLen(const char *str);
76 u32 CsrUtf8StringSerLen(const u8 *str);
77 u32 CsrUtf16StringSerLen(const u16 *str);
78
79 /* Prototypes for primitive type serializers */
80 void CsrUint8Ser(u8 *buffer, size_t *offset, u8 value);
81 void CsrUint16Ser(u8 *buffer, size_t *offset, u16 value);
82 void CsrUint32Ser(u8 *buffer, size_t *offset, u32 value);
83 void CsrMemCpySer(u8 *buffer, size_t *offset, const void *value, size_t length);
84 void CsrCharStringSer(u8 *buffer, size_t *offset, const char *value);
85 void CsrUtf8StringSer(u8 *buffer, size_t *offset, const u8 *value);
86 void CsrUtf16StringSer(u8 *buffer, size_t *offset, const u16 *value);
87 void CsrVoidPtrSer(u8 *buffer, size_t *offset, void *ptr);
88 void CsrSizeSer(u8 *buffer, size_t *offset, size_t value);
89
90 void CsrUint8Des(u8 *value, u8 *buffer, size_t *offset);
91 void CsrUint16Des(u16 *value, u8 *buffer, size_t *offset);
92 void CsrUint32Des(u32 *value, u8 *buffer, size_t *offset);
93 void CsrMemCpyDes(void *value, u8 *buffer, size_t *offset, size_t length);
94 void CsrCharStringDes(char **value, u8 *buffer, size_t *offset);
95 void CsrUtf8StringDes(u8 **value, u8 *buffer, size_t *offset);
96 void CsrUtf16StringDes(u16 **value, u8 *buffer, size_t *offset);
97 void CsrVoidPtrDes(void **value, u8 *buffer, size_t *offset);
98 void CsrSizeDes(size_t *value, u8 *buffer, size_t *offset);
99
100 size_t CsrEventSizeof(void *msg);
101 u8 *CsrEventSer(u8 *ptr, size_t *len, void *msg);
102 void *CsrEventDes(u8 *buffer, size_t length);
103
104 size_t CsrEventCsrUint8Sizeof(void *msg);
105 u8 *CsrEventCsrUint8Ser(u8 *ptr, size_t *len, void *msg);
106 void *CsrEventCsrUint8Des(u8 *buffer, size_t length);
107
108 size_t CsrEventCsrUint16Sizeof(void *msg);
109 u8 *CsrEventCsrUint16Ser(u8 *ptr, size_t *len, void *msg);
110 void *CsrEventCsrUint16Des(u8 *buffer, size_t length);
111
112 size_t CsrEventCsrUint32Sizeof(void *msg);
113 u8 *CsrEventCsrUint32Ser(u8 *ptr, size_t *len, void *msg);
114 void *CsrEventCsrUint32Des(u8 *buffer, size_t length);
115
116 size_t CsrEventCsrUint16CsrUint8Sizeof(void *msg);
117 u8 *CsrEventCsrUint16CsrUint8Ser(u8 *ptr, size_t *len, void *msg);
118 void *CsrEventCsrUint16CsrUint8Des(u8 *buffer, size_t length);
119
120 size_t CsrEventCsrUint16CsrUint16Sizeof(void *msg);
121 u8 *CsrEventCsrUint16CsrUint16Ser(u8 *ptr, size_t *len, void *msg);
122 void *CsrEventCsrUint16CsrUint16Des(u8 *buffer, size_t length);
123
124 size_t CsrEventCsrUint16CsrUint32Sizeof(void *msg);
125 u8 *CsrEventCsrUint16CsrUint32Ser(u8 *ptr, size_t *len, void *msg);
126 void *CsrEventCsrUint16CsrUint32Des(u8 *buffer, size_t length);
127
128 size_t CsrEventCsrUint16CsrCharStringSizeof(void *msg);
129 u8 *CsrEventCsrUint16CsrCharStringSer(u8 *ptr, size_t *len, void *msg);
130 void *CsrEventCsrUint16CsrCharStringDes(u8 *buffer, size_t length);
131
132 size_t CsrEventCsrUint32CsrUint16Sizeof(void *msg);
133 u8 *CsrEventCsrUint32CsrUint16Ser(u8 *ptr, size_t *len, void *msg);
134 void *CsrEventCsrUint32CsrUint16Des(u8 *buffer, size_t length);
135
136 size_t CsrEventCsrUint32CsrCharStringSizeof(void *msg);
137 u8 *CsrEventCsrUint32CsrCharStringSer(u8 *ptr, size_t *len, void *msg);
138 void *CsrEventCsrUint32CsrCharStringDes(u8 *buffer, size_t length);
139
140 #ifdef __cplusplus
141 }
142 #endif
143
144 #endif