Пример #1
0
void SimpleSwitch::transmit_thread() {
  while (1) {
    std::unique_ptr<Packet> packet;
    output_buffer.pop_back(&packet);
    ELOGGER->packet_out(*packet);
    BMLOG_DEBUG_PKT(*packet, "Transmitting packet of size {} out of port {}",
                    packet->get_data_size(), packet->get_egress_port());
    transmit_fn(packet->get_egress_port(),
                packet->data(), packet->get_data_size());
  }
}
Пример #2
0
int main() {
	init_platform();
	initialize();


/*	microblaze_enable_interrupts();

	XIntc_RegisterHandler(XPAR_INTC_SINGLE_BASEADDR, XPAR_INTC_0_DEVICE_ID,(XInterruptHandler)status_read, XPAR_INTC_SINGLE_BASEADDR);

	XIntc_MasterEnable(XPAR_INTC_SINGLE_BASEADDR);

	XIntc_EnableIntr(XPAR_INTC_SINGLE_BASEADDR,
			XPAR_FIT_TIMER_0_INTERRUPT_MASK);

	print("Wait for Interrupts.... \n\r");*/
	while (1){

		rx_reg = SC_UART_INTERFACE_MODIFIED_mReadReg(XPAR_SC_UART_INTERFACE_MODIFIED_0_BASEADDR, SC_UART_INTERFACE_MODIFIED_SLV_REG1_OFFSET);
		if(rx_reg & uart_reset_mask){
			initialize();
			print("Reset active ...\n");
			print("Waiting for reset to go low ...\n");
			while(SC_UART_INTERFACE_MODIFIED_mReadReg(XPAR_SC_UART_INTERFACE_MODIFIED_0_BASEADDR, SC_UART_INTERFACE_MODIFIED_SLV_REG1_OFFSET)&uart_reset_mask);
			print("Reset deactivated ...\n");
			state=transmit_ATR;

		}
		else
		{
			switch(state){
			case transmit_ATR:
				transmit_ATR_fn();
				//print("Current state : Transmit ATR\n");
			//	state=recieve_mode;
			break;
			case recieve_mode:
				recieve_fn();
			//	state=transmit_mode;
			break;
			case transmit_mode:
				transmit_fn();
			//	state=recieve_mode;
			break;
			}

		}
	}

	return 0;
}