Mercurial > hg > audiostuff
comparison spandsp-0.0.6pre17/spandsp-sim/spandsp/rfc2198_sim.h @ 4:26cd8f1ef0b1
import spandsp-0.0.6pre17
| author | Peter Meerwald <pmeerw@cosy.sbg.ac.at> | 
|---|---|
| date | Fri, 25 Jun 2010 15:50:58 +0200 | 
| parents | |
| children | 
   comparison
  equal
  deleted
  inserted
  replaced
| 3:c6c5a16ce2f2 | 4:26cd8f1ef0b1 | 
|---|---|
| 1 /* | |
| 2 * SpanDSP - a series of DSP components for telephony | |
| 3 * | |
| 4 * rfc2198_sim.h - Simulate the behaviour of RFC2198 (or UDPTL) redundancy. | |
| 5 * | |
| 6 * Written by Steve Underwood <steveu@coppice.org> | |
| 7 * | |
| 8 * Copyright (C) 2007 Steve Underwood | |
| 9 * | |
| 10 * All rights reserved. | |
| 11 * | |
| 12 * This program is free software; you can redistribute it and/or modify | |
| 13 * it under the terms of the GNU Lesser General Public License version 2.1, | |
| 14 * as published by the Free Software Foundation. | |
| 15 * | |
| 16 * This program is distributed in the hope that it will be useful, | |
| 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 19 * GNU Lesser General Public License for more details. | |
| 20 * | |
| 21 * You should have received a copy of the GNU Lesser General Public | |
| 22 * License along with this program; if not, write to the Free Software | |
| 23 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
| 24 * | |
| 25 * $Id: rfc2198_sim.h,v 1.6 2009/05/31 14:47:10 steveu Exp $ | |
| 26 */ | |
| 27 | |
| 28 /*! \file */ | |
| 29 | |
| 30 /*! \page rfc2198_model_page RFC2198 simulation | |
| 31 \section rfc2198_model_page_sec_1 What does it do? | |
| 32 */ | |
| 33 | |
| 34 #if !defined(_RFC2198_SIM_H_) | |
| 35 #define _RFC2198_SIM_H_ | |
| 36 | |
| 37 /*! The definition of an element in the packet queue */ | |
| 38 typedef struct rfc2198_sim_queue_element_s | |
| 39 { | |
| 40 struct rfc2198_sim_queue_element_s *next; | |
| 41 struct rfc2198_sim_queue_element_s *prev; | |
| 42 int seq_no; | |
| 43 double departure_time; | |
| 44 double arrival_time; | |
| 45 int len; | |
| 46 uint8_t pkt[]; | |
| 47 } rfc2198_sim_queue_element_t; | |
| 48 | |
| 49 /*! The model definition for a complete end-to-end path */ | |
| 50 typedef struct | |
| 51 { | |
| 52 int redundancy_depth; | |
| 53 int next_seq_no; | |
| 54 g1050_state_t *g1050; | |
| 55 rfc2198_sim_queue_element_t *first; | |
| 56 rfc2198_sim_queue_element_t *last; | |
| 57 uint8_t tx_pkt[32][1024]; | |
| 58 int tx_pkt_len[32]; | |
| 59 int tx_pkt_seq_no[32]; | |
| 60 int next_pkt; | |
| 61 uint8_t rx_pkt[32][1024]; | |
| 62 int rx_pkt_len[32]; | |
| 63 int rx_pkt_seq_no[32]; | |
| 64 int rx_queued_pkts; | |
| 65 } rfc2198_sim_state_t; | |
| 66 | |
| 67 #ifdef __cplusplus | |
| 68 extern "C" | |
| 69 { | |
| 70 #endif | |
| 71 | |
| 72 SPAN_DECLARE(rfc2198_sim_state_t *) rfc2198_sim_init(int model, | |
| 73 int speed_pattern, | |
| 74 int packet_size, | |
| 75 int packet_rate, | |
| 76 int redundancy_depth); | |
| 77 | |
| 78 SPAN_DECLARE(int) rfc2198_sim_put(rfc2198_sim_state_t *s, | |
| 79 const uint8_t buf[], | |
| 80 int len, | |
| 81 int seq_no, | |
| 82 double departure_time); | |
| 83 | |
| 84 SPAN_DECLARE(int) rfc2198_sim_get(rfc2198_sim_state_t *s, | |
| 85 uint8_t buf[], | |
| 86 int max_len, | |
| 87 double current_time, | |
| 88 int *seq_no, | |
| 89 double *departure_time, | |
| 90 double *arrival_time); | |
| 91 | |
| 92 #ifdef __cplusplus | |
| 93 } | |
| 94 #endif | |
| 95 | |
| 96 #endif | |
| 97 /*- End of file ------------------------------------------------------------*/ | 
