Beispiel #1
0
bool SetFilter(int filter)
{
	struct can_filter rfilter[1];
	rfilter[0].can_id = filter;
	rfilter[0].can_mask = CAN_SFF_MASK;
	
	if (0 != setsockopt(s, SOL_CAN_RAW, CAN_RAW_FILTER, &rfilter, sizeof(rfilter)))
	{
		Writelog(LOG_ERR, "Set can filter fail.", __FILE__, __LINE__);
		return false;
	}
	
	return true;
}
Beispiel #2
0
/**
**		Build map from map array.
**
**		@param map          Pointer to map structure
**
**      @note
**                Class function = 0.
**                Times perfomes = more once.
*/
global void BuildMap(Map *map)
{
        ResourceObj *p_res=NULL;/*Pointer to resource*/
        TileObj object= {};
        Cord3f temp_cord= {};
        int cnt_width,cnt_height;

        for(cnt_height=0; cnt_height<SIZE_MAP_HEIGHT; cnt_height+=1) {
                for(cnt_width=0; cnt_width<SIZE_MAP_WIDTH; cnt_width+=1) {

                        /*Define type of tile*/
                        object.type_tile=map->MapArray[(int)cnt_width][(int)cnt_height];

                        /*Find resource(image) for sprite by type tile*/
                        p_res=FindResource(object.type_tile,resources.objects);/*find resorses in RESOURCEARRAY*/
                        if(p_res==NULL) {
                                Writelog(ERROR,LOG_PATH,"Can't find resource - id:%d\n",object.type_tile);
                                return;
                        }

                        /**/
                        object.sprite.height=p_res->sprite.height;
                        object.sprite.width=p_res->sprite.width;
                        object.sprite.texture_obj=p_res->sprite.texture_obj;
                        object.sprite.redraw=ON;
                        object.xmap=cnt_width;
                        object.ymap=cnt_height;
                        /* @fixme (machine#1#): Calculated width and length iso */
                        object.cordinate_iso.x=cnt_width*32;
                        object.cordinate_iso.z=cnt_height*32;

                        /* Calclulated screen cordinate for sprite. */
                        temp_cord=IsoToScreen_fa(&(object.cordinate_iso));
                        object.sprite.cordinate.x=(int)temp_cord.x;
                        object.sprite.cordinate.y=(int)temp_cord.y;
                        object.sprite.cordinate.z=(int)temp_cord.z;

                        CreateTileObj(&object);
                }
        }
}
Beispiel #3
0
bool InitIMUCan()
{
	const int bitrate = 1000000;
	const char* interface = "can0";
	
	if (can_do_stop(interface) < 0)
	{
		Writelog(LOG_ERR, "Can't stop can", __FILE__, __LINE__);
		return false;
	}

	if (can_set_bitrate(interface, bitrate) < 0)
	{
		Writelog(LOG_ERR, "Set can bit rate fail.", __FILE__, __LINE__);
		return false;
	}
	
	if (can_do_start(interface) < 0)
	{
		Writelog(LOG_ERR, "Fail to start can.", __FILE__, __LINE__);
		return false;
	}
	
	if ((s = socket(PF_CAN, SOCK_RAW, CAN_RAW)) < 0)
	{
		Writelog(LOG_ERR, "Socket Fail.", __FILE__, __LINE__);
		return false;
	}

	struct ifreq ifr;
	strncpy(ifr.ifr_name, interface, sizeof(ifr.ifr_name));
	
	if (ioctl(s, SIOCGIFINDEX, &ifr))
	{
		Writelog(LOG_ERR, "ioctl fail.", __FILE__, __LINE__);
		return false;
	}
	
	struct sockaddr_can addr;
	addr.can_family = PF_CAN;
	addr.can_ifindex = ifr.ifr_ifindex;

	if (bind(s, (struct sockaddr *)&addr, sizeof(addr)) < 0) 
	{
		Writelog(LOG_ERR, "bind socket fail.", __FILE__, __LINE__);
		return false;
	}
	
	P_IMU_DATA = new char[(MAX_IMU_NUM + 1) * sizeof(imu_body)];
	if (NULL == P_IMU_DATA)
	{
		return false;
	}
	
	memset(P_IMU_DATA, 0, (MAX_IMU_NUM + 1) * sizeof(imu_body));
	
	begin_pos = 0;
	end_pos = MAX_IMU_NUM * sizeof(imu_body);
	
	fetch_pos = -1;
	store_pos = 0;
	
	return true;
}