@@ -93,38 +93,38 @@ def rawAppend(self, data):
93
93
94
94
def getBinary (self ):
95
95
"""Returns the binary message (so far) with typetags."""
96
- address = OSCArgument (self .address )[1 ]
96
+ address = OSCArgument (self .address )[1 ]
97
97
typetags = OSCArgument (self .typetags )[1 ]
98
98
return address + typetags + self .message
99
99
100
100
def __repr__ (self ):
101
101
return self .getBinary ()
102
102
103
+
103
104
def readString (data ):
104
- length = string .find (data , "\0 " )
105
+ length = data .find ("\0 " )
105
106
nextData = int (math .ceil ((length + 1 ) / 4.0 ) * 4 )
106
107
return (data [0 :length ], data [nextData :])
107
108
108
109
109
110
def readBlob (data ):
110
- length = struct .unpack (">i" , data [0 :4 ])[0 ]
111
+ length = struct .unpack (">i" , data [0 :4 ])[0 ]
111
112
nextData = int (math .ceil ((length ) / 4.0 ) * 4 ) + 4
112
113
return (data [4 :length + 4 ], data [nextData :])
113
114
114
115
115
116
def readInt (data ):
116
- if (len (data )< 4 ):
117
+ if (len (data ) < 4 ):
117
118
print ("Error: too few bytes for int" , data , len (data ))
118
119
rest = data
119
120
integer = 0
120
121
else :
121
122
integer = struct .unpack (">i" , data [0 :4 ])[0 ]
122
- rest = data [4 :]
123
+ rest = data [4 :]
123
124
124
125
return (integer , rest )
125
126
126
127
127
-
128
128
def readLong (data ):
129
129
"""Tries to interpret the next 8 bytes of the data
130
130
as a 64-bit signed integer."""
@@ -143,30 +143,29 @@ def readDouble(data):
143
143
return (big , rest )
144
144
145
145
146
-
147
146
def readFloat (data ):
148
- if (len (data )< 4 ):
147
+ if (len (data ) < 4 ):
149
148
print ("Error: too few bytes for float" , data , len (data ))
150
149
rest = data
151
150
float = 0
152
151
else :
153
152
float = struct .unpack (">f" , data [0 :4 ])[0 ]
154
- rest = data [4 :]
153
+ rest = data [4 :]
155
154
156
155
return (float , rest )
157
156
158
157
159
- def OSCBlob (next ):
158
+ def OSCBlob (data ):
160
159
"""Convert a string into an OSC Blob,
161
160
returning a (typetag, data) tuple."""
162
161
163
- if type ( next ) == type ( "" ):
164
- length = len (next )
165
- padded = math .ceil ((len (next )) / 4.0 ) * 4
166
- binary = struct .pack (">i%ds" % (padded ), length , next )
167
- tag = 'b'
162
+ if isinstance ( data , string_types ):
163
+ length = len (data )
164
+ padded = math .ceil ((len (data )) / 4.0 ) * 4
165
+ binary = struct .pack (">i%ds" % (padded ), length , data )
166
+ tag = 'b'
168
167
else :
169
- tag = ''
168
+ tag = ''
170
169
binary = ''
171
170
172
171
return (tag , binary )
@@ -215,10 +214,12 @@ def parseArgs(args):
215
214
return parsed
216
215
217
216
218
-
219
217
def decodeOSC (data ):
220
218
"""Converts a typetagged OSC message to a Python list."""
221
- table = { "i" : readInt , "f" : readFloat , "s" : readString , "b" : readBlob , "d" : readDouble }
219
+ table = {
220
+ "i" : readInt , "f" : readFloat , "s" : readString , "b" : readBlob ,
221
+ "d" : readDouble
222
+ }
222
223
decoded = []
223
224
address , rest = readString (data )
224
225
typetags = ""
@@ -227,7 +228,7 @@ def decodeOSC(data):
227
228
time , rest = readLong (rest )
228
229
# decoded.append(address)
229
230
# decoded.append(time)
230
- while len (rest )> 0 :
231
+ while len (rest ) > 0 :
231
232
length , rest = readInt (rest )
232
233
decoded .append (decodeOSC (rest [:length ]))
233
234
rest = rest [length :]
@@ -257,19 +258,19 @@ def __init__(self):
257
258
self .callbacks = {}
258
259
self .add (self .unbundler , "#bundle" )
259
260
260
- def handle (self , data , source = None ):
261
+ def handle (self , data , source = None ):
261
262
"""Given OSC data, tries to call the callback with the
262
263
right address."""
263
264
decoded = decodeOSC (data )
264
265
self .dispatch (decoded , source )
265
266
266
- def dispatch (self , message , source = None ):
267
+ def dispatch (self , message , source = None ):
267
268
"""Sends decoded OSC data to an appropriate calback"""
268
- if type (message [0 ]) == list :
269
+ if isinstance (message [0 ], list ) :
269
270
# smells like nested messages
270
- for msg in message :
271
+ for msg in message :
271
272
self .dispatch (msg , source )
272
- elif type (message [0 ]) == str :
273
+ elif isinstance (message [0 ], string_types ) :
273
274
# got a single message
274
275
try :
275
276
address = message [0 ]
@@ -297,7 +298,7 @@ def add(self, callback, name):
297
298
"""Adds a callback to our set of callbacks,
298
299
or removes the callback with name if callback
299
300
is None."""
300
- if callback == None :
301
+ if callback is None :
301
302
del self .callbacks [name ]
302
303
else :
303
304
self .callbacks [name ] = callback
@@ -308,13 +309,6 @@ def unbundler(self, messages):
308
309
for message in messages [2 :]:
309
310
self .dispatch (message )
310
311
311
-
312
-
313
-
314
-
315
-
316
-
317
-
318
312
if __name__ == "__main__" :
319
313
hexDump ("Welcome to the OSC testing program." )
320
314
print ()
@@ -337,7 +331,7 @@ def unbundler(self, messages):
337
331
strings .append (14.5 )
338
332
strings .append (- 400 )
339
333
340
- raw = strings .getBinary ()
334
+ raw = strings .getBinary ()
341
335
342
336
hexDump (raw )
343
337
@@ -363,12 +357,12 @@ def unbundler(self, messages):
363
357
print ("Testing Blob types." )
364
358
365
359
blob = OSCMessage ()
366
- blob .append ("" ,"b" )
367
- blob .append ("b" ,"b" )
368
- blob .append ("bl" ,"b" )
369
- blob .append ("blo" ,"b" )
370
- blob .append ("blob" ,"b" )
371
- blob .append ("blobs" ,"b" )
360
+ blob .append ("" , "b" )
361
+ blob .append ("b" , "b" )
362
+ blob .append ("bl" , "b" )
363
+ blob .append ("blo" , "b" )
364
+ blob .append ("blob" , "b" )
365
+ blob .append ("blobs" , "b" )
372
366
blob .append (42 )
373
367
374
368
hexDump (blob .getBinary ())
0 commit comments