Dat kan. Zal morgen in de codebase kijken.
Dat kan. Zal morgen in de codebase kijken.
Alvast bedankt, Patrick
Alvast bedankt. En mocht het niet lukken dan Helaas
Code:unit AirLite; interface (************************************************************************/ /* CONFIGURATION FLAGS */ /************************************************************************) const b_CUE_RESET_ENABLED_BY_LINE = $01; b_CUE_RESET_ENABLED_BY_MIC_USB_VOIP = $02; b_CUE_RESET_BY_FADER = $04; b_CUE_RESET_BY_ON = $08; b_CUE_RESET_BY_FADER_AND_ON = $10; b_ON_AIR1_ENABLED_BY_LINE = $01; b_ON_AIR1_ENABLED_BY_MIC_USB_VOIP = $02; b_ON_AIR2_ENABLED_BY_LINE = $04; b_ON_AIR2_ENABLED_BY_MIC_USB_VOIP = $08; b_STUDIO_REMOTE_COUGH_ENABLE = $01; b_STUDIO_REMOTE_COMM_ENABLE = $02; b_STUDIO_REMOTE_COMM_PRIVATE = $04; //***********************************************************************/ // ENUMERATIONS */ //***********************************************************************/ type Module_t = ( MODULE_1, MODULE_2, MODULE_3, MODULE_4, MODULE_5, MODULE_6, MODULE_7, MODULE_8, MODULE_ALL = $FF ); Cue_t = ( CUE_MOD_1, CUE_MOD_2, CUE_MOD_3, CUE_MOD_4, CUE_MOD_5, CUE_MOD_6, CUE_MOD_7, CUE_MOD_8, CUE_AUX, CUE_NON_STOP, CUE_AIR, CUE_ALL = $FF ); Color_t = ( LED_OFF, LED_RED, LED_GREEN ); Ctrl_blink_t = ( CTRL_SLOW, CTRL_NORMAL, CTRL_FAST ); Ctrl_id_t = ( CTRL_1A, CTRL_2A, CTRL_3A, CTRL_4A, CTRL_5A, CTRL_6A, CTRL_7A, CTRL_8A, CTRL_1B, CTRL_2B, CTRL_3B, CTRL_4B, CTRL_5B, CTRL_6B, CTRL_7B, CTRL_8B, CTRL_ALL=$FF ); Request_t = ( FIRMWARE_REQ, (* Control: 0x20 - 0x3F *) CTRL_SWITCH_REQ = $20, (* Config: $40 - $5F *) CONFIG_AUTO_ON_REQ = $40, CONFIG_CUE_RESET_REQ, CONFIG_ON_AIR_REQ, CONFIG_CRM_MUTE_REQ, CONFIG_CRM_AUTO_CUE_RESET_REQ, CONFIG_STUDIO_REMOTE_REQ, CONFIG_CUE_INTERLOCK_REQ, CONFIG_GPO_REQ, CONFIG_CUE_REQ, CONFIG_ON_REQ, CONFIG_FADER_RESERVE_REQ, CONFIG_SILENCE_DETECTION_REQ, CONFIG_PHANTOM_REQ, CONFIG_MIC_AT_LINE_REQ, CONFIG_AUTO_OFF_REQ, (* States: $60 - $7F *) STATE_ON_REQ = $60, STATE_CUE_REQ, STATE_FADER_REQ, STATE_AUTO_CUE_REQ, STATE_SRC_SEL_REQ, STATE_NON_STOP_REQ, STATE_MIC_ON_REQ, STATE_GPO_REQ, STATE_ON_AIR_REQ, STATE_SILENCE_DETECTION_REQ, STATE_MODULE_REQ, STATE_CRM_MUTE_REQ, STATE_TRACK_REQ, STATE_COMM_REQ, STATE_COUGH_REQ, STATE_VT_REQ (* Misc.: $80 - $FF *) ); Action_t = ( DEACTIVATE, ACTIVATE, TOGGLE ); Config_t = ( DISABLE, ENABLE ); Callback_id_t = ( FIRMWARE, (* Control: $20 - $3F *) CTRL_LED = $20, CTRL_LED_BLINK, CTRL_SWITCH, (* Config: $40 - $5F *) CONFIG_AUTO_ON = $40, CONFIG_CUE_RESET, CONFIG_ON_AIR, CONFIG_CRM_MUTE, CONFIG_CRM_AUTO_CUE_RESET, CONFIG_STUDIO_REMOTE, CONFIG_CUE_INTERLOCK, CONFIG_GPO, CONFIG_CUE, CONFIG_ON, CONFIG_FADER_RESERVE, CONFIG_SILENCE_DETECTION, CONFIG_PHANTOM, CONFIG_MIC_AT_LINE, CONFIG_AUTO_OFF, (* States: $60 - $7F *) STATE_ON = $60, STATE_CUE, STATE_FADER, STATE_AUTO_CUE, STATE_SRC_SEL, STATE_NON_STOP, STATE_MIC_ON, STATE_GPO, STATE_ON_AIR, STATE_SILENCE_DETECTION, STATE_MODULE, STATE_CRM_MUTE, STATE_TRACK, STATE_COMM, STATE_COUGH, STATE_VT, STATE_PHONE_RINGING, (* Misc.: $80 - $FF *) METERING = $80 ); Callback_type_t = ( REPLY, EVENT ); Gpo_t = ( GPO_1, GPO_2 ); Gpo_trigger_t = ( TR_NONE, TR_ON_AIR1, TR_ON_AIR2, TR_TEL_RING, TR_MIC_ON, TR_NON_STOP, TR_MOD1_ACTIVE, TR_MOD2_ACTIVE, TR_MOD3_ACTIVE, TR_MOD4_ACTIVE, TR_MOD5_ACTIVE, TR_MOD6_ACTIVE, TR_MOD7_ACTIVE, TR_MOD8_ACTIVE ); Gpo_mode_t = ( NON_INVERTED_OUTPUT, INVERTED_OUTPUT ); Gpo_type_t = ( CONTINUES, PULSE_BY_ON, PULSE_BY_OFF, PULSE_BY_ON_OFF ); Selected_src_t = ( SRC_LINE, SRC_MIC_USB_VOIP ); Time_unit_t = ( SECONDS, MINUTES ); Audio_src_t = ( PROG_LEFT, PROG_RIGHT, PROG_STEREO ); Silence_detection_t = ( IDLE, ALARM ); Track_t = ( TRACK_STOPPED, TRACK_PLAYING, TRACK_ENDING ); State_t = ( INACTIVE, ACTIVE ); //***********************************************************************/ // DATA STRUCTURES */ //***********************************************************************/ Version_st = packed record major: integer; minor: integer; build: integer; revision: integer; end; Gpo_st = packed record trigger: Gpo_trigger_t; mode: Gpo_mode_t; _type: Gpo_type_t; time: Byte; end; const CUE_RESET_ENABLED_BY_LINE = $01; CUE_RESET_ENABLED_BY_MIC_USB_VOIP = $02; CUE_RESET_BY_FADER = $04; CUE_RESET_BY_ON = $08; CUE_RESET_BY_FADER_AND_ON = $10; type Cue_reset_config_st = Byte; const ON_AIR1_ENABLED_BY_LINE = $01; ON_AIR1_ENABLED_BY_MIC_USB_VOIP = $02; ON_AIR2_ENABLED_BY_LINE = $04; ON_AIR2_ENABLED_BY_MIC_USB_VOIP = $08; type On_air_config_st = byte; const STUDIO_REMOTE_COUGH_ENABLE = $01; STUDIO_REMOTE_COMM_ENABLE = $02; STUDIO_REMOTE_COMM_PRIVATE = $04; type Studio_remote_config_st = Byte; Cue_st = packed record active: Color_t; inactive: Color_t; end; On_st = packed record on_active: Color_t; on_and_fader_active: Color_t; inactive: Color_t; end; Firmware_st = packed record major: Byte; minor: Byte; version: array[0..99] of AnsiChar; end; Ctrl_led_st = packed record id: Ctrl_id_t; color: Color_t; end; Ctrl_led_blink_st = packed record id: Ctrl_id_t; color_on: Color_t; color_off: Color_t; speed: Ctrl_blink_t; end; Ctrl_switch_st = packed record sw_states: Word; end; Module_1_8_st = packed record module1: State_t; module2: State_t; module3: State_t; module4: State_t; module5: State_t; module6: State_t; module7: State_t; module8: State_t; end; Module_1_3_st = packed record module1: State_t; module2: State_t; module3: State_t; end; State_cue_st = packed record module1: State_t; module2: State_t; module3: State_t; module4: State_t; module5: State_t; module6: State_t; module7: State_t; module8: State_t; aux: State_t; nonstop: State_t; air: State_t; end; Config_cue_reset_st = packed record module1: Cue_reset_config_st; module2: Cue_reset_config_st; module3: Cue_reset_config_st; module4: Cue_reset_config_st; module5: Cue_reset_config_st; module6: Cue_reset_config_st; module7: Cue_reset_config_st; module8: Cue_reset_config_st; end; Config_on_air_st = packed record module1: On_air_config_st; module2: On_air_config_st; module3: On_air_config_st; module4: On_air_config_st; module5: On_air_config_st; module6: On_air_config_st; module7: On_air_config_st; module8: On_air_config_st; end; Config_studio_remote_st = packed record module1: Studio_remote_config_st; module2: Studio_remote_config_st; module3: Studio_remote_config_st; end; Config_gpo_st = packed record gpo1: Gpo_st; gpo2: Gpo_st; end; Config_cue_st = packed record module1: Cue_st ; module2: Cue_st ; module3: Cue_st ; module4: Cue_st ; module5: Cue_st ; module6: Cue_st ; module7: Cue_st ; module8: Cue_st ; aux: Cue_st; nonstop: Cue_st; air: Cue_st; end; Config_on_st = packed record module1: On_st; module2: On_st; module3: On_st; module4: On_st; module5: On_st; module6: On_st; module7: On_st; module8: On_st; end; State_auto_cue_st = packed record auto_cue_crm: State_t; auto_cue_announcer: State_t; end; State_src_sel_st = packed record module1: Selected_src_t; module2: Selected_src_t; module3: Selected_src_t; module4: Selected_src_t; module5: Selected_src_t; module6: Selected_src_t; module7: Selected_src_t; module8: Selected_src_t; end; State_st = packed record state: State_t; end; State_gpo_st = packed record gpo1: State_t; gpo2: State_t; end; State_on_air_st = packed record on_air1: State_t; on_air2: State_t; end; Config_silence_detection_st = packed record threshold: char; interval: Byte; interval_unit: Time_unit_t; source: Audio_src_t; config: Config_t; end; State_silence_detection_st = packed record state: Silence_detection_t; end; State_track_st = packed record module1: Track_t; module2: Track_t; module3: Track_t; module4: Track_t; module5: Track_t; module6: Track_t; module7: Track_t; module8: Track_t; end; Metering_st = packed record prog_left_db: Single; prog_right_db: Single; phones_left_db: Single; phones_right_db: Single; crm_left_db: Single; crm_right_db: Single; end; (*************************************************************************/ /* UNION (used to cast the callback data to the corresponding structure) */ /*************************************************************************) Callback_data_t = packed record case integer of 0: (FIRMWARE: ^Firmware_st); 1: (CTRL_LED: ^Ctrl_led_st); 2: (CTRL_LED_BLINK: ^Ctrl_led_blink_st); 3: (CTRL_SWITCH: ^Ctrl_switch_st); 4: (CONFIG_AUTO_ON: ^Module_1_8_st); 5: (CONFIG_CUE_RESET: ^Config_cue_reset_st); 6: (CONFIG_ON_AIR: ^Config_on_air_st); 7: (CONFIG_CRM_MUTE: ^Module_1_3_st); 8: (CONFIG_CRM_AUTO_CUE_RESET: ^Module_1_3_st); 9: (CONFIG_STUDIO_REMOTE: ^Config_studio_remote_st); 10: (CONFIG_CUE_INTERLOCK: ^State_st); 11: (CONFIG_GPO: ^Config_gpo_st); 12: (CONFIG_CUE: ^Config_cue_st); 13: (CONFIG_ON: ^Config_on_st); 14: (CONFIG_FADER_RESERVE: ^Module_1_8_st); 15: (CONFIG_SILENCE_DETECTION: ^Config_silence_detection_st); 16: (CONFIG_PHANTOM: ^Module_1_3_st); 17: (CONFIG_MIC_AT_LINE: ^Module_1_3_st); 18: (CONFIG_AUTO_OFF: ^Module_1_8_st); 19: (STATE_ON: ^Module_1_8_st); 20: (STATE_CUE: ^State_cue_st); 21: (STATE_FADER: ^Module_1_8_st); 22: (STATE_AUTO_CUE: ^State_auto_cue_st); 23: (STATE_SRC_SEL: ^State_src_sel_st); 24: (STATE_NON_STOP: ^State_st); 25: (STATE_MIC_ON: ^State_st); 26: (STATE_GPO: ^State_gpo_st); 27: (STATE_ON_AIR: ^State_on_air_st); 28: (STATE_SILENCE_DETECTION: ^State_silence_detection_st); 29: (STATE_MODULE: ^Module_1_8_st); 30: (STATE_CRM_MUTE: ^State_st); 31: (STATE_TRACK: ^State_track_st); 32: (STATE_COMM: ^Module_1_3_st); 33: (STATE_COUGH: ^Module_1_3_st); 34: (STATE_VT: ^Module_1_8_st); 35: (STATE_PHONE_RINGING: ^State_st); 36: (METERING: ^Metering_st); end; Callback_st = packed record id: Callback_id_t; _type: Callback_type_t; data: Callback_data_t; end; //* Airlite callback prototype */ AIRLITE_CB = procedure(var cb: Callback_st; userdata: pointer); //typedef void(*AIRLITE_CB)( Callback_st *cb, void *userdata ); //* Airlite HANDLE */ __AIRLITE_HANDLE = THandle; AIRLITE_HANDLE = ^__AIRLITE_HANDLE; const AIRLITE_API_VERSION_MAJOR = 1; AIRLITE_API_VERSION_MINOR = 1; AIRLITE_API_VERSION_BUILD = 64; AIRLITE_API_VERSION_REVISION = 0; function airlite_library_version(var version: Version_st): PByte; cdecl; external 'airlite.dll'; //**************************************************************************************/ //* SETUP */ //**************************************************************************************/ function airlite_open(var remotehost: byte; udp_recv_port: Word; udp_send_port: Word ): AIRLITE_HANDLE; cdecl; external 'airlite.dll'; function airlite_close(handle: AIRLITE_HANDLE): Integer; cdecl; external 'airlite.dll'; function airlite_register_callback(handle: AIRLITE_HANDLE; callback: AIRLITE_CB; userdata: Pointer): Integer; cdecl; external 'airlite.dll'; function airlite_unregister_callback(handle: AIRLITE_HANDLE): Integer; cdecl; external 'airlite.dll'; //**************************************************************************************/ //* REQUEST */ //**************************************************************************************/ function airlite_request(handle: AIRLITE_HANDLE; request: Request_t): Integer; cdecl; external 'airlite.dll'; //**************************************************************************************/ //* CONTROL SECTION */ //**************************************************************************************/ function airlite_ctrl_led(handle: AIRLITE_HANDLE; id: Ctrl_id_t; color: Color_t): Integer; cdecl; external 'airlite.dll'; function airlite_ctrl_led_blink(handle: AIRLITE_HANDLE; id: Ctrl_id_t; color_on, color_off: Color_t; blink_speed: Ctrl_blink_t): Integer; cdecl; external 'airlite.dll'; //**************************************************************************************/ //* REMOTE CONTROL */ //**************************************************************************************/ function airlite_remote_on(handle: AIRLITE_HANDLE; module: Module_t; action: Action_t): Integer; cdecl; external 'airlite.dll'; function airlite_remote_cue(handle: AIRLITE_HANDLE; cue: Cue_t;action: Action_t): Integer; cdecl; external 'airlite.dll'; function airlite_remote_cue_reset(handle: AIRLITE_HANDLE): Integer; cdecl; external 'airlite.dll'; function airlite_remote_auto_cue_announcer(handle: AIRLITE_HANDLE; action: Action_t): Integer; cdecl; external 'airlite.dll'; function airlite_remote_auto_cue_crm(handle: AIRLITE_HANDLE; action: Action_t): Integer; cdecl; external 'airlite.dll'; function airlite_remote_non_stop(handle: AIRLITE_HANDLE; action: Action_t): Integer; cdecl; external 'airlite.dll'; function airlite_remote_comm(handle: AIRLITE_HANDLE; module: Module_t; action: Action_t): Integer; cdecl; external 'airlite.dll'; function airlite_remote_cough(handle: AIRLITE_HANDLE; module: Module_t; action: Action_t): Integer; cdecl; external 'airlite.dll'; function airlite_remote_vt(handle: AIRLITE_HANDLE; module: Module_t; action: Action_t): Integer; cdecl; external 'airlite.dll'; //**************************************************************************************/ //* CONFIGURATION */ //**************************************************************************************/ function airlite_config_save(handle: AIRLITE_HANDLE): integer; cdecl; external 'airlite.dll'; function airlite_config_auto_on(handle: AIRLITE_HANDLE; module: Module_t; config: Config_t): Integer; cdecl; external 'airlite.dll'; function airlite_config_cue_reset(handle: AIRLITE_HANDLE; module: Module_t; flags: Byte): Integer; cdecl; external 'airlite.dll'; function airlite_config_on_air(handle: AIRLITE_HANDLE; module: Module_t; flags: Byte): Integer; cdecl; external 'airlite.dll'; function airlite_config_crm_mute(handle: AIRLITE_HANDLE; module: Module_t; config: Config_t): Integer; cdecl; external 'airlite.dll'; function airlite_config_crm_auto_cue_reset(handle: AIRLITE_HANDLE; module: Module_t; config: Config_t): Integer; cdecl; external 'airlite.dll'; function airlite_config_studio_remote(handle: AIRLITE_HANDLE; module:Module_t; flags: Byte): Integer; cdecl; external 'airlite.dll'; function airlite_config_phantom(handle: AIRLITE_HANDLE; module:Module_t; config: Config_t): Integer; cdecl; external 'airlite.dll'; function airlite_config_mic_at_line(handle: AIRLITE_HANDLE; module:Module_t; config: Config_t): Integer; cdecl; external 'airlite.dll'; function airlite_config_auto_off(handle: AIRLITE_HANDLE; module:Module_t; config: Config_t): Integer; cdecl; external 'airlite.dll'; function airlite_config_cue_interlock(handle: AIRLITE_HANDLE; config: Config_t): Integer; cdecl; external 'airlite.dll'; function airlite_config_gpo(handle: AIRLITE_HANDLE; gpo: Gpo_t; trigger: Gpo_trigger_t; mode: Gpo_mode_t; _type: Gpo_type_t; time: Byte): Integer; cdecl; external 'airlite.dll'; function airlite_config_cue(handle: AIRLITE_HANDLE; cue: Cue_t; active: Color_t; inactive: Color_t): Integer; cdecl; external 'airlite.dll'; function airlite_config_on(handle: AIRLITE_HANDLE; module: Module_t; active, active_and_fader, inactive: Color_t): Integer; cdecl; external 'airlite.dll'; function airlite_config_fader_reserve(handle: AIRLITE_HANDLE; module: Module_t; config: Config_t): Integer; cdecl; external 'airlite.dll'; function airlite_config_silence_detection(handle: AIRLITE_HANDLE; threshold: ShortInt; interval: Byte; interval_unit: Time_unit_t; source: Audio_src_t; config: Config_t): Integer; cdecl; external 'airlite.dll'; //**************************************************************************************/ //* MISCELLANEOUS //**************************************************************************************/ function airlite_authenticate(handle: AIRLITE_HANDLE; key: Integer; data: Pointer; len: Integer): Integer; cdecl; external 'airlite.dll'; // len must be multiple of 16 function airlite_track_state(handle: AIRLITE_HANDLE; module: Module_t; state: Track_t): Integer; cdecl; external 'airlite.dll'; function airlite_get_last_error(handle: AIRLITE_HANDLE): PANsiChar; cdecl; external 'airlite.dll'; procedure airlite_logging(handle: AIRLITE_HANDLE; state: Boolean); cdecl; external 'airlite.dll'; implementation end.
Alvast bedankt, Patrick
Bedankt Patrick voor het delen.
Eens kijken of ik een versie string eruit kan toveren.
PS: als je nog een klein demo progje hebt dan is dat fijn aangezien ik geen Air mengpaneel hier heb liggen.
Last edited by DragonFly; 30-Jun-22 at 12:25.
Zag inderdaad cdecl staan en werkt voor zover compileren. Bedankt voor de TIP i.v.m stdcall. Waarschijnlijk liep die daarom vast bij airlite_close :-)
Ik kan de demo EXE als test sturen naar een kennis die deze AIR heeft. Wat dan verder moet gebeuren is een tweede.
Denk wat betreft mijn FinalPlayer niemand de AIRLITE gebruikt.
Als je nog iets uit de FinalPlayer wilt gebruiken dan is dat geen probleem maar aangezien jouw programma weet je het allemaal wel
Groetjes.
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks