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; }
/** ** 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); } } }
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; }