#include int ICS2_get_ID( int port ) { int i; int a[ 5 ]; uart3_putchar( port, 0xE0 ); uart3_putchar( port, 0x00 ); uart3_putchar( port, 0x00 ); uart3_putchar( port, 0x00 ); for( i = 0; i < 5; i++ ) { volatile int j; j = 0; while( uart3_data_ready( port ) == 1 ) { j++; if( j > 100 ) break; } uart3_getchar( port, &a[ i ] ); } return a[ 4 ] & 0x1F; } int ICS2_set_ID( int port, int id ) { int i; int a[ 5 ]; id &= 0x1F; id |= 0xE0; uart3_putchar( port, id ); uart3_putchar( port, 0x01 ); uart3_putchar( port, 0x01 ); uart3_putchar( port, 0x01 ); for( i = 0; i < 5; i++ ) { volatile int j; j = 0; while( uart3_data_ready( port ) == 1 ) { j++; if( j > 100 ) break; } uart3_getchar( port, &a[ i ] ); } return a[ 4 ] & 0x1F; } int ICS2_set_position( int port, int ch, int pos ) { int i; int a[ 6 ]; uart3_putchar( port, 0x80 | ch ); uart3_putchar( port, ( pos >> 7 ) & 0x7F ); uart3_putchar( port, pos & 0x7F ); for( i = 0; i < 6; i++ ) { volatile int j; j = 0; while( uart3_data_ready( port ) == 1 ) { j++; if( j > 20000 ) break; } uart3_getchar( port, &a[ i ] ); } return ( ( a[ 4 ] & 0x7F ) << 7 ) | ( a[ 5 ] & 0x7F ); } int init( void ) { uart3_init_default_all(); }