-
Notifications
You must be signed in to change notification settings - Fork 1
Integrating AFV Native
The VATSIM Client Author must:
-
Translate their frequencies to correct frequencies in Hz, correcting for any truncation that has occurred due to client limitations. (That is: x.22MHz -> x.225, etc)
-
Apply any HF Aliasing as appropriate
-
Regularly update their client position and radio set information with AFV-Native
-
Manage probing
AudioDeviceto get audio device information, and offer an interface to end-users so they may pick which devices they want to work. -
Implement a mic peak meter for set-up that advises users to set their mics to peak in the -12dB to -4dB range. (Look at the standalone AFV client and XSB for recommended styles for this meter)
The main integration points in AFV-Native at this time are:
- The
afv_native::Clientclass, which provides a high level abstracted AFV multi-radio stack simulation. - The
afv_native::audio::AudioDeviceclass, which has all of the audio hardware enumeration methods directly exported.
note: AFV-Native is not completely threadsafe on it's own (it provides thread-safety across the audio playback boundary, but not across the main API - decisions on how to manage that are left to the integrator).
-
create a libevent2
event_basethat it will run to keep data moving. Thisevent_baseshould be able to service requests with no longer than a 15-20ms interval. (XSB runs the event_base in a dedicated thread to avoid hitching issues created by running it between frames). -
Instantiate a
afv_native::Clientwith the event_base, path to the resources, URL, and number of radios desired. -
Attach a ClientEventCallback handler on the
Clientobject that will be called from theevent_basethread to notify the client of changes in AFV-Native's state. -
Set the credentials and callsign on the
Clientobject. -
Update the radio states on the
Clientobject -
Call
connect()to start the AFV connection. -
Continue to update the states whilst the client is connected.