Modularizando o src

Dependencies:   EALib EthernetInterface_vz mbed-rtos mbed

Fork of header_main_colinas_V0-20-09-14 by VZTECH

Committer:
klauss
Date:
Tue Nov 24 14:06:22 2015 +0000
Revision:
137:32dd35a6dbc9
Parent:
132:05cd37f7e007
core source of the .bin (09/21/2015) in the field

Who changed what in which revision?

UserRevisionLine numberNew contents of line
klauss 0:4d17cd9c8f9d 1 #include "parallelcpld.h"
klauss 0:4d17cd9c8f9d 2
klauss 74:81c47fff88a5 3 DigitalOut data0(p30); //LSB
klauss 74:81c47fff88a5 4 DigitalOut data1(p31);
klauss 74:81c47fff88a5 5 DigitalOut data2(p32);
klauss 74:81c47fff88a5 6 DigitalOut data3(p33);
klauss 74:81c47fff88a5 7 DigitalOut data4(p34);
klauss 74:81c47fff88a5 8 DigitalOut data5(p37);
klauss 74:81c47fff88a5 9 DigitalOut data6(p38);
klauss 74:81c47fff88a5 10 DigitalOut data7(p39); //MSB
klauss 74:81c47fff88a5 11
klauss 74:81c47fff88a5 12 DigitalOut DataReady(p11);
klauss 74:81c47fff88a5 13 ///<IO 27
klauss 74:81c47fff88a5 14
klauss 109:a5b8264ffbbc 15 DigitalOut hw_extern_wdt( p23 );
klauss 74:81c47fff88a5 16
klauss 126:1f90756250fb 17 uint8_t cb_tx_buffer [ CB_BUFFER_SIZE ];
klauss 109:a5b8264ffbbc 18
klauss 119:ee6a53069455 19 uint8_t TXBuffer[ CB_BUFFER_SIZE ];
klauss 74:81c47fff88a5 20
klauss 72:895ca792c647 21 uint8_t tx_clear = 1;
klauss 0:4d17cd9c8f9d 22
klauss 74:81c47fff88a5 23 ring_buffer * rb = ring_buffer_init( NULL );
klauss 99:e80850c51106 24
klauss 72:895ca792c647 25 // Print a variable using parallel protocol
klauss 72:895ca792c647 26 void parallel_write( uint8_t data ){
klauss 72:895ca792c647 27 data0 = BIT0&(data);
klauss 72:895ca792c647 28 data1 = BIT1&(data);
klauss 72:895ca792c647 29 data2 = BIT2&(data);
klauss 72:895ca792c647 30 data3 = BIT3&(data);
klauss 72:895ca792c647 31 data4 = BIT4&(data);
klauss 72:895ca792c647 32 data5 = BIT5&(data);
klauss 72:895ca792c647 33 data6 = BIT6&(data);
klauss 72:895ca792c647 34 data7 = BIT7&(data);
klauss 0:4d17cd9c8f9d 35 }
klauss 0:4d17cd9c8f9d 36
klauss 72:895ca792c647 37 // Needs: function parallel_write/ Global variables: TXBuffer, tx_clear / Configuration extern interrupt
klauss 126:1f90756250fb 38 void send2callboxes( uint8_t * buffer )
klauss 126:1f90756250fb 39 {
klauss 126:1f90756250fb 40 if ( drop_entendi_pkg and ( buffer[ TYPE_PLACE ] == INVITE ) )
klauss 109:a5b8264ffbbc 41 {
klauss 132:05cd37f7e007 42 vz_debug ( "Droped entendi pkg" );
klauss 114:472502b31a12 43 return;
klauss 109:a5b8264ffbbc 44 }
klauss 126:1f90756250fb 45
klauss 126:1f90756250fb 46 if( tx_clear == 1 )
klauss 126:1f90756250fb 47 {
klauss 104:62646ef786a3 48 tx_clear = 0;
klauss 126:1f90756250fb 49 xmemcpy ( TXBuffer, buffer, CB_BUFFER_SIZE );
klauss 124:c1b6c893e1c3 50
klauss 104:62646ef786a3 51 // Send the first position of TXBuffer first
klauss 126:1f90756250fb 52 parallel_write ( TXBuffer [ 0 ] );
klauss 104:62646ef786a3 53 DataReady = 1;
klauss 124:c1b6c893e1c3 54
klauss 104:62646ef786a3 55 cpld_pkg_tx_counter++;
klauss 104:62646ef786a3 56
klauss 104:62646ef786a3 57 uint16_t ext = ( ( uint16_t )buffer[ 0 ] ) << 8 | buffer[ 1 ];
klauss 104:62646ef786a3 58 uint16_t port = ( ( uint16_t )buffer[ 2 ] ) << 8 | buffer[ 3 ];
klauss 126:1f90756250fb 59 uint8_t type = buffer [ TYPE_PLACE ];
klauss 104:62646ef786a3 60
klauss 126:1f90756250fb 61 if ( debug_fw )
klauss 126:1f90756250fb 62 {
klauss 104:62646ef786a3 63 buffer[ 0 ] |= BIT7;
klauss 126:1f90756250fb 64 fw_cbx_pkg ( ext, ( char *)buffer );
klauss 104:62646ef786a3 65 }
klauss 104:62646ef786a3 66
klauss 126:1f90756250fb 67 if ( ( type not_eq AUDIO ) and not ( do_not_show_this_invite_pkg ) )
klauss 124:c1b6c893e1c3 68 {
klauss 126:1f90756250fb 69 xmemcpy ( cb_tx_buffer, buffer, CB_BUFFER_SIZE );
klauss 124:c1b6c893e1c3 70
klauss 124:c1b6c893e1c3 71 if ( debug_show_tx_cpld )
klauss 124:c1b6c893e1c3 72 {
klauss 126:1f90756250fb 73 char str [ 256 ];
klauss 126:1f90756250fb 74 strcpy ( str, "TX :: \n\r" );
klauss 126:1f90756250fb 75 for ( register uint16_t i = 0; i < 32; i++ )
klauss 126:1f90756250fb 76 {
klauss 126:1f90756250fb 77 char tmp [ 8 ];
klauss 126:1f90756250fb 78 sprintf ( tmp, "%02x ", cb_tx_buffer [ i ] );
klauss 126:1f90756250fb 79 strcat ( str, tmp );
klauss 124:c1b6c893e1c3 80 }
klauss 125:8ff4dc96ad58 81 strcat ( str, "\n\r " );
klauss 125:8ff4dc96ad58 82
klauss 132:05cd37f7e007 83 vz_printf ( "%s", str );
klauss 124:c1b6c893e1c3 84 }
klauss 125:8ff4dc96ad58 85
klauss 132:05cd37f7e007 86 if ( debug_cb_tx ) vz_printf ("H -> CBx :: ( %d, %d ) -- Type :: %d", ext, port, type );
klauss 126:1f90756250fb 87
klauss 132:05cd37f7e007 88 if ( debug_sqn ) vz_printf ("H -> CBx :: ( %d, %d ) -- Type :: %d -- seq_num :: %u", ext, port, type, cb_tx_buffer [ SEQ_NUM_PLACE ] );
klauss 124:c1b6c893e1c3 89 }
klauss 126:1f90756250fb 90
klauss 126:1f90756250fb 91 do_not_show_this_invite_pkg = false;
klauss 124:c1b6c893e1c3 92
klauss 104:62646ef786a3 93 }else{
klauss 104:62646ef786a3 94 // Error if the transmission is still in use
klauss 99:e80850c51106 95 uint8_t ret = ring_buffer_add( rb, buffer );
klauss 81:3656f00ab3db 96
klauss 119:ee6a53069455 97 delayed_pkg_to_cb++;
klauss 119:ee6a53069455 98
klauss 132:05cd37f7e007 99 if( ret == 0x01 ) if( dparallel ) vz_debug ("Error: Ring buffer fully charged");
klauss 74:81c47fff88a5 100
klauss 132:05cd37f7e007 101 if( ret == 0x00 ) if( dparallel ) vz_debug ("Success : package queued -- on queue %u", rb->size );
klauss 104:62646ef786a3 102 }
klauss 0:4d17cd9c8f9d 103 }
klauss 0:4d17cd9c8f9d 104
klauss 0:4d17cd9c8f9d 105 //*****************************************************************************
klauss 0:4d17cd9c8f9d 106 // EXTERN IRQ Handler
klauss 0:4d17cd9c8f9d 107 //*****************************************************************************
klauss 0:4d17cd9c8f9d 108
klauss 72:895ca792c647 109 void get2(){
klauss 72:895ca792c647 110 static uint16_t c = 1;
klauss 72:895ca792c647 111 // Get Ready the new data
klauss 72:895ca792c647 112 DataReady = 0;
klauss 0:4d17cd9c8f9d 113 tx_clear = 0;
klauss 72:895ca792c647 114
klauss 72:895ca792c647 115 if ( c < 300 ){
klauss 72:895ca792c647 116 // Write the next data to be send
klauss 72:895ca792c647 117 parallel_write ( TXBuffer[c] ) ;
klauss 72:895ca792c647 118 // Allow the data to be capture
klauss 72:895ca792c647 119 DataReady = 1;
klauss 0:4d17cd9c8f9d 120 }else{
klauss 72:895ca792c647 121 // Allow the next package to the transmitted
klauss 72:895ca792c647 122 tx_clear = 1;
klauss 72:895ca792c647 123 c = 0;
klauss 72:895ca792c647 124 }
klauss 0:4d17cd9c8f9d 125 c++;
klauss 74:81c47fff88a5 126 }
klauss 74:81c47fff88a5 127
klauss 74:81c47fff88a5 128 void tx_buffer_ring_buffer_handler( void ){
klauss 100:09a23fcd3bdf 129 if( ( rb->size != 0x00 ) && ( tx_clear == 1 ) ){
klauss 74:81c47fff88a5 130 uint8_t * _rb_next = ring_buffer_get_next( rb );
klauss 132:05cd37f7e007 131 if( dparallel ) vz_printf ( "Ring Buffer less one -- remain %u", rb->size );
klauss 99:e80850c51106 132 send2callboxes( _rb_next );
klauss 74:81c47fff88a5 133 }
klauss 0:4d17cd9c8f9d 134 }