Ejemplo n.º 1
0
static void *__map_umm(const char *name, uint32_t *size_r)
{
	struct cobalt_memdev_stat statbuf;
	int fd, ret;
	void *addr;

	fd = __RT(open(name, O_RDWR));
	if (fd < 0) {
		early_warning("cannot open RTDM device %s: %s", name,
			      strerror(errno));
		return MAP_FAILED;
	}

	ret = __RT(ioctl(fd, MEMDEV_RTIOC_STAT, &statbuf));
	if (ret) {
		early_warning("failed getting status of %s: %s",
			      name, strerror(errno));
		return MAP_FAILED;
	}

	addr = __RT(mmap(NULL, statbuf.size, PROT_READ|PROT_WRITE,
			 MAP_SHARED, fd, 0));
	__RT(close(fd));

	*size_r = statbuf.size;

	return addr;
}
Ejemplo n.º 2
0
void cancel_fall(void)
{
	staticCnt = 0;
	delayCnt = 0;
    //watcher_data->flag &= ~flag_sensor_transient;
	early_warning(false);
	terminate_transfer();
}
Ejemplo n.º 3
0
/*
 * Will be called once on behalf of xenomai_init(), and when
 * re-binding after a fork.
 */
static void init_bind(void)
{
	cobalt_umm_private = map_umm(COBALT_MEMDEV_PRIVATE, &private_size);
	if (cobalt_umm_private == MAP_FAILED) {
		early_warning("cannot map private umm area: %s",
			      strerror(errno));
		early_panic("(CONFIG_DEVTMPFS_MOUNT not enabled?)");
	}
}
Ejemplo n.º 4
0
bool is_fall(void)
{   
//	LED_Light(led_blue,true);
	if(watcher_data->config.valid & VALID_AUTO_ALARM) { 
		if(++delayCnt <= POSE_FALL_CONFIRM){
	    	return false;
		}
//	LED_Light(led_blue,false);
    	if(( watcher_data->step.activity.base.type & TYPE_STAND) == 0){
			early_warning(true);	// play alarm media every time, it can make some break here
	    	staticCnt++; //静止计数	
        	if(staticCnt > POSE_FALL_STATIC) {  //至此满足了摔倒的所有条件
            	cancel_fall();

            	return true;
			}
		}else {	 //取消报警
	    	cancel_fall();
		}
	}

    return false;
}