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