Exemplo n.º 1
0
static rt_err_t pcap_netif_init(rt_device_t dev)
{
    rt_thread_t tid;
    pcap_if_t *alldevs;
    pcap_if_t *d;
    pcap_t *tap;
    int inum, i=0;
    char errbuf[PCAP_ERRBUF_SIZE];

    /* Retrieve the device list */
    if(pcap_findalldevs(&alldevs, errbuf) == -1)
    {
        rt_kprintf("Error in pcap_findalldevs: %s\n", errbuf);
        return -RT_ERROR;
    }

    /* Print the list */
    for(d = alldevs; d; d = d->next)
    {
        rt_kprintf("%d. %s", ++i, d->name);
        if (d->description)
            rt_kprintf(" (%s)\n", d->description);
        else
            rt_kprintf(" (No description available)\n");
    }
    if(i == 0)
    {
        rt_kprintf("\nNo interfaces found! Make sure WinPcap is installed.\n");
        return -RT_ERROR;
    }

    inum = 1;
    /* Jump to the selected adapter */
    for(d = alldevs, i = 0; i < inum-1 ;d = d->next, i++);

    {
        rt_kprintf("Select (%s) as network interface\n", d->description);
        packet_mb = rt_mb_create("pcap", 64, RT_IPC_FLAG_FIFO);
        tid = rt_thread_create("pcap", pcap_thread_entry, d, 
            2048, RT_THREAD_PRIORITY_MAX - 1, 10);
        if (tid != RT_NULL)
        {
            rt_thread_startup(tid);
        }

        rt_thread_delay(100);
    }

    pcap_freealldevs(alldevs);

    return RT_EOK;
}
Exemplo n.º 2
0
sys_mbox_t sys_mbox_new(int size)
{
	static int counter = 0;
	char tname[RT_NAME_MAX];

	rt_snprintf(tname, RT_NAME_MAX, "%s%d", SYS_LWIP_MBOX_NAME, counter);

#if SYS_DEBUG
	{
		struct rt_thread *thread;
		thread = rt_thread_self();
	
		LWIP_DEBUGF(SYS_DEBUG, ("%s, Create mbox: %s \n",thread->name, tname));
	}
#endif

	counter++;

	return rt_mb_create(tname, size, RT_IPC_FLAG_FIFO);
}
Exemplo n.º 3
0
err_t sys_mbox_new(sys_mbox_t *mbox, int size)
{
	static unsigned short counter = 0;
	char tname[RT_NAME_MAX];
	sys_mbox_t tmpmbox;

	RT_DEBUG_NOT_IN_INTERRUPT;

	rt_snprintf(tname, RT_NAME_MAX, "%s%d", SYS_LWIP_MBOX_NAME, counter);
	counter++;

	tmpmbox = rt_mb_create(tname, size, RT_IPC_FLAG_FIFO);
	if( tmpmbox != RT_NULL )
	{
		*mbox = tmpmbox;
		return ERR_OK;
	}

	return ERR_MEM;
}
Exemplo n.º 4
0
static void rt_test_485_entry(void* parameter)
{
	rt_device_t dev_485_1;
	rt_device_t dev_485_2;
	rt_device_t dev_485_3;

	rt_size_t read_cnt;

	unsigned char tx_ch = 0;
	unsigned char rx_ch = 0;
	unsigned char rx_buf[4];

	rt_sem_init(&uart485_1_rx_msg_sem, "u485-1", 0, RT_IPC_FLAG_PRIO);
	rt_sem_init(&uart485_2_rx_msg_sem, "u485-2", 0, RT_IPC_FLAG_PRIO);
	rt_sem_init(&uart485_3_rx_msg_sem, "u485-3", 0, RT_IPC_FLAG_PRIO);
#if !EM_ALL_TYPE_BASE
	uart485_mb = rt_mb_create("485_mb", 1, RT_IPC_FLAG_FIFO);
	if (RT_NULL == uart485_mb) {
		printf_syn("func:%s(), line:%d malloc fail\n",__FUNCTION__, __LINE__);
		return;
	}
#endif
	dev_485_1 = rt_device_find(UART_485_1_DEV);
	if (dev_485_1 != RT_NULL && rt_device_open(dev_485_1, RT_DEVICE_OFLAG_RDWR) == RT_EOK) {
		printf_syn("rt_test_485_entry open device:%s succ\n", UART_485_1_DEV);
		rt_device_set_rx_indicate(dev_485_1, uart485_1_rx_ind);
	} else {
		printf_syn("rt_test_485_entry can not find device:%s\n", UART_485_1_DEV);
		return;
	}

	dev_485_2 = rt_device_find(UART_485_2_DEV);
	if (dev_485_2 != RT_NULL && rt_device_open(dev_485_2, RT_DEVICE_OFLAG_RDWR) == RT_EOK) {
		printf_syn("rt_test_485_entry open device:%s succ\n", UART_485_2_DEV);
		rt_device_set_rx_indicate(dev_485_2, uart485_2_rx_ind);
	} else {
		printf_syn("rt_test_485_entry can not find device:%s\n", UART_485_2_DEV);
		return;
	}

	dev_485_3 = rt_device_find(UART_485_3_DEV);
	if (dev_485_3 != RT_NULL && rt_device_open(dev_485_3, RT_DEVICE_OFLAG_RDWR) == RT_EOK) {
		printf_syn("rt_test_485_entry open device:%s succ\n", UART_485_3_DEV);
		rt_device_set_rx_indicate(dev_485_3, uart485_3_rx_ind);
	} else {
		printf_syn("rt_test_485_entry can not find device:%s\n", UART_485_3_DEV);
		return;
	}

	while (1) {
#if 0
		tx_en_rev_disable_485_1();
#else
#if 0
		int rx_cnt, err_cnt;
		rt_err_t err;
		int i;

		rx_cnt = 0;
		err_cnt = 0;

		printf_syn("send cmd: ");
		for (i=0; i<sizeof(cmd_485_seq); ++i)
			printf_syn("%02x ", cmd_485_seq[i]);
		printf_syn("\n");

		//rt_enter_critical();
		tx_en_rev_disable_485_2();
		//rt_thread_delay(2);
		dev_485_2->write(dev_485_2, 0, cmd_485_seq, sizeof(cmd_485_seq));
		//rt_thread_delay(1);
		wait_usartx_send_over(USART3);
			
		tx_disable_rev_en_485_2();

		//rt_exit_critical();

		printf_syn("485-2 485 cmd had send over\n");

		while (rx_cnt<23 && err_cnt<2) {
			if (RT_EOK == (err=rt_sem_take(&uart485_2_rx_msg_sem, WAIT_RX_MSG_TIMEOUT))) {
				while (1 == dev_485_2->read(dev_485_2, 0, &rx_ch, 1)) {
					++rx_cnt;
					printf_syn("485-2 recv ind[%3d]:0x%2x\n", rx_cnt, rx_ch);
				}
			} else {
				printf_syn("485-2 recv error(%d)\n", err);
				++err_cnt;
			}
		}

		rt_thread_delay(get_ticks_of_ms(5 * 1000));

#else
		tx_en_rev_disable_485_1();
		rt_thread_delay(2);
		printf_syn("485-1 send:%d\n", tx_ch);
		dev_485_1->write(dev_485_1, 0, &tx_ch, 1);
		rt_thread_delay(2);
		tx_disable_rev_en_485_1();
#if 0
#if 0
		if (RT_EOK == rt_sem_take(&uart485_3_rx_msg_sem, WAIT_RX_MSG_TIMEOUT)) {
			read_cnt = dev_485_3->read(dev_485_3, 0, rx_buf, sizeof(rx_buf));
			if (read_cnt != 0) {
				rx_ch = rx_buf[read_cnt - 1];
			} else {
				rx_ch = 0;
				printf_syn("485-3 recv error(%d)\n", rt_get_errno());
			}

			printf_syn("485-3 recv:%d, read_cnt:%d\n", rx_ch, read_cnt);

			rt_thread_delay(5);

			tx_en_rev_disable_485_3();
			rt_thread_delay(2);
			printf_syn("485-3 send:%d\n", rx_ch);
			dev_485_3->write(dev_485_3, 0, &rx_ch, 1);
			rt_thread_delay(2);
			tx_disable_rev_en_485_3();

		} else {
			printf_syn("485-3 recv error\n");
		}
#else
		if (RT_EOK == rt_sem_take(&uart485_2_rx_msg_sem, WAIT_RX_MSG_TIMEOUT)) {
			read_cnt = dev_485_2->read(dev_485_2, 0, rx_buf, sizeof(rx_buf));
			if (read_cnt != 0) {
				rx_ch = rx_buf[read_cnt - 1];
			} else {
				rx_ch = 0;
				printf_syn("485-2 recv error(%d)\n", rt_get_errno());
			}

			printf_syn("485-2 recv:%d, read_cnt:%d\n", rx_ch, read_cnt);

			rt_thread_delay(5);

			tx_en_rev_disable_485_2();
			rt_thread_delay(2);
			printf_syn("485-2 send:%d\n", rx_ch);
			dev_485_2->write(dev_485_2, 0, &rx_ch, 1);
			rt_thread_delay(2);
			tx_disable_rev_en_485_2();

		} else {
			printf_syn("485-2 recv error\n");
		}

#endif
#else
		if (tx_ch & 0x01) {
			if (RT_EOK == rt_sem_take(&uart485_3_rx_msg_sem, WAIT_RX_MSG_TIMEOUT)) {
				read_cnt = dev_485_3->read(dev_485_3, 0, rx_buf, sizeof(rx_buf));
				if (read_cnt != 0) {
					rx_ch = rx_buf[read_cnt - 1];
				} else {
					rx_ch = 0;
					printf_syn("485-3 recv error(%d)\n", rt_get_errno());
				}

				printf_syn("485-3 recv:%d, read_cnt:%d\n", rx_ch, read_cnt);

				rt_thread_delay(5);

				tx_en_rev_disable_485_3();
				rt_thread_delay(2);
				printf_syn("485-3 send:%d\n", rx_ch);
				dev_485_3->write(dev_485_3, 0, &rx_ch, 1);
				rt_thread_delay(2);
				tx_disable_rev_en_485_3();

			} else {
				printf_syn("485-3 recv error\n");
			}
		} else {
			if (RT_EOK == rt_sem_take(&uart485_2_rx_msg_sem, WAIT_RX_MSG_TIMEOUT)) {
				read_cnt = dev_485_2->read(dev_485_2, 0, rx_buf, sizeof(rx_buf));
				if (read_cnt != 0) {
					rx_ch = rx_buf[read_cnt - 1];
				} else {
					rx_ch = 0;
					printf_syn("485-2 recv error(%d)\n", rt_get_errno());
				}

				printf_syn("485-2 recv:%d, read_cnt:%d\n", rx_ch, read_cnt);

				rt_thread_delay(5);

				tx_en_rev_disable_485_2();
				rt_thread_delay(2);
				printf_syn("485-2 send:%d\n", rx_ch);
				dev_485_2->write(dev_485_2, 0, &rx_ch, 1);
				rt_thread_delay(2);
				tx_disable_rev_en_485_2();

			} else {
				printf_syn("485-2 recv error\n");
			}
		}
#endif
		if (RT_EOK == rt_sem_take(&uart485_1_rx_msg_sem, WAIT_RX_MSG_TIMEOUT)) {
			dev_485_1->read(dev_485_1, 0, &rx_ch, 1);
			printf_syn("485-1 recv echo:%d\n\n", rx_ch);

		} else {
			printf_syn("485-1 recv echo error\n\n");
		}

		rt_thread_delay(get_ticks_of_ms(1*1000));
		++tx_ch;

#endif
#endif
	} /* while(1) */

	return;
}