FreeWRL/FreeX3D  3.0.0
OSCcallbacks.c
1 #ifdef OLDCODE
2 OLDCODE
3 OLDCODE#include <config.h>
4 OLDCODE
5 OLDCODE#if !defined(IPHONE) && !defined(_ANDROID) && !defined(GLES2) && !defined(AQUA)
6 OLDCODE
7 OLDCODE/* DJTRACK_OSCSENSORS */
8 OLDCODE
9 OLDCODE/*
10 OLDCODE * NOTE -- this file is #include'd into Component_Networking.c , it exists solely to separate out the handler code
11 OLDCODE * in order to make it easier to override with custom implementations and not muddle Component_Networking.c itself.
12 OLDCODE *
13 OLDCODE * Do not add this file into a Makefile or build system's source list.
14 OLDCODE */
15 OLDCODE
16 OLDCODE
17 OLDCODEtypedef int (*functions)(const char *path, const char *types, lo_arg **argv, int argc, void *data, void *user_data) ;
18 OLDCODE
19 OLDCODEint nullOSC_handler(const char *path, const char *types, lo_arg **argv, int argc, void *data, void *user_data) ;
20 OLDCODEint defaultOSC_handler(const char *path, const char *types, lo_arg **argv, int argc, void *data, void *user_data) ;
21 OLDCODE
22 OLDCODEint nullOSC_handler(const char *path, const char *types, lo_arg **argv, int argc, void *data, void *user_data)
23 OLDCODE{
24 OLDCODE struct X3D_OSC_Sensor *realnode ;
25 OLDCODE realnode = (struct X3D_OSC_Sensor *) user_data ;
26 OLDCODE
27 OLDCODE printf("nullOSC_handler (%s,%d) : description='%s'\n",__FILE__,__LINE__, realnode->description->strptr) ;
28 OLDCODE printf("nullOSC_handler (%s,%d) : filter=%s\n",__FILE__,__LINE__, realnode->filter->strptr) ;
29 OLDCODE printf("nullOSC_handler (%s,%d) : listenfor=%s\n",__FILE__,__LINE__, realnode->listenfor->strptr);
30 OLDCODE
31 OLDCODE printf("%s (%d,%s) <-", path, argc,types);
32 OLDCODE int i ;
33 OLDCODE for (i=0 ; i < argc ; i++) {
34 OLDCODE switch (types[i]) {
35 OLDCODE case 'f':
36 OLDCODE printf(" %c:%f", types[i], argv[i]->f) ;
37 OLDCODE break;
38 OLDCODE case 'i':
39 OLDCODE printf(" %c:%d", types[i], argv[i]->i) ;
40 OLDCODE break;
41 OLDCODE default:
42 OLDCODE printf(" %c:??", types[i]) ;
43 OLDCODE break;
44 OLDCODE }
45 OLDCODE }
46 OLDCODE printf("\n\n") ;
47 OLDCODE fflush(stdout);
48 OLDCODE
49 OLDCODE return 0;
50 OLDCODE}
51 OLDCODEint defaultOSC_handler(const char *path, const char *types, lo_arg **argv, int argc, void *data, void *user_data)
52 OLDCODE{
53 OLDCODE struct X3D_OSC_Sensor *realnode ;
54 OLDCODE realnode = (struct X3D_OSC_Sensor *) user_data ;
55 OLDCODE
56 OLDCODE int willOverflow = 0;
57 OLDCODE int freeCount;
58 OLDCODE int iFltCount;
59 OLDCODE int iIntCount;
60 OLDCODE int iStrCount;
61 OLDCODE int iBlobCount;
62 OLDCODE int iMidiCount;
63 OLDCODE int iOtherCount;
64 OLDCODE /* Get the incoming counts */
65 OLDCODE utilOSCcounts((char*) types,&iIntCount,&iFltCount,&iStrCount,&iBlobCount,&iMidiCount,&iOtherCount);
66 OLDCODE
67 OLDCODE /*
68 OLDCODE * If we have FIFOs operative, then use them...
69 OLDCODE * We need to do an atomic transaction, ie do not push
70 OLDCODE * any values unless there is space for all the values.
71 OLDCODE */
72 OLDCODE if (realnode->FIFOsize > 0) {
73 OLDCODE freeCount = RingBuffer_freeLen(realnode->_floatInpFIFO) ;
74 OLDCODE if (iFltCount > freeCount) {willOverflow++;}
75 OLDCODE
76 OLDCODE freeCount = RingBuffer_freeLen(realnode->_int32InpFIFO ) ;
77 OLDCODE if ((iIntCount+iMidiCount) > freeCount) {willOverflow++;}
78 OLDCODE
79 OLDCODE freeCount = RingBuffer_freeLen(realnode->_stringInpFIFO) ;
80 OLDCODE if ((iStrCount+iBlobCount+iOtherCount) > freeCount) {willOverflow++;}
81 OLDCODE }
82 OLDCODE
83 OLDCODE/*
84 OLDCODE printf("defaultOSC_handler : description='%s'\n", realnode->description->strptr) ;
85 OLDCODE printf("defaultOSC_handler : filter=%s\n", realnode->filter->strptr) ;
86 OLDCODE printf("defaultOSC_handler : listenfor=%s (got %s)\n", realnode->listenfor->strptr,types);
87 OLDCODE printf("defaultOSC_handler : enabled=%d\n", realnode->enabled);
88 OLDCODE printf("defaultOSC_handler : gotEvents=%d\n", realnode->gotEvents);
89 OLDCODE printf("defaultOSC_handler : FIFOsize=%d\n", realnode->FIFOsize);
90 OLDCODE printf("defaultOSC_handler : _status=%d\n", realnode->_status);
91 OLDCODE*/
92 OLDCODE
93 OLDCODE/*
94 OLDCODE printf("defaultOSC_handler int _renderFlags=%d\n", realnode->_renderFlags);
95 OLDCODE printf("defaultOSC_handler int _hit=%d\n", realnode->_hit);
96 OLDCODE printf("defaultOSC_handler int _change=%d\n", realnode->_change);
97 OLDCODE printf("defaultOSC_handler int _nparents=%d\n", realnode->_nparents);
98 OLDCODE printf("defaultOSC_handler int _nparalloc=%d\n", realnode->_nparalloc);
99 OLDCODE printf("defaultOSC_handler int _ichange=%d\n", realnode->_ichange);
100 OLDCODE printf("defaultOSC_handler int _nodeType=%d\n", realnode->_nodeType);
101 OLDCODE printf("defaultOSC_handler int referenceCount=%d\n", realnode->referenceCount);
102 OLDCODE printf("defaultOSC_handler int _defaultContainer=%d\n", realnode->_defaultContainer);
103 OLDCODE*/
104 OLDCODE
105 OLDCODE/*
106 OLDCODE printf("defaultOSC_handler struct Multi_Float _floatInpFIFO;
107 OLDCODE printf("defaultOSC_handler struct Multi_Float _floatOutFIFO;
108 OLDCODE printf("defaultOSC_handler struct Multi_Int32 _int32InpFIFO;
109 OLDCODE printf("defaultOSC_handler struct Multi_Int32 _int32OutFIFO;
110 OLDCODE printf("defaultOSC_handler struct Multi_Node _nodeInpFIFO;
111 OLDCODE printf("defaultOSC_handler struct Multi_Node _nodeOutFIFO;
112 OLDCODE printf("defaultOSC_handler struct Multi_String _stringInpFIFO;
113 OLDCODE printf("defaultOSC_handler struct Multi_String _stringOutFIFO;
114 OLDCODE*/
115 OLDCODE if (willOverflow > 0) {
116 OLDCODE printf("defaultOSC_handler would overflow in %s,%d\n", __FILE__,__LINE__);
117 OLDCODE } else {
118 OLDCODE /* stringInp */
119 OLDCODE #if TRACK_OSC_MSG
120 OLDCODE printf("%s (%d,%s) <-", path, argc,types);
121 OLDCODE #endif
122 OLDCODE int i ;
123 OLDCODE int pushBuffError = 0 ;
124 OLDCODE for (i=0 ; i < argc ; i++) {
125 OLDCODE switch (types[i]) {
126 OLDCODE case 'f':
127 OLDCODE #if TRACK_OSC_MSG
128 OLDCODE printf(" %c:%f", types[i], argv[i]->f) ;
129 OLDCODE #endif
130 OLDCODE realnode->floatInp = (argv[i]->f) ;
131 OLDCODE if (realnode->FIFOsize > 0) {
132 OLDCODE #if TRACK_OSC_MSG
133 OLDCODE printf("_floatInpFIFO = %p\n",realnode->_floatInpFIFO) ;
134 OLDCODE #endif
135 OLDCODE pushBuffError = RingBuffer_pushFloat(realnode->_floatInpFIFO, argv[i]->f) ;
136 OLDCODE }
137 OLDCODE break;
138 OLDCODE case 'i':
139 OLDCODE #if TRACK_OSC_MSG
140 OLDCODE printf(" %c:%d", types[i], argv[i]->i) ;
141 OLDCODE #endif
142 OLDCODE realnode->int32Inp = (argv[i]->i) ;
143 OLDCODE if (realnode->FIFOsize > 0) {
144 OLDCODE #if TRACK_OSC_MSG
145 OLDCODE printf("_int32InpFIFO = %p\n",realnode->_int32InpFIFO) ;
146 OLDCODE #endif
147 OLDCODE pushBuffError = RingBuffer_pushInt(realnode->_int32InpFIFO, argv[i]->i) ;
148 OLDCODE }
149 OLDCODE break;
150 OLDCODE case 's':
151 OLDCODE #if TRACK_OSC_MSG
152 OLDCODE printf(" %c:%s", types[i], (char *)argv[i]) ;
153 OLDCODE #endif
154 OLDCODE if (realnode->stringInp != NULL) {FREE(realnode->stringInp);}
155 OLDCODE realnode->stringInp = newASCIIString((char *)argv[i]);
156 OLDCODE if (realnode->FIFOsize > 0) {
157 OLDCODE #if TRACK_OSC_MSG
158 OLDCODE printf("_stringInpFIFO = %p\n",realnode->_stringInpFIFO) ;
159 OLDCODE #endif
160 OLDCODE pushBuffError = RingBuffer_pushPointer(realnode->_stringInpFIFO, (newASCIIString((char *)argv[i]))->strptr);
161 OLDCODE }
162 OLDCODE break;
163 OLDCODE default:
164 OLDCODE printf(" %c:??", types[i]) ;
165 OLDCODE lo_arg_pp(types[i], argv[i]);
166 OLDCODE break;
167 OLDCODE }
168 OLDCODE #if TRACK_OSC_MSG
169 OLDCODE printf(" ");
170 OLDCODE #endif
171 OLDCODE }
172 OLDCODE #if TRACK_OSC_MSG
173 OLDCODE printf("\n\n") ;
174 OLDCODE #endif
175 OLDCODE fflush(stdout);
176 OLDCODE
177 OLDCODE if (realnode->enabled) {
178 OLDCODE realnode->gotEvents += 1;
179 OLDCODE MARK_EVENT (X3D_NODE(realnode), offsetof(struct X3D_OSC_Sensor, gotEvents));
180 OLDCODE }
181 OLDCODE }
182 OLDCODE #if TRACK_OSC_MSG
183 OLDCODE printf("\n");
184 OLDCODE printf("defaultOSC_handler : description='%s'\n", realnode->description->strptr) ;
185 OLDCODE printf("defaultOSC_handler : int32Inp=%d\n", realnode->int32Inp);
186 OLDCODE printf("defaultOSC_handler : floatInp=%f\n", realnode->floatInp);
187 OLDCODE printf("defaultOSC_handler : stringInp=%s\n", realnode->stringInp->strptr);
188 OLDCODE printf("\n");
189 OLDCODE
190 OLDCODE if (realnode->FIFOsize > 0) {
191 OLDCODE int qLen , iTemp ;
192 OLDCODE float fTemp ;
193 OLDCODE char * sTemp ;
194 OLDCODE
195 OLDCODE qLen = RingBuffer_qLen(realnode->_floatInpFIFO) ;
196 OLDCODE if (qLen > 0) {
197 OLDCODE fTemp = RingBuffer_peekUnion(realnode->_floatInpFIFO)->f ;
198 OLDCODE printf("%d : float length=%d , head=%f\n",__LINE__,qLen,fTemp);
199 OLDCODE }
200 OLDCODE
201 OLDCODE qLen = RingBuffer_qLen(realnode->_int32InpFIFO) ;
202 OLDCODE if (qLen > 0) {
203 OLDCODE iTemp = RingBuffer_peekUnion(realnode->_int32InpFIFO)->i ;
204 OLDCODE printf("%d : int length=%d , head=%d\n",__LINE__,qLen,iTemp);
205 OLDCODE }
206 OLDCODE
207 OLDCODE qLen = RingBuffer_qLen(realnode->_stringInpFIFO) ;
208 OLDCODE if (qLen > 0) {
209 OLDCODE sTemp = (char *)RingBuffer_peekUnion(realnode->_stringInpFIFO)->p ;
210 OLDCODE printf("%d : string length=%d , head=%s\n",__LINE__,qLen,sTemp);
211 OLDCODE }
212 OLDCODE }
213 OLDCODE printf("\n");
214 OLDCODE #endif
215 OLDCODE
216 OLDCODE return 0; /* Tell OSC we have swallowed the packet and that it should NOT try any other handlers */
217 OLDCODE}
218 OLDCODE
219 OLDCODE#define OSCfuncCount 2
220 OLDCODEfunctions OSCcallbacks[OSCfuncCount] = {nullOSC_handler,defaultOSC_handler};
221 OLDCODEchar *OSCfuncNames[OSCfuncCount] = { "", "default" };
222 OLDCODE
223 OLDCODE#endif /* IPHONE */
224 #endif //OLDCODE
225