Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

call_manager.h

Committer:
klauss
Date:
2015-03-18
Revision:
108:18a3702650f3
Parent:
81:3656f00ab3db
Child:
109:a5b8264ffbbc

File content as of revision 108:18a3702650f3:

#ifndef __CALL_MANAGER_H__
#define __CALL_MANAGER_H__

#include "mbed.h"
#include "EthernetInterface.h"
#include "debug.h"
#include "vz_protocol.h"
#include "vector.h"
#include "call.h"
#include "call_box.h"
#include "timeslice.h"
#include "parallelcpld.h"
#include "call_box_manager.h"
#include "utils.h"

extern Timer invite_pkg_retry_timer;
extern Timer bye_pkg_retry_timer;

/**
 * @Synopsis Busca por uma determinada ligação vz_call no vetor de v_calusando como chave de busca o ramal.
 *
 * @param v_call Um vetor contendo todas as vz_calls em andamento em um dado momento.
 * @param ext O ramal pelo qual se irá buscar a vz_call.
 *
 * @return NULL, caso essa chamada não tenha sido encontrada; um ponteiro para esta chamada, caso a mesma tenha sido encontrada.
 *
 * Exemplo:
 * @code
 * ...
 *  Vector * v_call = new Vector();
 *      //assumindo que esse vetor de VZ_call já foi populado.
 *  int ext = 5218;
 *  VZ_call * call = __find_Call__( v_call, ext );
 * ...
 * @endcode
 */
VZ_call * __find_Call__( Vector * v_call, int ext );

/**
 * @Synopsis Responsável por remover calls por timeout.
 *
 * @param v_call Um vetor contendo todas as vz_calls em andamento em um dado momento.
 * @param v_cb Um vetor contendo todos os Call_box conhecidos pela Header em um determinado momento.
 * @param data Usado para a criação do pacote de "ping" que a Header irá enviar para o CBx.
 * @param write_buffer Local de memória onde efetivamente irá ser montado o pacote para envio ao CBx. 
 * @param ts O timeslice que será possivelmente devolvido.
 *
 * Exemplo:
 * @code
 * ...
 *  Vector * v_call = new Vector();
 *  Vector * v_cb = new Vector();
 *      // assumindo que os vetores já foram populados.
 *  uint8_t buffer[ 300 ];
 *      uint8_t write_buffer[ 300 ];
 *      Timeslice * ts = new Timeslice();
 *      ...
 *      call_manager( v_call, v_cb, buffer, write_buffer, ts ); 
 * ...
 * @endcode
 */
void call_manager( Vector * v_call, Vector * v_cb, Timeslice * ts );

void invite_handler( Vector * v_call, Vector * v_cb, Timeslice * ts, Call_Box * cb );

void invite_pgk_retry_manager( Vector * v_cb, uint8_t * data, uint8_t * write_buffer );

void init_invite_pgk_retry_manager( void );
void init_bye_pgk_retry_manager( void );

#endif