pjsipua-win 0.1.26

Rust library PJSUA2
// src/pjsua2_wrapper.h - Complete header with full API
#ifndef PJSUA2_WRAPPER_H
#define PJSUA2_WRAPPER_H


#ifdef __cplusplus
extern "C" {
#endif

// Endpoint management
int pjsua2_create_endpoint();
int pjsua2_init_endpoint(int log_level);
int pjsua2_create_transport(int port);
int pjsua2_start();
void pjsua2_destroy();

// Account management
int pjsua2_create_account(
    const char* id_uri,
    const char* registrar_uri,
    const char* username,
    const char* password,
    void (*on_reg_state)(int is_registered),
    void (*on_incoming_call)(int call_id, const char* remote_uri)
);

int pjsua2_create_account_simple(
    const char* id_uri,
    const char* registrar_uri,
    const char* username,
    const char* password
);

// Call management
int pjsua2_make_call(int acc_id, const char* dst_uri);
int pjsua2_answer_call(int call_id, int code);
int pjsua2_hangup_call(int call_id);

// Audio device management
int pjsua2_get_audio_device_count();
int pjsua2_get_audio_device_info(int index, char* name, int name_size,
                                int* is_capture, int* is_playback);
int pjsua2_set_audio_devices(int capture_dev, int playback_dev);

// Callback setup
void pjsua2_set_callbacks(
    void (*on_reg_state)(int acc_id, int is_registered),
    void (*on_incoming_call)(int acc_id, int call_id, const char* remote_uri),
    void (*on_call_state)(int call_id, int state),
    void (*on_call_media_state)(int call_id, int state)
);

// Call quality and statistics
int pjsua2_get_call_quality(int call_id,
                            double* rx_level,
                            double* tx_level,
                            double* rx_quality,
                            double* rx_loss_percent,
                            int* rtt_ms,
                            double* jitter_ms,
                            double* mos_score,
                            char* codec_name,
                            int codec_name_size);

// Get current audio devices for a call
int pjsua2_get_call_audio_devices(int call_id, int* capture_dev, int* playback_dev);

// Check if call has active media
int pjsua2_call_has_media(int call_id);

// Enhanced answer with audio device logging
int pjsua2_answer_call_with_audio_info(int call_id, int code);

// Get active call count
int pjsua2_get_active_call_count();

// Clean up orphaned calls
int pjsua2_cleanup_calls();

// Hold/Unhold management
int pjsua2_hold_call(int call_id);
int pjsua2_unhold_call(int call_id);
int pjsua2_is_call_on_hold(int call_id);

// Mute/Unmute management
int pjsua2_mute_call(int call_id, int mute);
int pjsua2_is_call_muted(int call_id);

// DTMF
int pjsua2_send_dtmf(int call_id, const char* digits);

// Conference management
int pjsua2_conference_calls(int call_id1, int call_id2);
int pjsua2_get_conf_port(int call_id);

// Get detailed call info including hold/mute status
int pjsua2_get_call_detailed_info(int call_id,
                                  int* is_on_hold,
                                  int* is_muted,
                                  int* conf_port);

// Test functions
int pjsua2_test_basic();
int pjsua2_test_object_creation();
int pjsua2_test_account_config();
int pjsua2_test_create_account();
int pjsua2_test_endpoint_state();

#ifdef __cplusplus
}
#endif

#endif // PJSUA2_WRAPPER_H