Beispiel #1
0
/* telnet server */
void telnet_srv()
{
    rt_thread_t tid;

    if (telnet == RT_NULL)
    {
        rt_uint8_t *ptr;

        telnet = rt_malloc (sizeof(struct telnet_session));
        if (telnet == RT_NULL)
        {
            rt_kprintf("telnet: no memory\n");
            return;
        }

        /* init ringbuffer */
        ptr = rt_malloc (TELNET_RX_BUFFER);
        rb_init(&telnet->rx_ringbuffer, ptr, TELNET_RX_BUFFER);
        /* create rx ringbuffer lock */
        telnet->rx_ringbuffer_lock = rt_sem_create("rxrb", 1, RT_IPC_FLAG_FIFO);
        ptr = rt_malloc (TELNET_TX_BUFFER);
        rb_init(&telnet->tx_ringbuffer, ptr, TELNET_TX_BUFFER);
        /* create tx ringbuffer lock */
        telnet->tx_ringbuffer_lock = rt_sem_create("txrb", 1, RT_IPC_FLAG_FIFO);

        /* create network event */
        telnet->nw_event = rt_event_create("telnet", RT_IPC_FLAG_FIFO);
    }

    tid = rt_thread_create("telnet", telnet_thread, RT_NULL,
                           2048, 25, 5);
    if (tid != RT_NULL)
        rt_thread_startup(tid);
}
Beispiel #2
0
int init(int& argc, char** argv, const std::string& name, uint32_t options)
{
    ros::init(argc, argv, name, options);

    node_name = name;

    srand(time(NULL));

    signal(SIGINT, rtros_signal_handler);
    signal(SIGXCPU, sigxcpu_handler);

    rt_print_auto_init(1);

    rt_event_create(&recv_data_msg_event, "recv_data_msg_event", 0, EV_PRIO);

    return rt_task_shadow(&main_shadow_task, name.c_str(), 0, 0);
}
void Commander::Init(const char *name)
{
	rt_thread_t recv_thread;
	dev  = rt_device_find(name);
	if(dev == RT_NULL)
  {
	 rt_kprintf("can not find %s!\n", name);
		return ;
	}
	recv_event = rt_event_create("cmdrecv",RT_IPC_FLAG_FIFO);
	if(recv_event==RT_NULL)
  {
	 rt_kprintf("commander recv event create error!\n");
		return ;
	}
	rt_device_set_rx_indicate(dev,data_rx_callback);
	rt_device_open(dev,RT_DEVICE_FLAG_INT_RX|RT_DEVICE_FLAG_RDWR);
	recv_thread = rt_thread_create("cmd_recv",recv_thread_entry,RT_NULL,1024,12,5);
	if(recv_thread != RT_NULL)
		rt_thread_startup(recv_thread);
}
void hm_heatcal_thread_entry(void* parameter)
{
    rt_uint32_t event_set = 0;
    float heat_used = 0;
    cal_event = rt_event_create("H_cal", RT_IPC_FLAG_FIFO);
    RT_ASSERT(cal_event);

    while(1) {
        if(rt_event_recv(cal_event, TDC_DATA_FULL_EVENT,
                         RT_EVENT_FLAG_AND | RT_EVENT_FLAG_CLEAR, RT_WAITING_FOREVER,
                         &event_set)==RT_EOK) {
            if((rt_mutex_take(temp_lock, rt_tick_from_millisecond(LOCK_TACK_WAIT_TIME_MS)) ||
                (rt_mutex_take(tof_lock, rt_tick_from_millisecond(LOCK_TACK_WAIT_TIME_MS)))) != RT_EOK) {
                rt_kprintf("TOF and temprature take lock error\n");
            }
            heat_used += do_heat_cal();
            rt_mutex_release(tof_lock);
            rt_mutex_release(temp_lock);
            heat_print(heat_used);
        }
    }
}
Beispiel #5
0
int main(void)
{
	unsigned long long before;
	RT_ALARM nalrm;
	RT_BUFFER nbuf;
	RT_COND ncond;
	RT_EVENT nevt;
	RT_HEAP nheap;
	RT_MUTEX nmtx;
	RT_PIPE npipe;
	RT_QUEUE nq;
	RT_SEM nsem;
	RT_TASK ntsk;
	int failed = 0;

	mlockall(MCL_CURRENT|MCL_FUTURE);

	rt_print_auto_init(1);

	rt_fprintf(stderr, "Checking for leaks in native skin services\n");
	before = get_used();
	check_native(rt_alarm_create(&nalrm, NULL));
	check_native(rt_alarm_delete(&nalrm));
	check_used("alarm", before, failed);

	before = get_used();
	check_native(rt_buffer_create(&nbuf, NULL, 16384, B_PRIO));
	check_native(rt_buffer_delete(&nbuf));
	check_used("buffer", before, failed);

	before = get_used();
	check_native(rt_cond_create(&ncond, NULL));
	check_native(rt_cond_delete(&ncond));
	check_used("cond", before, failed);

	before = get_used();
	check_native(rt_event_create(&nevt, NULL, 0, EV_PRIO));
	check_native(rt_event_delete(&nevt));
	check_used("event", before, failed);

	before = get_used();
	check_native(rt_heap_create(&nheap, "heap", 16384, H_PRIO | H_SHARED));
	check_native(rt_heap_delete(&nheap));
	check_used("heap", before, failed);

	before = get_used();
	check_native(rt_mutex_create(&nmtx, NULL));
	check_native(rt_mutex_delete(&nmtx));
	check_used("mutex", before, failed);

	before = get_used();
	check_native(rt_pipe_create(&npipe, NULL, P_MINOR_AUTO, 0));
	check_native(rt_pipe_delete(&npipe));
	check_used("pipe", before, failed);

	before = get_used();
	check_native(rt_queue_create(&nq, "queue", 16384, Q_UNLIMITED, Q_PRIO));
	check_native(rt_queue_delete(&nq));
	check_used("queue", before, failed);

	before = get_used();
	check_native(rt_sem_create(&nsem, NULL, 0, S_PRIO));
	check_native(rt_sem_delete(&nsem));
	check_used("sem", before, failed);

	before = get_used();
	check_native(rt_task_spawn(&ntsk, NULL, 0, 1, T_JOINABLE, empty, NULL));
	check_native(rt_task_join(&ntsk));
	sleep(1);		/* Leave some time for xnheap
				 * deferred free */
	check_used("task", before, failed);

	return failed ? EXIT_FAILURE : EXIT_SUCCESS;
}
Beispiel #6
0
int rt_event_create(RT_EVENT *event, const char *name,
                    unsigned long ivalue, int mode)
{
    return __CURRENT(rt_event_create(event, name, ivalue, mode));
}