int main( void ) { char s[ 256 ]; int i; uint8_t sn; printf( "Waiting the EV3 brick online...\n" ); if ( ev3_init() < 1 ) return ( 1 ); printf( "*** ( EV3 ) Hello! ***\n" ); ev3_port_init(); printf( "Found ports:\n" ); for ( i = 0; i < DESC_LIMIT; i++ ) { if ( ev3_port[ i ].type_inx != PORT_TYPE__NONE_ ) { printf( " type = %s\n", ev3_port_type( ev3_port[ i ].type_inx )); printf( " port = %s\n", ev3_port_port_name( i, s )); if ( get_port_mode( i, s, sizeof( s ))) { printf( " mode = %s\n", s ); } } } sn = ev3_search_port( INPUT_2, EXT_PORT__NONE_ ); printf( "Port '%s'\n", ev3_port_name( INPUT_2, EXT_PORT__NONE_, 0, s )); if ( get_port_modes( sn, s, sizeof( s ))) { printf( "Modes: %s\n", s ); } else { printf( "ERROR: get_port_modes()\n" ); } ev3_uninit(); printf( "*** ( EV3 ) Bye! ***\n" ); return ( 0 ); }
inline void i8155_device::write_port(int port, UINT8 data) { switch (get_port_mode(port)) { case PORT_MODE_OUTPUT: m_output[port] = data; devcb_call_write8(&m_out_port_func[port], 0, m_output[port]); break; } }
inline UINT8 i8155_device::read_port(int port) { UINT8 data = 0; switch (port) { case PORT_A: case PORT_B: switch (get_port_mode(port)) { case PORT_MODE_INPUT: data = devcb_call_read8(&m_in_port_func[port], 0); break; case PORT_MODE_OUTPUT: data = m_output[port]; break; } break; case PORT_C: switch (get_port_mode(PORT_C)) { case PORT_MODE_INPUT: data = devcb_call_read8(&m_in_port_func[port], 0) & 0x3f; break; case PORT_MODE_OUTPUT: data = m_output[port] & 0x3f; break; default: logerror("8155 '%s' Unsupported Port C mode!\n", tag()); } break; } return data; }
inline void i8155_device::write_port(int port, UINT8 data) { switch (get_port_mode(port)) { case PORT_MODE_OUTPUT: m_output[port] = data; if (port == PORT_A) m_out_pa_cb((offs_t)0, m_output[port]); else if (port == PORT_B) m_out_pb_cb((offs_t)0, m_output[port]); else m_out_pc_cb((offs_t)0, m_output[port]); break; } }
inline UINT8 i8155_device::read_port(int port) { UINT8 data = 0; switch (get_port_mode(port)) { case PORT_MODE_INPUT: data = m_in_port_func[port](0); break; case PORT_MODE_OUTPUT: data = m_output[port]; break; default: // strobed mode not implemented yet logerror("8155 '%s' Unsupported Port C mode!\n", tag()); break; } return data; }
inline uint8_t i8155_device::read_port(int port) { uint8_t data = 0; switch (get_port_mode(port)) { case PORT_MODE_INPUT: data = (port == PORT_A) ? m_in_pa_cb(0) : ((port == PORT_B) ? m_in_pb_cb(0) : m_in_pc_cb(0)); break; case PORT_MODE_OUTPUT: data = m_output[port]; break; default: // strobed mode not implemented yet logerror("8155 Unsupported Port C mode!\n"); break; } return data; }