Fixed header protectors and cleaning up the msi

This commit is contained in:
mannol 2015-02-16 23:30:20 +01:00
parent 8c245affb1
commit 7329f3b3d4
6 changed files with 382 additions and 608 deletions

View File

@ -21,8 +21,8 @@
*
*/
#ifndef _CODEC_H_
#define _CODEC_H_
#ifndef CODEC_H
#define CODEC_H
#include "toxav.h"
#include "rtp.h"
@ -186,4 +186,4 @@ void cs_disable_audio_receiving(CSSession* cs);
/* Internal. Called from rtp_handle_message */
void queue_message(RTPSession *session, RTPMessage *msg);
#endif /* _CODEC_H_ */
#endif /* CODEC_H */

File diff suppressed because it is too large Load Diff

View File

@ -19,8 +19,8 @@
*
*/
#ifndef __TOXMSI
#define __TOXMSI
#ifndef MSI_H
#define MSI_H
#include <inttypes.h>
#include <pthread.h>
@ -40,6 +40,23 @@ typedef enum {
msi_TypeVideo
} MSICallType;
/**
* Error codes.
*/
typedef enum {
msi_ErrUndisclosed,
} MSIError;
/**
* Supported capabilities
*/
typedef enum {
msi_CapSAudio = 1, /* sending audio */
msi_CapSVideo = 2, /* sending video */
msi_CapRAudio = 4, /* receiving audio */
msi_CapRVideo = 8, /* receiving video */
} MSICapabilities;
/**
* Call state identifiers.
@ -70,16 +87,6 @@ typedef struct {
uint32_t audio_channels;
} MSICSettings;
/**
* Active capabilities masks
*/
typedef enum {
msi_SendingAudio = 1,
msi_SendingVideo = 2,
msi_RecvingAudio = 4,
msi_RecvingVideo = 8,
} MSICapMask;
/**
* Callbacks ids that handle the states
*/
@ -87,9 +94,9 @@ typedef enum {
msi_OnInvite, /* Incoming call */
msi_OnRinging, /* When peer is ready to accept/reject the call */
msi_OnStart, /* Call (RTP transmission) started */
msi_OnCancel, /* The side that initiated call canceled invite */
msi_OnReject, /* The side that was invited rejected the call */
msi_OnEnd, /* Call that was active ended */
msi_OnError, /* Call that was active ended */
msi_OnRequestTimeout, /* When the requested action didn't get response in specified time */
msi_OnPeerTimeout, /* Peer timed out; stop the call */
msi_OnPeerCSChange, /* Peer requested Csettings change */
@ -107,25 +114,30 @@ typedef enum {
} MSIError;
/**
* The call struct.
* The call struct. Please do not modify outside msi.c
*/
typedef struct {
typedef struct MSICall_s {
struct MSISession_s *session; /* Session pointer */
MSICallState state;
uint8_t caps; /* Active capabilities */
uint8_t capabilities; /* Active capabilities */
uint32_t friend_id; /* Index of this call in MSISession */
struct MSICall_s* next;
struct MSICall_s* prev;
} MSICall;
/**
* Control session struct
* Control session struct. Please do not modify outside msi.c
*/
typedef struct MSISession_s {
/* Call handlers */
MSICall **calls;
uint32_t calls_tail;
uint32_t calls_head;
void *agent_handler;
Messenger *messenger_handle;
@ -139,7 +151,7 @@ typedef struct MSISession_s {
MSISession *msi_new ( Messenger *messenger, int32_t max_calls );
/**
* Terminate control session.
* Terminate control session. NOTE: all calls will be freed
*/
int msi_kill ( MSISession *session );
@ -151,45 +163,26 @@ void msi_register_callback(MSISession *session, MSICallbackType callback, MSICal
/**
* Send invite request to friend_id.
*/
int msi_invite ( MSISession *session,
int32_t *call_index,
const MSICSettings *csettings,
uint32_t rngsec,
uint32_t friend_id );
int msi_invite ( MSISession* session, MSICall** call, uint32_t friend_id, uint8_t capabilities );
/**
* Hangup active call.
* Hangup call. NOTE: 'call' will be freed
*/
int msi_hangup ( MSISession *session, int32_t call_index );
int msi_hangup ( MSICall* call );
/**
* Answer active call request.
* Answer call request.
*/
int msi_answer ( MSISession *session, int32_t call_index, const MSICSettings *csettings );
int msi_answer ( MSICall* call, uint8_t capabilities );
/**
* Cancel request.
* Reject incoming call. NOTE: 'call' will be freed
*/
int msi_cancel ( MSISession *session, int32_t call_index, uint32_t peer, const char *reason );
int msi_reject ( MSICall* call );
/**
* Reject incoming call.
* Change capabilities of the call.
*/
int msi_reject ( MSISession *session, int32_t call_index, const char *reason );
int msi_change_capabilities ( MSICall* call, uint8_t capabilities );
/**
* Terminate the call.
*/
int msi_stopcall ( MSISession *session, int32_t call_index );
/**
* Change codec settings of the current call.
*/
int msi_change_csettings ( MSISession *session, int32_t call_index, const MSICSettings *csettings );
/**
* Main msi loop
*/
void msi_do( MSISession *session );
#endif /* __TOXMSI */
#endif /* MSI_H */

View File

@ -19,8 +19,8 @@
*
*/
#ifndef __TOXRTP
#define __TOXRTP
#ifndef RTP_H
#define RTP_H
#define RTP_VERSION 2
#include <inttypes.h>
@ -130,4 +130,4 @@ void rtp_free_msg ( RTPSession *session, RTPMessage *msg );
#endif /* __TOXRTP */
#endif /* RTP_H */

View File

@ -83,7 +83,6 @@ struct toxAV
void i_toxav_msi_callback_invite(void* toxav_inst, int32_t call_idx, void *data);
void i_toxav_msi_callback_ringing(void* toxav_inst, int32_t call_idx, void *data);
void i_toxav_msi_callback_start(void* toxav_inst, int32_t call_idx, void *data);
void i_toxav_msi_callback_cancel(void* toxav_inst, int32_t call_idx, void *data);
void i_toxav_msi_callback_reject(void* toxav_inst, int32_t call_idx, void *data);
void i_toxav_msi_callback_end(void* toxav_inst, int32_t call_idx, void *data);
void i_toxav_msi_callback_request_to(void* toxav_inst, int32_t call_idx, void *data); /* TODO remove */
@ -138,7 +137,6 @@ ToxAV* toxav_new(Tox* tox, TOXAV_ERR_NEW* error)
msi_register_callback(av->msi, i_toxav_msi_callback_invite, msi_OnInvite, NULL);
msi_register_callback(av->msi, i_toxav_msi_callback_ringing, msi_OnRinging, NULL);
msi_register_callback(av->msi, i_toxav_msi_callback_start, msi_OnStart, NULL);
msi_register_callback(av->msi, i_toxav_msi_callback_cancel, msi_OnCancel, NULL);
msi_register_callback(av->msi, i_toxav_msi_callback_reject, msi_OnReject, NULL);
msi_register_callback(av->msi, i_toxav_msi_callback_end, msi_OnEnd, NULL);
msi_register_callback(av->msi, i_toxav_msi_callback_request_to, msi_OnRequestTimeout, NULL);
@ -588,17 +586,6 @@ void i_toxav_msi_callback_start(void* toxav_inst, int32_t call_idx, void* data)
toxav->scb.first(toxav, call->friend_number, state, toxav->scb.second);
}
void i_toxav_msi_callback_cancel(void* toxav_inst, int32_t call_idx, void* data)
{
ToxAV* toxav = toxav_inst;
i_toxav_remove_call(toxav, toxav->msi->calls[call_idx]->peers[0]);
if (toxav->scb.first)
toxav->scb.first(toxav, toxav->msi->calls[call_idx]->peers[0],
TOXAV_CALL_STATE_END, toxav->scb.second);
}
void i_toxav_msi_callback_reject(void* toxav_inst, int32_t call_idx, void* data)
{
ToxAV* toxav = toxav_inst;
@ -918,7 +905,6 @@ void i_toxav_kill_transmission(ToxAV* av, uint32_t friend_number)
if (!call->active) {
pthread_mutex_unlock(call->mutex_control);
LOGGER_WARNING("Action on inactive call: %d", call->call_idx);
return;
}

View File

@ -1,4 +1,6 @@
#pragma once
#ifndef TOXAV_H
#define TOXAV_H
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
@ -480,4 +482,6 @@ typedef void toxav_receive_audio_frame_cb(ToxAV *av, uint32_t friend_number,
/**
* Set the callback for the `receive_audio_frame` event. Pass NULL to unset.
*/
void toxav_callback_receive_audio_frame(ToxAV *av, toxav_receive_audio_frame_cb *function, void *user_data);
void toxav_callback_receive_audio_frame(ToxAV *av, toxav_receive_audio_frame_cb *function, void *user_data);
#endif /* TOXAV_H */