@@ -14,32 +14,32 @@ macro_rules! as_c_string {
1414}
1515pub enum DispatchResult {
1616 Null ,
17- Exception ( SIMCONNECT_RECV_EXCEPTION ) ,
18- Open ( SIMCONNECT_RECV_OPEN ) ,
19- Quit ( SIMCONNECT_RECV_QUIT ) ,
20- Event ( SIMCONNECT_RECV_EVENT ) ,
21- EventObjectAddRemove ( SIMCONNECT_RECV_EVENT_OBJECT_ADDREMOVE ) ,
22- EventFilename ( SIMCONNECT_RECV_EVENT_FILENAME ) ,
23- EventFrame ( SIMCONNECT_RECV_EVENT_FRAME ) ,
24- SimobjectData ( SIMCONNECT_RECV_SIMOBJECT_DATA ) ,
25- SimobjectDataBytype ( SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE ) ,
26- WeatherObservation ( SIMCONNECT_RECV_WEATHER_OBSERVATION ) ,
27- CloudState ( SIMCONNECT_RECV_CLOUD_STATE ) ,
28- AssignedObjectId ( SIMCONNECT_RECV_ASSIGNED_OBJECT_ID ) ,
29- ReservedKey ( SIMCONNECT_RECV_RESERVED_KEY ) ,
30- CustomAction ( SIMCONNECT_RECV_CUSTOM_ACTION ) ,
31- SystemState ( SIMCONNECT_RECV_SYSTEM_STATE ) ,
32- ClientData ( SIMCONNECT_RECV_CLIENT_DATA ) ,
33- EventWeatherMode ( SIMCONNECT_RECV_EVENT_WEATHER_MODE ) ,
34- AirportList ( SIMCONNECT_RECV_AIRPORT_LIST ) ,
35- VorList ( SIMCONNECT_RECV_VOR_LIST ) ,
36- NdbList ( SIMCONNECT_RECV_NDB_LIST ) ,
37- WaypointList ( SIMCONNECT_RECV_WAYPOINT_LIST ) ,
38- EventMultiplayerServerStarted ( SIMCONNECT_RECV_EVENT_MULTIPLAYER_SERVER_STARTED ) ,
39- EventMultiplayerClientStarted ( SIMCONNECT_RECV_EVENT_MULTIPLAYER_CLIENT_STARTED ) ,
40- EventMultiplayerSessionEnded ( SIMCONNECT_RECV_EVENT_MULTIPLAYER_SESSION_ENDED ) ,
41- EventRaceEnd ( SIMCONNECT_RECV_EVENT_RACE_END ) ,
42- EventRaceLap ( SIMCONNECT_RECV_EVENT_RACE_LAP ) ,
17+ Exception ( * const SIMCONNECT_RECV_EXCEPTION ) ,
18+ Open ( * const SIMCONNECT_RECV_OPEN ) ,
19+ Quit ( * const SIMCONNECT_RECV_QUIT ) ,
20+ Event ( * const SIMCONNECT_RECV_EVENT ) ,
21+ EventObjectAddRemove ( * const SIMCONNECT_RECV_EVENT_OBJECT_ADDREMOVE ) ,
22+ EventFilename ( * const SIMCONNECT_RECV_EVENT_FILENAME ) ,
23+ EventFrame ( * const SIMCONNECT_RECV_EVENT_FRAME ) ,
24+ SimobjectData ( * const SIMCONNECT_RECV_SIMOBJECT_DATA ) ,
25+ SimobjectDataBytype ( * const SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE ) ,
26+ WeatherObservation ( * const SIMCONNECT_RECV_WEATHER_OBSERVATION ) ,
27+ CloudState ( * const SIMCONNECT_RECV_CLOUD_STATE ) ,
28+ AssignedObjectId ( * const SIMCONNECT_RECV_ASSIGNED_OBJECT_ID ) ,
29+ ReservedKey ( * const SIMCONNECT_RECV_RESERVED_KEY ) ,
30+ CustomAction ( * const SIMCONNECT_RECV_CUSTOM_ACTION ) ,
31+ SystemState ( * const SIMCONNECT_RECV_SYSTEM_STATE ) ,
32+ ClientData ( * const SIMCONNECT_RECV_CLIENT_DATA ) ,
33+ EventWeatherMode ( * const SIMCONNECT_RECV_EVENT_WEATHER_MODE ) ,
34+ AirportList ( * const SIMCONNECT_RECV_AIRPORT_LIST ) ,
35+ VorList ( * const SIMCONNECT_RECV_VOR_LIST ) ,
36+ NdbList ( * const SIMCONNECT_RECV_NDB_LIST ) ,
37+ WaypointList ( * const SIMCONNECT_RECV_WAYPOINT_LIST ) ,
38+ EventMultiplayerServerStarted ( * const SIMCONNECT_RECV_EVENT_MULTIPLAYER_SERVER_STARTED ) ,
39+ EventMultiplayerClientStarted ( * const SIMCONNECT_RECV_EVENT_MULTIPLAYER_CLIENT_STARTED ) ,
40+ EventMultiplayerSessionEnded ( * const SIMCONNECT_RECV_EVENT_MULTIPLAYER_SESSION_ENDED ) ,
41+ EventRaceEnd ( * const SIMCONNECT_RECV_EVENT_RACE_END ) ,
42+ EventRaceLap ( * const SIMCONNECT_RECV_EVENT_RACE_LAP ) ,
4343}
4444
4545pub struct SimConnector {
@@ -87,121 +87,115 @@ impl SimConnector {
8787 return match ( * data_buf) . dwID as SIMCONNECT_RECV_ID {
8888 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_NULL => Ok ( DispatchResult :: Null ) ,
8989 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_EXCEPTION => {
90- let point: * const SIMCONNECT_RECV_EXCEPTION = mem:: transmute_copy ( & data_buf) ;
91- return Ok ( DispatchResult :: Exception ( * point) ) ;
90+ let point: * const SIMCONNECT_RECV_EXCEPTION = mem:: transmute_copy ( & data_buf) ;
91+ return Ok ( DispatchResult :: Exception ( point) ) ;
9292 }
9393 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_OPEN => {
94- let point: * const SIMCONNECT_RECV_OPEN = mem:: transmute_copy ( & data_buf) ;
95- return Ok ( DispatchResult :: Open ( * point) )
94+ let point: * const SIMCONNECT_RECV_OPEN = mem:: transmute_copy ( & data_buf) ;
95+ return Ok ( DispatchResult :: Open ( point) ) ;
9696 }
9797 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_QUIT => {
98- let point: * const SIMCONNECT_RECV_QUIT = mem:: transmute_copy ( & data_buf) ;
99- return Ok ( DispatchResult :: Quit ( * point) )
98+ let point: * const SIMCONNECT_RECV_QUIT = mem:: transmute_copy ( & data_buf) ;
99+ return Ok ( DispatchResult :: Quit ( point) ) ;
100100 }
101101 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_EVENT => {
102- let point: * const SIMCONNECT_RECV_EVENT = mem:: transmute_copy ( & data_buf) ;
103- return Ok ( DispatchResult :: Event ( * point) )
102+ let point: * const SIMCONNECT_RECV_EVENT = mem:: transmute_copy ( & data_buf) ;
103+ return Ok ( DispatchResult :: Event ( point) ) ;
104104 }
105105 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_EVENT_OBJECT_ADDREMOVE => {
106- let point: * const SIMCONNECT_RECV_EVENT_OBJECT_ADDREMOVE = mem:: transmute_copy ( & data_buf) ;
107- return Ok ( DispatchResult :: EventObjectAddRemove ( * point) )
106+ let point: * const SIMCONNECT_RECV_EVENT_OBJECT_ADDREMOVE = mem:: transmute_copy ( & data_buf) ;
107+ return Ok ( DispatchResult :: EventObjectAddRemove ( point) ) ;
108108 }
109109 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_EVENT_FILENAME => {
110- let point: * const SIMCONNECT_RECV_EVENT_FILENAME = mem:: transmute_copy ( & data_buf) ;
111- return Ok ( DispatchResult :: EventFilename ( * point) )
110+ let point: * const SIMCONNECT_RECV_EVENT_FILENAME = mem:: transmute_copy ( & data_buf) ;
111+ return Ok ( DispatchResult :: EventFilename ( point) ) ;
112112 }
113113 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_EVENT_FRAME => {
114- let point: * const SIMCONNECT_RECV_EVENT_FRAME = mem:: transmute_copy ( & data_buf) ;
115- return Ok ( DispatchResult :: EventFrame ( * point) )
114+ let point: * const SIMCONNECT_RECV_EVENT_FRAME = mem:: transmute_copy ( & data_buf) ;
115+ return Ok ( DispatchResult :: EventFrame ( point) ) ;
116116 }
117117 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_SIMOBJECT_DATA => {
118- let point: * const SIMCONNECT_RECV_SIMOBJECT_DATA = mem:: transmute_copy ( & data_buf) ;
119- return Ok ( DispatchResult :: SimobjectData ( * point) )
118+ let point: * const SIMCONNECT_RECV_SIMOBJECT_DATA = mem:: transmute_copy ( & data_buf) ;
119+ return Ok ( DispatchResult :: SimobjectData ( point) ) ;
120120 }
121121 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_SIMOBJECT_DATA_BYTYPE => {
122- let point: * const SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE = mem:: transmute_copy ( & data_buf) ;
123- return Ok ( DispatchResult :: SimobjectDataBytype ( * point) )
122+ let point: * const SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE = mem:: transmute_copy ( & data_buf) ;
123+ return Ok ( DispatchResult :: SimobjectDataBytype ( point) ) ;
124124 }
125125 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_WEATHER_OBSERVATION => {
126- let point: * const SIMCONNECT_RECV_WEATHER_OBSERVATION = mem:: transmute_copy ( & data_buf) ;
127- return Ok ( DispatchResult :: WeatherObservation ( * point) )
126+ let point: * const SIMCONNECT_RECV_WEATHER_OBSERVATION = mem:: transmute_copy ( & data_buf) ;
127+ return Ok ( DispatchResult :: WeatherObservation ( point) ) ;
128128 }
129129 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_CLOUD_STATE => {
130- let point: * const SIMCONNECT_RECV_CLOUD_STATE = mem:: transmute_copy ( & data_buf) ;
131- return Ok ( DispatchResult :: CloudState ( * point) )
130+ let point: * const SIMCONNECT_RECV_CLOUD_STATE = mem:: transmute_copy ( & data_buf) ;
131+ return Ok ( DispatchResult :: CloudState ( point) ) ;
132132 }
133133 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_ASSIGNED_OBJECT_ID => {
134- let point: * const SIMCONNECT_RECV_ASSIGNED_OBJECT_ID = mem:: transmute_copy ( & data_buf) ;
135- return Ok ( DispatchResult :: AssignedObjectId ( * point) )
134+ let point: * const SIMCONNECT_RECV_ASSIGNED_OBJECT_ID = mem:: transmute_copy ( & data_buf) ;
135+ return Ok ( DispatchResult :: AssignedObjectId ( point) ) ;
136136 }
137137 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_RESERVED_KEY => {
138- let point: * const SIMCONNECT_RECV_RESERVED_KEY = mem:: transmute_copy ( & data_buf) ;
139- return Ok ( DispatchResult :: ReservedKey ( * point) )
138+ let point: * const SIMCONNECT_RECV_RESERVED_KEY = mem:: transmute_copy ( & data_buf) ;
139+ return Ok ( DispatchResult :: ReservedKey ( point) ) ;
140140 }
141141 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_CUSTOM_ACTION => {
142- let point: * const SIMCONNECT_RECV_CUSTOM_ACTION = mem:: transmute_copy ( & data_buf) ;
143- return Ok ( DispatchResult :: CustomAction ( * point) )
142+ let point: * const SIMCONNECT_RECV_CUSTOM_ACTION = mem:: transmute_copy ( & data_buf) ;
143+ return Ok ( DispatchResult :: CustomAction ( point) ) ;
144144 }
145145 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_SYSTEM_STATE => {
146- let point: * const SIMCONNECT_RECV_SYSTEM_STATE = mem:: transmute_copy ( & data_buf) ;
147- return Ok ( DispatchResult :: SystemState ( * point) )
146+ let point: * const SIMCONNECT_RECV_SYSTEM_STATE = mem:: transmute_copy ( & data_buf) ;
147+ return Ok ( DispatchResult :: SystemState ( point) ) ;
148148 }
149149 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_CLIENT_DATA => {
150- let point: * const SIMCONNECT_RECV_CLIENT_DATA = mem:: transmute_copy ( & data_buf) ;
151- return Ok ( DispatchResult :: ClientData ( * point) )
150+ let point: * const SIMCONNECT_RECV_CLIENT_DATA = mem:: transmute_copy ( & data_buf) ;
151+ return Ok ( DispatchResult :: ClientData ( point) ) ;
152152 }
153153 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_EVENT_WEATHER_MODE => {
154- let point: * const SIMCONNECT_RECV_EVENT_WEATHER_MODE = mem:: transmute_copy ( & data_buf) ;
155- return Ok ( DispatchResult :: EventWeatherMode ( * point) )
154+ let point: * const SIMCONNECT_RECV_EVENT_WEATHER_MODE = mem:: transmute_copy ( & data_buf) ;
155+ return Ok ( DispatchResult :: EventWeatherMode ( point) ) ;
156156 }
157157 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_AIRPORT_LIST => {
158- let point: * const SIMCONNECT_RECV_AIRPORT_LIST = mem:: transmute_copy ( & data_buf) ;
159- return Ok ( DispatchResult :: AirportList ( * point) )
158+ let point: * const SIMCONNECT_RECV_AIRPORT_LIST = mem:: transmute_copy ( & data_buf) ;
159+ return Ok ( DispatchResult :: AirportList ( point) ) ;
160160 }
161161 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_VOR_LIST => {
162- let point: * const SIMCONNECT_RECV_VOR_LIST = mem:: transmute_copy ( & data_buf) ;
163- return Ok ( DispatchResult :: VorList ( * point) )
162+ let point: * const SIMCONNECT_RECV_VOR_LIST = mem:: transmute_copy ( & data_buf) ;
163+ return Ok ( DispatchResult :: VorList ( point) ) ;
164164 }
165165 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_NDB_LIST => {
166- let point: * const SIMCONNECT_RECV_NDB_LIST = mem:: transmute_copy ( & data_buf) ;
167- return Ok ( DispatchResult :: NdbList ( * point) )
166+ let point: * const SIMCONNECT_RECV_NDB_LIST = mem:: transmute_copy ( & data_buf) ;
167+ return Ok ( DispatchResult :: NdbList ( point) ) ;
168168 }
169169 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_WAYPOINT_LIST => {
170- let point: * const SIMCONNECT_RECV_WAYPOINT_LIST = mem:: transmute_copy ( & data_buf) ;
171- return Ok ( DispatchResult :: WaypointList ( * point) )
170+ let point: * const SIMCONNECT_RECV_WAYPOINT_LIST = mem:: transmute_copy ( & data_buf) ;
171+ return Ok ( DispatchResult :: WaypointList ( point) ) ;
172172 }
173173 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_EVENT_MULTIPLAYER_SERVER_STARTED => {
174- let point: * const SIMCONNECT_RECV_EVENT_MULTIPLAYER_SERVER_STARTED = mem:: transmute_copy ( & data_buf) ;
175- return Ok ( DispatchResult :: EventMultiplayerServerStarted ( * point) )
174+ let point: * const SIMCONNECT_RECV_EVENT_MULTIPLAYER_SERVER_STARTED = mem:: transmute_copy ( & data_buf) ;
175+ return Ok ( DispatchResult :: EventMultiplayerServerStarted ( point) ) ;
176176 }
177177 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_EVENT_MULTIPLAYER_CLIENT_STARTED => {
178- let point: * const SIMCONNECT_RECV_EVENT_MULTIPLAYER_CLIENT_STARTED = mem:: transmute_copy ( & data_buf) ;
179- return Ok ( DispatchResult :: EventMultiplayerClientStarted ( * point) )
178+ let point: * const SIMCONNECT_RECV_EVENT_MULTIPLAYER_CLIENT_STARTED = mem:: transmute_copy ( & data_buf) ;
179+ return Ok ( DispatchResult :: EventMultiplayerClientStarted ( point) ) ;
180180 }
181181 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_EVENT_MULTIPLAYER_SESSION_ENDED => {
182- let point: * const SIMCONNECT_RECV_EVENT_MULTIPLAYER_SESSION_ENDED = mem:: transmute_copy ( & data_buf) ;
183- return Ok ( DispatchResult :: EventMultiplayerSessionEnded ( * point) )
182+ let point: * const SIMCONNECT_RECV_EVENT_MULTIPLAYER_SESSION_ENDED = mem:: transmute_copy ( & data_buf) ;
183+ return Ok ( DispatchResult :: EventMultiplayerSessionEnded ( point) ) ;
184184 }
185185 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_EVENT_RACE_END => {
186- let point: * const SIMCONNECT_RECV_EVENT_RACE_END = mem:: transmute_copy ( & data_buf) ;
187- return Ok ( DispatchResult :: EventRaceEnd ( * point) )
186+ let point: * const SIMCONNECT_RECV_EVENT_RACE_END = mem:: transmute_copy ( & data_buf) ;
187+ return Ok ( DispatchResult :: EventRaceEnd ( point) ) ;
188188 }
189189 SIMCONNECT_RECV_ID_SIMCONNECT_RECV_ID_EVENT_RACE_LAP => {
190- let point: * const SIMCONNECT_RECV_EVENT_RACE_LAP = mem:: transmute_copy ( & data_buf) ;
191- return Ok ( DispatchResult :: EventRaceLap ( * point) )
190+ let point: * const SIMCONNECT_RECV_EVENT_RACE_LAP = mem:: transmute_copy ( & data_buf) ;
191+ return Ok ( DispatchResult :: EventRaceLap ( point) ) ;
192192 }
193193 _ => Err ( "Unhandled RECV_ID" )
194194 }
195195 }
196196 }
197197}
198198
199- pub fn get_data_as_struct < T > ( data : DWORD ) -> T {
200- unsafe {
201- return mem:: transmute_copy ( & data) ;
202- }
203- }
204-
205199#[ cfg( test) ]
206200mod tests {
207201 use super :: * ;
0 commit comments