@@ -11,17 +11,10 @@ public enum OSCState
1111 ERROR ,
1212 }
1313
14- struct OSCMessage
15- {
16- public string address ;
17- public float value ;
18- public bool success ;
19- }
20-
2114 public class OSCManager
2215 {
2316 private Socket _receiver ;
24- private Socket _sender ;
17+ // private Socket _sender;
2518
2619 private ILogger _logger ;
2720
@@ -30,12 +23,15 @@ public class OSCManager
3023
3124 public OSCState State { get ; private set ; } = OSCState . IDLE ;
3225
26+ private ExpressionsMapper _expressionMapper ;
27+
3328 private int _receivingPort ;
3429 private const int _defaultPort = 8889 ;
3530 private const int connectionTimeout = 10000 ;
3631
37- public OSCManager ( ILogger iLogger , int ? port = null ) {
32+ public OSCManager ( ILogger iLogger , ExpressionsMapper expressionsMapper , int ? port = null ) {
3833 _logger = iLogger ;
34+ _expressionMapper = expressionsMapper ;
3935 _receivingPort = port ?? _defaultPort ;
4036 _receiver = new Socket ( AddressFamily . InterNetwork , SocketType . Dgram , ProtocolType . Udp ) ;
4137
@@ -68,7 +64,7 @@ private void OSCListen()
6864 {
6965 var length = _receiver . Receive ( buffer ) ;
7066 OSCMessage msg = ParseOSCMessage ( buffer , length ) ;
71- // map the message
67+ _expressionMapper . MapMessage ( msg ) ;
7268 }
7369 }
7470 catch ( Exception ) { }
@@ -99,17 +95,9 @@ OSCMessage ParseOSCMessage(byte[] buffer, int length)
9995 return msg ;
10096 // skipping , char
10197 currentStep ++ ;
102- // now, let's skip the types section
103- for ( int i = currentStep ; i < length ; i ++ )
104- {
105- if ( buffer [ i ] == 0 )
106- {
107- currentStep = i + 1 ;
108- // we've reached the end of this segment, let's normalize it to 4 bytes and skip ahead
109- if ( currentStep % 4 != 0 ) { currentStep += 4 - ( currentStep % 4 ) ; }
110- break ;
111- }
112- }
98+
99+ ParseOSCTypes ( buffer , length , ref currentStep ) ; // we purposefully ignore the types, for now
100+
113101 float value = ParseOSCFloat ( buffer , length , ref currentStep ) ;
114102
115103 msg . value = value ;
@@ -142,6 +130,24 @@ string ParseOSCAddress(byte[] buffer, int length, ref int step)
142130 return oscAddress ;
143131 }
144132
133+ string ParseOSCTypes ( byte [ ] buffer , int length , ref int step )
134+ {
135+ string types = "" ;
136+ // now, let's skip the types section
137+ for ( int i = step ; i < length ; i ++ )
138+ {
139+ if ( buffer [ i ] == 0 )
140+ {
141+ step = i + 1 ;
142+ // we've reached the end of this segment, let's normalize it to 4 bytes and skip ahead
143+ if ( step % 4 != 0 ) { step += 4 - ( step % 4 ) ; }
144+ break ;
145+ }
146+ types += ( char ) buffer [ i ] ;
147+ }
148+ return types ;
149+ }
150+
145151 float ParseOSCFloat ( byte [ ] buffer , int length , ref int step )
146152 {
147153 var valueSection = buffer [ step ..length ] ;
0 commit comments