Modularizando o src
Dependencies: EALib EthernetInterface_vz mbed-rtos mbed
Fork of header_main_colinas_V0-20-09-14 by
rtp.cpp@135:2f4290590e51, 2015-09-10 (annotated)
- Committer:
- klauss
- Date:
- Thu Sep 10 20:11:35 2015 +0000
- Revision:
- 135:2f4290590e51
- Parent:
- 132:05cd37f7e007
inclus?o das funcionalidades; - [get|set]_cbx_wake_mode; - [get|set]_cbx_detach_mode; - [get|set]_cbx_mode; - simula < ext > <msg_id > < type >; - refresh_status
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
klauss | 0:4d17cd9c8f9d | 1 | #include "rtp.h" |
klauss | 0:4d17cd9c8f9d | 2 | |
klauss | 0:4d17cd9c8f9d | 3 | RTP_Header::RTP_Header( int cb_ext ){ |
klauss | 0:4d17cd9c8f9d | 4 | // por algum motivo do alem, comecar do 0 nao funcionou |
klauss | 0:4d17cd9c8f9d | 5 | ss_id = 0x01010101 + ( uint32_t )cb_ext; |
klauss | 0:4d17cd9c8f9d | 6 | seq_number = 0x0101; |
klauss | 0:4d17cd9c8f9d | 7 | timestamp = 240; |
klauss | 0:4d17cd9c8f9d | 8 | } |
klauss | 0:4d17cd9c8f9d | 9 | |
klauss | 0:4d17cd9c8f9d | 10 | RTP_Header::~RTP_Header(){ |
klauss | 0:4d17cd9c8f9d | 11 | // something |
klauss | 0:4d17cd9c8f9d | 12 | } |
klauss | 0:4d17cd9c8f9d | 13 | |
klauss | 0:4d17cd9c8f9d | 14 | char * RTP_Header::build_header( char * pkg ){ |
klauss | 0:4d17cd9c8f9d | 15 | if( pkg == NULL ) return( NULL ); |
klauss | 0:4d17cd9c8f9d | 16 | |
klauss | 121:ee02790d00b7 | 17 | for( register int i = 0; i < RTP_HEADER_SIZE; i++ ) pkg[ i ] = 0xff; |
klauss | 0:4d17cd9c8f9d | 18 | |
klauss | 0:4d17cd9c8f9d | 19 | pkg[ 0 ] &= 0x80; |
klauss | 0:4d17cd9c8f9d | 20 | |
klauss | 0:4d17cd9c8f9d | 21 | pkg[ 1 ] &= 0x08; |
klauss | 0:4d17cd9c8f9d | 22 | |
klauss | 0:4d17cd9c8f9d | 23 | pkg[ 2 ] = 0xff; |
klauss | 0:4d17cd9c8f9d | 24 | pkg[ 2 ] &= ( char )( seq_number >> 8 ); |
klauss | 0:4d17cd9c8f9d | 25 | pkg[ 3 ] &= ( char )( seq_number & 0xff ); |
klauss | 0:4d17cd9c8f9d | 26 | |
klauss | 0:4d17cd9c8f9d | 27 | pkg[ 4 ] &= ( char )( timestamp >> 24 & 0xff ); |
klauss | 0:4d17cd9c8f9d | 28 | pkg[ 5 ] &= ( char )( timestamp >> 16 & 0xff ); |
klauss | 0:4d17cd9c8f9d | 29 | pkg[ 6 ] &= ( char )( timestamp >> 8 & 0xff ); |
klauss | 0:4d17cd9c8f9d | 30 | pkg[ 7 ] &= ( char )( timestamp & 0xff ); |
klauss | 0:4d17cd9c8f9d | 31 | |
klauss | 0:4d17cd9c8f9d | 32 | pkg[ 8 ] &= ( char )( ss_id >> 24 & 0xff ); |
klauss | 0:4d17cd9c8f9d | 33 | pkg[ 9 ] &= ( char )( ss_id >> 16 & 0xff ); |
klauss | 0:4d17cd9c8f9d | 34 | pkg[ 10 ] &= ( char )( ss_id >> 8 & 0xff ); |
klauss | 0:4d17cd9c8f9d | 35 | pkg[ 11 ] &= ( char )( ss_id & 0xff ); |
klauss | 0:4d17cd9c8f9d | 36 | |
klauss | 121:ee02790d00b7 | 37 | pkg[ RTP_HEADER_SIZE ] = 0; |
klauss | 0:4d17cd9c8f9d | 38 | timestamp += 240; |
klauss | 0:4d17cd9c8f9d | 39 | seq_number++; |
klauss | 0:4d17cd9c8f9d | 40 | |
klauss | 0:4d17cd9c8f9d | 41 | return( pkg ); |
klauss | 0:4d17cd9c8f9d | 42 | } |
klauss | 0:4d17cd9c8f9d | 43 | |
klauss | 0:4d17cd9c8f9d | 44 | size_t RTP_Header::size( void ){ |
klauss | 121:ee02790d00b7 | 45 | return( RTP_HEADER_SIZE ); |
klauss | 0:4d17cd9c8f9d | 46 | } |
klauss | 0:4d17cd9c8f9d | 47 | |
klauss | 0:4d17cd9c8f9d | 48 | RTP_Body::RTP_Body(){ |
klauss | 0:4d17cd9c8f9d | 49 | // do something |
klauss | 0:4d17cd9c8f9d | 50 | } |
klauss | 0:4d17cd9c8f9d | 51 | |
klauss | 0:4d17cd9c8f9d | 52 | RTP_Body::~RTP_Body(){ |
klauss | 0:4d17cd9c8f9d | 53 | // something |
klauss | 0:4d17cd9c8f9d | 54 | } |
klauss | 0:4d17cd9c8f9d | 55 | |
klauss | 0:4d17cd9c8f9d | 56 | size_t RTP_Body::size( void ){ |
klauss | 0:4d17cd9c8f9d | 57 | return( sizeof( RTP_Body ) ); |
klauss | 0:4d17cd9c8f9d | 58 | } |
klauss | 0:4d17cd9c8f9d | 59 | |
klauss | 0:4d17cd9c8f9d | 60 | char * RTP_Body::build_body( char * dest, char * buffer ){ |
klauss | 119:ee6a53069455 | 61 | for( register int i = 0; i < CB_AUDIO_DATA_SIZE; i++ ) dest[ i ] = buffer[ i ]; |
klauss | 0:4d17cd9c8f9d | 62 | return( dest ); |
klauss | 0:4d17cd9c8f9d | 63 | } |
klauss | 0:4d17cd9c8f9d | 64 | |
klauss | 0:4d17cd9c8f9d | 65 | RTP::RTP( int ext ){ |
klauss | 0:4d17cd9c8f9d | 66 | rtp_header = new RTP_Header( ext ); |
klauss | 87:679ee0d594a9 | 67 | |
klauss | 87:679ee0d594a9 | 68 | if( rtp_header == NULL ) |
klauss | 87:679ee0d594a9 | 69 | { |
klauss | 87:679ee0d594a9 | 70 | memory_is_over = true; |
klauss | 132:05cd37f7e007 | 71 | if( debug_rtp == true ) vz_printf ("[%d] RTP_HEADER allocation failed", ext ); |
klauss | 132:05cd37f7e007 | 72 | if( debug_memory ) vz_debug ("[%d] RTP_Header allocation fail", ext ); |
klauss | 87:679ee0d594a9 | 73 | } |
klauss | 87:679ee0d594a9 | 74 | else |
klauss | 87:679ee0d594a9 | 75 | { |
klauss | 87:679ee0d594a9 | 76 | rtp_header_new_counter++; |
klauss | 87:679ee0d594a9 | 77 | } |
klauss | 87:679ee0d594a9 | 78 | |
klauss | 0:4d17cd9c8f9d | 79 | rtp_body = new RTP_Body(); |
klauss | 87:679ee0d594a9 | 80 | if( rtp_body == NULL ) |
klauss | 87:679ee0d594a9 | 81 | { |
klauss | 87:679ee0d594a9 | 82 | memory_is_over = true; |
klauss | 132:05cd37f7e007 | 83 | if( debug_rtp == true ) vz_printf ("[%d] RTP_BODY allocation failed", ext ); |
klauss | 132:05cd37f7e007 | 84 | if( debug_memory ) vz_debug ("[%d ]RTP_Body allocation fail", ext ); |
klauss | 87:679ee0d594a9 | 85 | } |
klauss | 87:679ee0d594a9 | 86 | else |
klauss | 87:679ee0d594a9 | 87 | { |
klauss | 87:679ee0d594a9 | 88 | rtp_body_new_counter++; |
klauss | 87:679ee0d594a9 | 89 | } |
klauss | 135:2f4290590e51 | 90 | |
klauss | 135:2f4290590e51 | 91 | buffer [ 0 ] = '\0'; |
klauss | 135:2f4290590e51 | 92 | pkg [ 0 ] = '\0'; |
klauss | 0:4d17cd9c8f9d | 93 | } |
klauss | 0:4d17cd9c8f9d | 94 | |
klauss | 0:4d17cd9c8f9d | 95 | RTP::~RTP(){ |
klauss | 87:679ee0d594a9 | 96 | if( rtp_header != NULL) |
klauss | 87:679ee0d594a9 | 97 | { |
klauss | 87:679ee0d594a9 | 98 | delete( rtp_header ); |
klauss | 87:679ee0d594a9 | 99 | rtp_header_delete_counter++; |
klauss | 87:679ee0d594a9 | 100 | } |
klauss | 87:679ee0d594a9 | 101 | if( rtp_body != NULL ) |
klauss | 87:679ee0d594a9 | 102 | { |
klauss | 87:679ee0d594a9 | 103 | delete( rtp_body ); |
klauss | 87:679ee0d594a9 | 104 | rtp_body_delete_counter++; |
klauss | 87:679ee0d594a9 | 105 | } |
klauss | 0:4d17cd9c8f9d | 106 | } |
klauss | 0:4d17cd9c8f9d | 107 | |
klauss | 0:4d17cd9c8f9d | 108 | char * RTP::build_eth_package( char * buffer ){ |
klauss | 87:679ee0d594a9 | 109 | if( rtp_header != NULL ) rtp_header->build_header( this->pkg ); |
klauss | 121:ee02790d00b7 | 110 | if( rtp_body != NULL ) rtp_body->build_body( this->pkg + RTP_HEADER_OFFSET, buffer ); |
klauss | 0:4d17cd9c8f9d | 111 | return( this->pkg ); |
klauss | 0:4d17cd9c8f9d | 112 | } |
klauss | 0:4d17cd9c8f9d | 113 | |
klauss | 0:4d17cd9c8f9d | 114 | size_t RTP::header_size( void ){ |
klauss | 87:679ee0d594a9 | 115 | //if( rtp_header != NULL ) return rtp_header->size(); |
klauss | 87:679ee0d594a9 | 116 | return ( rtp_header != NULL ) ? rtp_header->size() : 0; |
klauss | 109:a5b8264ffbbc | 117 | } |
klauss | 109:a5b8264ffbbc | 118 | |
klauss | 109:a5b8264ffbbc | 119 | int RTP::print_yourself ( void ) |
klauss | 109:a5b8264ffbbc | 120 | { |
klauss | 132:05cd37f7e007 | 121 | vz_printf ("buffer :: %p", ( void * ) buffer ); |
klauss | 132:05cd37f7e007 | 122 | vz_printf ("pkg :: %p", ( void * ) pkg ); |
klauss | 132:05cd37f7e007 | 123 | vz_printf ("rtp_header :: %p", ( void * ) rtp_header ); |
klauss | 132:05cd37f7e007 | 124 | vz_printf ("rtp_body :: %p", ( void * ) rtp_body ); |
klauss | 109:a5b8264ffbbc | 125 | if ( rtp_header != NULL ) |
klauss | 109:a5b8264ffbbc | 126 | { |
klauss | 132:05cd37f7e007 | 127 | vz_printf ("ss_id :: %d", rtp_header -> get_ss_id () ); |
klauss | 132:05cd37f7e007 | 128 | vz_printf ("seq_number :: %d", rtp_header -> get_seq_number () ); |
klauss | 132:05cd37f7e007 | 129 | vz_printf ("timestamp :: %d", rtp_header -> get_timestamp () ); |
klauss | 109:a5b8264ffbbc | 130 | } |
klauss | 109:a5b8264ffbbc | 131 | else |
klauss | 109:a5b8264ffbbc | 132 | { |
klauss | 132:05cd37f7e007 | 133 | vz_printf ("Objeto rtp_header nao vinculado"); |
klauss | 109:a5b8264ffbbc | 134 | } |
klauss | 109:a5b8264ffbbc | 135 | return ( sizeof( RTP ) ); |
klauss | 0:4d17cd9c8f9d | 136 | } |