Esempio n. 1
0
/**
 * 更新好友信息数据.
 * @param pal 好友数据
 */
void UdpData::UpdatePalInfo(PalInfo *pal)
{
        g_free(pal->segdes);
        pal->segdes = progdt.FindNetSegDescription(ipv4);
        g_free(pal->version);
        if (!(pal->version = iptux_get_section_string(buf, ':', 0)))
                pal->version = g_strdup("?");
        g_free(pal->user);
        if (!(pal->user = iptux_get_section_string(buf, ':', 2)))
                pal->user = g_strdup("???");
        g_free(pal->host);
        if (!(pal->host = iptux_get_section_string(buf, ':', 3)))
                pal->host = g_strdup("???");
        if (!FLAG_ISSET(pal->flags, 2)) {
                g_free(pal->name);
                if (!(pal->name = ipmsg_get_attach(buf, ':', 5)))
                        pal->name = g_strdup(_("mysterious"));
                g_free(pal->group);
                pal->group = GetPalGroup();
                g_free(pal->iconfile);
                if (!(pal->iconfile = GetPalIcon()))
                        pal->iconfile = g_strdup(progdt.palicon);
                FLAG_CLR(pal->flags, 0);
                g_free(pal->encode);
                if ( (pal->encode = GetPalEncode()))
                        FLAG_SET(pal->flags, 0);
                else
                        pal->encode = g_strdup(encode ? encode : "utf-8");
        }
        FLAG_SET(pal->flags, 1);
        pal->packetn = 0;
        pal->rpacketn = 0;
}
Esempio n. 2
0
/**
 * 创建好友信息数据.
 * @return 好友数据
 */
PalInfo *UdpData::CreatePalInfo()
{
        PalInfo *pal;

        pal = new PalInfo;
        pal->ipv4 = ipv4;
        pal->segdes = progdt.FindNetSegDescription(ipv4);
        if (!(pal->version = iptux_get_section_string(buf, ':', 0)))
                pal->version = g_strdup("?");
        if (!(pal->user = iptux_get_section_string(buf, ':', 2)))
                pal->user = g_strdup("???");
        if (!(pal->host = iptux_get_section_string(buf, ':', 3)))
                pal->host = g_strdup("???");
        if (!(pal->name = ipmsg_get_attach(buf, ':', 5)))
                pal->name = g_strdup(_("mysterious"));
        pal->group = GetPalGroup();
        pal->photo = NULL;
        pal->sign = NULL;
        if (!(pal->iconfile = GetPalIcon()))
                pal->iconfile = g_strdup(progdt.palicon);
        if ( (pal->encode = GetPalEncode()))
                FLAG_SET(pal->flags, 0);
        else
                pal->encode = g_strdup(encode ? encode : "utf-8");
        FLAG_SET(pal->flags, 1);
        pal->packetn = 0;
        pal->rpacketn = 0;

        return pal;
}
Esempio n. 3
0
static void
clientAutoMaximize (Client * c, int full_w, int full_h)
{
    if (FLAG_TEST (c->flags, CLIENT_FLAG_FULLSCREEN) ||
        !FLAG_TEST (c->xfwm_flags, XFWM_FLAG_HAS_BORDER))
    {
        /*
         * Fullscreen or undecorated windows should not be
         * automatically maximized...
         */
        return;
    }

    if (!FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED_HORIZ) &&
        (frameWidth (c) > full_w))
    {
        TRACE ("The application \"%s\" has requested a window width "
               "(%u) larger than the actual width available in the workspace (%u), "
               "the window will be maximized horizontally.", c->name, frameWidth (c), full_w);
        FLAG_SET (c->flags, CLIENT_FLAG_MAXIMIZED_HORIZ);
    }

    if (!FLAG_TEST (c->flags, CLIENT_FLAG_MAXIMIZED_VERT) &&
        (frameHeight (c) > full_h))
    {
        TRACE ("The application \"%s\" has requested a window height "
               "(%u) larger than the actual height available in the workspace (%u), "
               "the window will be maximized vertically.", c->name, frameHeight (c), full_h);
        FLAG_SET (c->flags, CLIENT_FLAG_MAXIMIZED_VERT);
    }
}
Esempio n. 4
0
tail_recursion_elimination ()
{
  int alt;
  int tre = 0;

  if (no_recursion_elm_flag)
    return false;

  for (alt = SON (ulhs); alt != nil; alt = BROTHER (alt))
  {
    int mem = SON (alt);
    if (mem == nil)
      continue;
    if (FLAG_MARKED (alt, no_tail_recursion_opt_f))
      continue;
    mem = get_last_but_cut_mem (mem);
    if (DEF (mem) == ulhs)
    {
      FLAG_SET (alt, tail_recursion_opt_f);
      FLAG_SET (mem, tail_recursion_opt_f);
      tre = 1;
    }
  }
  return tre;
}
Esempio n. 5
0
/*
 * Set Handle Features
 */
int nvmed_handle_feature_set(NVMED_HANDLE* nvmed_handle, int feature, int value) {
	switch(feature) {
		case HANDLE_DIRECT_IO:
			if(value)
				FLAG_SET(nvmed_handle, HANDLE_DIRECT_IO);
			else
				FLAG_UNSET(nvmed_handle, HANDLE_DIRECT_IO);
			break;

		case HANDLE_SYNC_IO:
			if(value)
				FLAG_SET(nvmed_handle, HANDLE_SYNC_IO);
			else
				FLAG_UNSET(nvmed_handle, HANDLE_SYNC_IO);
			break;

		case HANDLE_HINT_DMEM:
			if(value)
				FLAG_SET(nvmed_handle, HANDLE_HINT_DMEM);
			else
				FLAG_UNSET(nvmed_handle, HANDLE_HINT_DMEM);
			break;
	}

	return value;
}
void USB_Init(void)
{  
    extern uint32 __VECTOR_RAM[];

    /* Software Configuration */
    Setup_Pkt=(tUSB_Setup*)BufferPointer[bEP0OUT_ODD];
    gu8USB_State=uPOWER;

    /* MPU Configuration */
    MPU_CESR=0;                                     // MPU is disable. All accesses from all bus masters are allowed

    /* SIM Configuration */
    #ifdef USB_CLOCK_CLKIN
    FLAG_SET(SIM_SCGC5_PORTE_SHIFT,SIM_SCGC5); 
    PORTE_PCR26=(0|PORT_PCR_MUX(7));                // Enabling PTE26 as CLK input    
    #endif    
    
    #ifdef USB_CLOCK_PLL
    FLAG_SET(SIM_SOPT2_PLLFLLSEL_SHIFT,SIM_SOPT2);  // Select PLL output
    #endif
    
    #ifndef USB_CLOCK_CLKIN
    FLAG_SET(SIM_SOPT2_USBSRC_SHIFT,SIM_SOPT2);     // PLL/FLL selected as CLK source
    #endif

    SIM_CLKDIV2|=USB_FARCTIONAL_VALUE;              // USB Freq Divider
    SIM_SCGC4|=(SIM_SCGC4_USBOTG_MASK);             // USB Clock Gating
    
    /* NVIC Configuration */
    __VECTOR_RAM[89]=(UINT32)USB_ISR;      //replace ISR
    //NVICICER2|=(1<<9);                     //Clear any pending interrupts on USB
    NVICISER2|=(1<<9);                     //Enable interrupts from USB module  

    
    /* USB Module Configuration */
    // Reset USB Module
    USB0_USBTRC0|=USB_USBTRC0_USBRESET_MASK;
    while(FLAG_CHK(USB_USBTRC0_USBRESET_SHIFT,USB0_USBTRC0)){};
    
    // Set BDT Base Register
    USB0_BDTPAGE1=(UINT8)((UINT32)tBDTtable>>8);
    USB0_BDTPAGE2=(UINT8)((UINT32)tBDTtable>>16);
    USB0_BDTPAGE3=(UINT8)((UINT32)tBDTtable>>24);

    // Clear USB Reset flag
    FLAG_SET(USB_ISTAT_USBRST_MASK,USB0_ISTAT);

    // Enable USB Reset Interrupt
    FLAG_SET(USB_INTEN_USBRSTEN_SHIFT,USB0_INTEN);
    
    // Enable weak pull downs
    USB0_USBCTRL=0x40;

    USB0_USBTRC0|=0x40;

    USB0_CTL|=0x01;
    

}
void USB_Reset_Handler(void)
{
    //PMC_VLPR_Exit();
      
    /* Software Flags */
    u8CDCState=0;
    gu8USBClearFlags=0xFF;
    gu8USB_Toogle_flags=0;
    gu8USB_PingPong_flags=0x00;
    
    /* Disable all data EP registers */
    USB0_ENDPT1=0x00;
    USB0_ENDPT2=0x00;
    USB0_ENDPT3=0x00;
    USB0_ENDPT4=0x00;
    USB0_ENDPT5=0x00;
    USB0_ENDPT6=0x00;

    /* EP0 BDT Setup */
    // EP0 OUT BDT Settings
    tBDTtable[bEP0OUT_ODD].Cnt = EP0_SIZE;
    tBDTtable[bEP0OUT_ODD].Addr =(UINT32)gu8EP0_OUT_ODD_Buffer;
    tBDTtable[bEP0OUT_ODD].Stat._byte = kUDATA1;         
    // EP0 OUT BDT Settings 
    tBDTtable[bEP0OUT_EVEN].Cnt = EP0_SIZE;
    tBDTtable[bEP0OUT_EVEN].Addr =(UINT32)gu8EP0_OUT_EVEN_Buffer;
    tBDTtable[bEP0OUT_EVEN].Stat._byte = kUDATA1;         
    // EP0 IN BDT Settings 
    tBDTtable[bEP0IN_ODD].Cnt = EP0_SIZE;              
    tBDTtable[bEP0IN_ODD].Addr =(UINT32)gu8EP0_IN_ODD_Buffer;      
    tBDTtable[bEP0IN_ODD].Stat._byte = kUDATA0;   
    // EP0 IN BDT Settings 
    tBDTtable[bEP0IN_EVEN].Cnt = (EP0_SIZE);              
    tBDTtable[bEP0IN_EVEN].Addr =(UINT32)gu8EP0_IN_EVEN_Buffer;      
    tBDTtable[bEP0IN_EVEN].Stat._byte = kUDATA0;        

    // Enable EP0
    USB0_ENDPT0=0x0D;

    // Clear all Error flags
    USB0_ERRSTAT=0xFF;
    
    // CLear all USB ISR flags
    USB0_ISTAT=0xFF;

    // Set default Address
    USB0_ADDR=0x00;

    // Enable all error sources
    USB0_ERREN=0xFF;

    // USB Interrupt Enablers
    FLAG_SET(USB_INTEN_TOKDNEEN_SHIFT,USB0_INTEN);
    FLAG_SET(USB_INTEN_SOFTOKEN_SHIFT,USB0_INTEN);
    FLAG_SET(USB_INTEN_ERROREN_SHIFT,USB0_INTEN); 
    FLAG_SET(USB_INTEN_USBRSTEN_SHIFT,USB0_INTEN);    
}
Esempio n. 8
0
/*
 * Allocation cache slot and memory
 */
int nvmed_cache_alloc(NVMED* nvmed, unsigned int size, bool lazy_init) {
	int i;
	unsigned int req_size;
	NVMED_CACHE_SLOT *slot;
	NVMED_CACHE *info;
	u64 *paList;

	pthread_spin_lock(&nvmed->mngt_lock);

	if(size == 0) return -NVMED_FAULT;
	if(size == nvmed->num_cache_size) return 0;
	if(size < nvmed->num_cache_size) {
		nvmed_printf("%s: Cache shrinking is not supported\n", nvmed->ns_path);
		return -NVMED_FAULT;
	}
	
	req_size = size - nvmed->num_cache_size;
	slot = malloc(sizeof(NVMED_CACHE_SLOT));
	
	slot->cache_info = malloc(sizeof(NVMED_CACHE) * req_size);
	slot->cache_ptr = mmap(NULL, PAGE_SIZE * req_size, PROT_READ | PROT_WRITE, 
			MAP_ANONYMOUS | MAP_LOCKED | MAP_SHARED, -1, 0);
	slot->size = req_size;
	LIST_INSERT_HEAD(&nvmed->slot_head, slot, slot_list);
	
	/* Initialize memory and translate virt to phys addr */
	if(!lazy_init) {
		paList = malloc(sizeof(u64) * req_size);
		virt_to_phys(nvmed, slot->cache_ptr, paList, PAGE_SIZE * req_size);
	}

	/* fill cache info and add to free list */
	for(i=0; i<req_size; i++) {
		info = slot->cache_info + i;
		info->lpaddr = 0;
		info->ref = 0;
		if(lazy_init == false) {
			info->paddr = paList[i];
			FLAG_SET(info, CACHE_FREE);
		}
		else {
			info->paddr = 0;
			FLAG_SET(info, CACHE_UNINIT | CACHE_FREE);
		}
		info->ptr = slot->cache_ptr + (i*PAGE_SIZE);

		TAILQ_INSERT_HEAD(&nvmed->free_head, info, cache_list);
	}
	
	nvmed->num_cache_size = size;

	pthread_spin_unlock(&nvmed->mngt_lock);

	return req_size;
}
Esempio n. 9
0
//=========================================================================
//函数名: hw_usb_reset_handler
//功  能: 处理复位中断
//参  数: 无
//返  回: 无
//=========================================================================
void hw_usb_reset_handler(void)
{      
    //清标志
    gu8USBClearFlags=0xFF;
    gu8USB_Toogle_flags=0;
    
    //禁止所有端点
    USB0_ENDPT1=0x00;
    USB0_ENDPT2=0x00;
    USB0_ENDPT3=0x00;
    USB0_ENDPT4=0x00;
    USB0_ENDPT5=0x00;
    USB0_ENDPT6=0x00;

    // EP0 BDT Setup
    // EP0 OUT BDT 设置
    tBDTtable[bEP0OUT_ODD].Cnt = EP0_SIZE;
    tBDTtable[bEP0OUT_ODD].Addr =(uint_32)gu8EP0_OUT_ODD_Buffer;
    tBDTtable[bEP0OUT_ODD].Stat._byte = kUDATA1;         
    // EP0 OUT BDT 设置
    tBDTtable[bEP0OUT_EVEN].Cnt = EP0_SIZE;
    tBDTtable[bEP0OUT_EVEN].Addr =(uint_32)gu8EP0_OUT_EVEN_Buffer;
    tBDTtable[bEP0OUT_EVEN].Stat._byte = kUDATA1;         
    // EP0 IN BDT 设置 
    tBDTtable[bEP0IN_ODD].Cnt = EP0_SIZE;              
    tBDTtable[bEP0IN_ODD].Addr =(uint_32)gu8EP0_IN_ODD_Buffer;      
    tBDTtable[bEP0IN_ODD].Stat._byte = kUDATA0;   
    // EP0 IN BDT 设置 
    tBDTtable[bEP0IN_EVEN].Cnt = (EP0_SIZE);              
    tBDTtable[bEP0IN_EVEN].Addr =(uint_32)gu8EP0_IN_EVEN_Buffer;      
    tBDTtable[bEP0IN_EVEN].Stat._byte = kUDATA0;        

    // 使能 EP0
    USB0_ENDPT0=0x0D;

    // 清除所有的错误
    USB0_ERRSTAT=0xFF;
    
    // 清除所有的中断标志
    USB0_ISTAT=0xFF;

    // USB设备地址
    USB0_ADDR=0x00;

    // 使能所有的错误中断
    USB0_ERREN=0xFF;

    // USB模块中断使能
    FLAG_SET(USB_INTEN_TOKDNEEN_SHIFT,USB0_INTEN);
    FLAG_SET(USB_INTEN_SOFTOKEN_SHIFT,USB0_INTEN);
    FLAG_SET(USB_INTEN_ERROREN_SHIFT,USB0_INTEN); 
    FLAG_SET(USB_INTEN_USBRSTEN_SHIFT,USB0_INTEN);    
}
Esempio n. 10
0
void _bsp_platform_init(void)
{
    /* MPU Configuration */
    MPU_CESR=0;                                     // MPU is disable. All accesses from all bus masters are allowed

    /* SIM Configuration */
    FLAG_SET(SIM_SOPT2_USBSRC_SHIFT,SIM_SOPT2);     // PLL/FLL selected as CLK source
    FLAG_SET(SIM_SOPT2_PLLFLLSEL_SHIFT,SIM_SOPT2);  // Select PLL output
    SIM_CLKDIV2=0x02;                               // USB Freq Divider
    SIM_SCGC4|=(SIM_SCGC4_USBOTG_MASK);             // USB Clock Gating    


    // weak pulldowns
    USB0_USBCTRL=0x40;
}  
Esempio n. 11
0
//=========================================================================
//函数名: hw_usb_endpoint_setup_handler
//功  能: 当主机请求接口配置请求时,执行该函数
//参  数: 无  
//返  回: 无
//=========================================================================
void hw_usb_endpoint_setup_handler(void)
{
    uint_16 u16Status;
    

    switch(Setup_Pkt->bRequest)
    {        
        case GET_STATUS:
            if(FLAG_CHK(Setup_Pkt->wIndex_h,gu8HALT_EP))
                u16Status=0x0100;
            else
                u16Status=0x0000;
            
            hw_usb_ep_in_transfer(EP0,(uint_8*)&u16Status,2);
            break;

        case CLEAR_FEATURE:
            FLAG_CLR(Setup_Pkt->wIndex_h,gu8HALT_EP); 
            hw_usb_ep_in_transfer(EP0,0,0);
            break;

        case SET_FEATURE:
            FLAG_SET(Setup_Pkt->wIndex_h,gu8HALT_EP); 
            hw_usb_ep_in_transfer(EP0,0,0);
            break;

        default:
            break;
    }
}
Esempio n. 12
0
void vfnInitUSBClock (uint8_t u8ClkOption)
{

  switch (u8ClkOption)
  {
    case MCGPLL0:
    {
      SIM_SOPT2 |= SIM_SOPT2_PLLFLLSEL_MASK     /** PLL reference */
                |  SIM_SOPT2_USBSRC_MASK;       /** USB clock source MCGPLLCLK/2 or MCGFLLCLK  */

      break;
    }


    case MCGFLL:
    {
        /** Configure FLL to generate a 48MHz core clock */
       fll_init();

        SIM_SOPT2 &= ~SIM_SOPT2_PLLFLLSEL_MASK;       /** FLL reference */
        SIM_SOPT2 |=  SIM_SOPT2_USBSRC_MASK;          /** USB clock source MCGPLLCLK/2 or MCGFLLCLK  */
        break;
    }

    case CLKIN:
    {
      SIM_SOPT2 &= (uint32_t)(~SIM_SOPT2_USBSRC_MASK);    /** PTA5 selected as USBFS CLK source */
      FLAG_SET(SIM_SCGC5_PORTA_SHIFT,SIM_SCGC5);
      PORTA_PCR5=(0|PORT_PCR_MUX(2));                   /** Enable PTA5 as CLK input */
    }
  }

  SIM_SCGC4|=(SIM_SCGC4_USBOTG_MASK);             // USB Clock Gating
}
Esempio n. 13
0
void block_store_link(block_store_t *const bs, const char *const filename) {
    if (bs && filename) {
        if (! FLAG_CHECK(bs, FILE_LINKED)) {
            // Ok, I can make a giant complicated hunk of logic to:
            //   Create if it doesn't exist
            //   Increase size if smaller
            //   Decrease size if larger
            // and It'll be a giant headache for various reasons (error checking, portability)
            // OR, I can just do it in two commands and call it a day.
            bs->fd = open(filename, O_WRONLY | O_TRUNC | O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP);
            if (bs->fd != -1) {
                if (utility_write_file(bs->fd, bs->data_blocks, BLOCK_COUNT * BLOCK_SIZE) == BLOCK_COUNT * BLOCK_SIZE) {
                    // Kill the DBM and dirty flag, set link state
                    bitmap_format(bs->dbm, 0x00);
                    FLAG_CLEAR(bs, DIRTY);
                    FLAG_SET(bs, FILE_LINKED);
                    bs_errno = BS_OK;
                    return;
                }
                bs_errno = BS_FILE_IO;
                return;
            }
            bs_errno = BS_FILE_ACCESS;
            return;
        }
        bs_errno = BS_LINK_EXISTS;
        return;
    }
    bs_errno = BS_PARAM;
}
Esempio n. 14
0
void I8254Pit::writePeriodicIo(void)
{
	state.lock.acquire();

	io::write8(
		i8254_CHAN0_IO_CONTROL,
		i8254_CHAN0_CONTROL_SELECT_COUNTER
		| i8254_CHAN0_CONTROL_MODE2_RATEGEN
		| i8254_CHAN0_CONTROL_COUNTER_WRITE_LOWHIGH);

	atomicAsm::memoryBarrier();

	// Write out the currently set periodic rate.
	io::write8(
		i8254_CHAN0_IO_COUNTER,
		i8254State.currentIntervalClks & 0xFF);

	io::write8(
		i8254_CHAN0_IO_COUNTER,
		i8254State.currentIntervalClks >> 8);

	FLAG_SET(
		state.rsrc.flags,
		ZKCM_TIMERDEV_STATE_FLAGS_ENABLED
		| ZKCM_TIMERDEV_STATE_FLAGS_SOFT_ENABLED);

	state.lock.release();
}
Esempio n. 15
0
int esys_isolate(struct esys* esys, ocn_entity_token_t token, entity_t** entity)
{
    if(token >= OCN_MAX_ENTITIES)
        return OCN_ENTITY_ERR_RANGE;

    *entity = NULL;

    pthread_spin_lock(&esys->lock);

    struct entityslot* slot = &esys->slots[token];

    if(!FLAG_GET(slot->flags, ENTITYSLOT_FLAG_USED))
    {
        pthread_spin_unlock(&esys->lock);
        return OCN_ENTITY_ERR_NONEXIST;
    }

    if(FLAG_GET(slot->flags, ENTITYSLOT_FLAG_ISOLATED))
    {
        pthread_spin_unlock(&esys->lock);
        return OCN_ENTITY_ERR_ISOLATED;
    }

    /* --- */

    FLAG_SET(slot->flags, ENTITYSLOT_FLAG_ISOLATED);
    *entity = &slot->entity;

    /* --- */

    pthread_spin_unlock(&esys->lock);

    return OCN_OK;
}
Esempio n. 16
0
static int sudoku_get(const char *filename)
{
	int fd;
	int i, j;
	char buf[10];

	fd = open(filename, O_RDONLY);
	if (fd == -1) {
		printf("open %s error!\n", filename);
		getch();
		exit(-1);
	}

	for (i = 0; i < 9; i++) {
		read(fd, buf, 10);
		for (j = 0; j < 9; j++) {
			if ((buf[j] >= '0') && (buf[j] <= '9')) {
				sudoku[i][j].data = buf[j] - '0';
				sudoku[i][j].flag = FLAG_SET(buf[j] - '0');
			} else {
				printf("ERROR - Please check origin data\n");
				getch();
				exit(-1);
			}
		}
	}

	if (fd)
		close(fd);

	return 0;
}
Esempio n. 17
0
int esys_add(struct esys* esys, ocn_entity_token_t* token, ocn_entity_type_t type)
{
    if(token == NULL)
        return OCN_FAIL;

    /* generate token */
    if(esys_token(esys, token) != OCN_OK)
        return OCN_ENTITY_ERR_MAX;

    /* we do not need to lock here,
       because nobody can possibly
       know this token by now. */
    if(entity_init(&esys->slots[*token].entity, type) != OCN_OK)
        return OCN_ENTITY_ERR_INIT;

    pthread_spin_lock(&esys->lock);

    /* --- */

    FLAG_SET(esys->slots[*token].flags, ENTITYSLOT_FLAG_USED);

    /* --- */

    pthread_spin_unlock(&esys->lock);

    return OCN_OK;
}
Esempio n. 18
0
/*!
 *  @brief      当前接口请求为CDC类请求 的 中断复位函数
 *  @note       在 USB_Setup_Handler 中断里调用
 *  @since      v5.0
 */
uint8 CDC_InterfaceReq_Handler(void)
{
    uint8 u8State = uSETUP;

    switch(Setup_Pkt->bRequest)
    {
    case GET_INTERFACE:
        EP_IN_Transfer(EP0, &gu8Interface, 1);
        break;

    case GET_LINE_CODING:
        EP_IN_Transfer(EP0, (uint8 *)&com_cfg, 7);
        break;

    case SET_LINE_CODING:
        u8CDCState = SET_LINE_CODING;
        u8State = uDATA;
        break;

    case SET_CONTROL_LINE_STATE:
        u8CDCState = SET_CONTROL_LINE_STATE;
        u8State = uSETUP;
        break;

    case LOADER_MODE:
        FLAG_SET(LOADER, gu8USB_Flags);
        CDC_OUT_Data[0] = 0xFF;
        break;
    default:
        break;
    }
    return(u8State);
}
Esempio n. 19
0
int rsys_worker_req_add(struct rsys* rsys, ocn_entity_token_t token, entity_t* entity)
{
    rsys_req_t* req = ocn_malloc(sizeof(rsys_req_t));

    req->flags = 0;
    FLAG_SET(req->flags, RSYS_REQ_RENDERER);
    req->type = RSYS_REQ_TYPE_ADD;
    req->token = token;

    switch(entity->type)
    {
    case ENTITY_TYPE_NONE:
        break;

    case ENTITY_TYPE_CAMERA:
        break;

    case ENTITY_TYPE_POINTLIGHT:
        break;

    case ENTITY_TYPE_STATIC_MESH:
        break;

    default:
        break;
    }

    return rsys_worker_req(rsys, req);
}
Esempio n. 20
0
/**
 * 好友信息数据丢失默认处理函数.
 * 若xx并不在好友列表中,但是程序却期望能够接受xx的本次会话,
 * 所以必须以默认数据构建好友信息数据并插入好友列表 \n
 */
void UdpData::SomeoneLost()
{
        PalInfo *pal;

        /* 创建好友数据 */
        pal = new PalInfo;
        pal->ipv4 = ipv4;
        pal->segdes = progdt.FindNetSegDescription(ipv4);
        if (!(pal->version = iptux_get_section_string(buf, ':', 0)))
                pal->version = g_strdup("?");
        if (!(pal->user = iptux_get_section_string(buf, ':', 2)))
                pal->user = g_strdup("???");
        if (!(pal->host = iptux_get_section_string(buf, ':', 3)))
                pal->host = g_strdup("???");
        pal->name = g_strdup(_("mysterious"));
        pal->group = g_strdup(_("mysterious"));
        pal->photo = NULL;
        pal->sign = NULL;
        pal->iconfile = g_strdup(progdt.palicon);
        pal->encode = g_strdup(encode ? encode : "utf-8");
        FLAG_SET(pal->flags, 1);
        pal->packetn = 0;
        pal->rpacketn = 0;

        /* 加入好友列表 */
        gdk_threads_enter();
        pthread_mutex_lock(cthrd.GetMutex());
        cthrd.AttachPalToList(pal);
        pthread_mutex_unlock(cthrd.GetMutex());
        mwin.AttachItemToPaltree(ipv4);
        gdk_threads_leave();
}
Esempio n. 21
0
void
clientInitFocusFlag (Client * c)
{
    ScreenInfo *screen_info;
    Client *c2;
    GList *list;
    guint workspace;

    g_return_if_fail (c != NULL);
    TRACE ("client \"%s\" (0x%lx)", c->name, c->window);

    if (!clientAcceptFocus (c) || (c->type & WINDOW_TYPE_DONT_FOCUS))
    {
       return;
    }

    screen_info = c->screen_info;
    workspace = c->win_workspace;
    for (list = screen_info->windows_stack; list; list = g_list_next (list))
    {
        c2 = (Client *) list->data;
        if ((c2->win_workspace == workspace) && FLAG_TEST (c2->xfwm_flags, XFWM_FLAG_FOCUS))
        {
            FLAG_UNSET (c2->xfwm_flags, XFWM_FLAG_FOCUS);
        }
    }
    FLAG_SET (c->xfwm_flags, XFWM_FLAG_FOCUS);
}
Esempio n. 22
0
void I8254Pit::writeOneshotIo(void)
{
	/**	NOTE:
	 * Interesting note here, Linux seems to use mode 4 for the oneshot
	 * timer (Software retriggerable strobe).
	 **/
	state.lock.acquire();

	// Write out the oneshot mode (mode 0) control byte.
	io::write8(
		i8254_CHAN0_IO_CONTROL,
		i8254_CHAN0_CONTROL_SELECT_COUNTER
		| i8254_CHAN0_CONTROL_MODE0_ONESHOT
		| i8254_CHAN0_CONTROL_COUNTER_WRITE_LOWHIGH);

	atomicAsm::memoryBarrier();

	// Write out the number of ns converted into i8254 CLK pulse equiv time.
	io::write8(
		i8254_CHAN0_IO_COUNTER,
		i8254State.currentTimeoutClks & 0xFF);

	io::write8(
		i8254_CHAN0_IO_COUNTER,
		i8254State.currentTimeoutClks >> 8);

	FLAG_SET(
		state.rsrc.flags,
		ZKCM_TIMERDEV_STATE_FLAGS_ENABLED
		| ZKCM_TIMERDEV_STATE_FLAGS_SOFT_ENABLED);

	state.lock.release();
}
Esempio n. 23
0
void USB_Endpoint_Setup_Handler(void)
{
    UINT16 u16Status;
    

    switch(Setup_Pkt->bRequest)
    {        
        case GET_STATUS:
            if(FLAG_CHK(Setup_Pkt->wIndex_h,gu8HALT_EP))
                u16Status=0x0100;
            else
                u16Status=0x0000;
            
            EP_IN_Transfer(EP0,(UINT8*)&u16Status,2);
            break;

        case CLEAR_FEATURE:
            FLAG_CLR(Setup_Pkt->wIndex_h,gu8HALT_EP); 
            EP_IN_Transfer(EP0,0,0);
            break;

        case SET_FEATURE:
            FLAG_SET(Setup_Pkt->wIndex_h,gu8HALT_EP); 
            EP_IN_Transfer(EP0,0,0);
            break;

        default:
            break;
    }
}
Esempio n. 24
0
UINT8 CDC_InterfaceReq_Handler(void)
{
    UINT8 u8State=uSETUP;
    
    switch(Setup_Pkt->bRequest)
    {        
        case GET_INTERFACE:
            EP_IN_Transfer(EP0,&gu8Interface,1);
            break;

        case GET_LINE_CODING:
            EP_IN_Transfer(EP0,(UINT8*)&LineCoding,7);
            break;

        case SET_LINE_CODING:
            u8CDCState=SET_LINE_CODING;
            u8State=uDATA;
            break;

        case SET_CONTROL_LINE_STATE:
            u8CDCState=SET_CONTROL_LINE_STATE;
            u8State=uSETUP;
            break;


        case LOADER_MODE:
            Buffer_Init(CDC_OUT_Data,CDC_BUFFER_SIZE);
            FLAG_SET(LOADER,gu8USB_Flags);
            CDC_OUT_Data[0]=0xFF;
            break;


    }
    return(u8State);
}
Esempio n. 25
0
//=========================================================================
//函数名: hw_usb_init
//功  能: USB模块初始 
//参  数: 无
//返  回: 无
//=========================================================================
void hw_usb_init(void)
{
	tBDTtable = (tBDT *)((( uint_32 ) tBDT_unaligned & 0xFFFFFE00UL)+ 0x200UL);
    Setup_Pkt=(tUSB_Setup*)BufferPointer[bEP0OUT_ODD];
    gu8USB_State=uPOWER;

    //USB_FMC_ACC_ENABLE;
    USB_REG_SET_ENABLE;
    USB_REG_CLEAR_STDBY;
    
    //MPU_CESR=0;//禁止MPU
    FLAG_SET(SIM_SOPT2_PLLFLLSEL_SHIFT,SIM_SOPT2);  // 使能PLL输出
    FLAG_SET(SIM_SOPT2_USBSRC_SHIFT,SIM_SOPT2);     // 使能PLL/FLL为时钟源
   

    //SIM_CLKDIV2|=USB_FARCTIONAL_VALUE;              //USB分频因子设置
    SIM_SCGC4|=(SIM_SCGC4_USBOTG_MASK);             //USB模块时钟门使能

    enable_irq(USB_INTERRUPT_IRQ);                  //使能USB模块IRQ中断

    //USB模块寄存器配置
    USB0_USBTRC0|=USB_USBTRC0_USBRESET_MASK;        //复位USB模块
    while(FLAG_CHK(USB_USBTRC0_USBRESET_SHIFT,USB0_USBTRC0)){};	
    
    //设置BDT基址寄存器
    //( 低9 位是默认512 字节的偏移) 512 = 16 * 4 * 8 。
    //8 位表示: 4 个字节的控制状态,4 个字节的缓冲区地址 。
    USB0_BDTPAGE1=(uint_8)((uint_32)tBDTtable>>8);
    USB0_BDTPAGE2=(uint_8)((uint_32)tBDTtable>>16);
    USB0_BDTPAGE3=(uint_8)((uint_32)tBDTtable>>24);

    //清除USB模块复位标志
    FLAG_SET(USB_ISTAT_USBRST_MASK,USB0_ISTAT);

    //使能USB模块复位中断
    FLAG_SET(USB_INTEN_USBRSTEN_SHIFT,USB0_INTEN);

    USB0_USBCTRL=0x40;


    USB0_USBTRC0|=0x40;                            //强制设置第6位为1

    USB0_CTL|=0x01;                                //USB模块使能
    
    //上拉使能
    FLAG_SET(USB_CONTROL_DPPULLUPNONOTG_SHIFT,USB0_CONTROL);
}
Esempio n. 26
0
void USB_Init(void)
{
    /* Software Configuration */
    Setup_Pkt=(tUSB_Setup*)BufferPointer[bEP0OUT_ODD];
    gu8USB_State=uPOWER;

    /* MPU Configuration */
    // MPU_CESR=0;                                    MPU is disable. All accesses from all bus masters are allowed

    /** Feed 48MHz to the USB FS clock */
    vfnInitUSBClock(USB_CLOCK);

    /* NVIC Configuration */
    extern uint32 __VECTOR_RAM[];           //Get vector table that was copied to RAM
    __VECTOR_RAM[40]=(uint32)USB_ISR;       //replace ISR
    enable_irq(24);                         //IRQ 24 for USBOTG and USBCDC on L2K


    /* USB Module Configuration */
    // Reset USB Module
    USB0_USBTRC0 |= USB_USBTRC0_USBRESET_MASK;
    while(FLAG_CHK(USB_USBTRC0_USBRESET_SHIFT,USB0_USBTRC0)) {};

    // Set BDT Base Register
    USB0_BDTPAGE1=(uint8)((uint32)tBDTtable>>8);
    USB0_BDTPAGE2=(uint8)((uint32)tBDTtable>>16);
    USB0_BDTPAGE3=(uint8)((uint32)tBDTtable>>24);

    // Clear USB Reset flag
    FLAG_SET(USB_ISTAT_USBRST_MASK,USB0_ISTAT);

    // Enable USB Reset Interrupt
    FLAG_SET(USB_INTEN_USBRSTEN_SHIFT,USB0_INTEN);

    // Enable weak pull downs
    //USB0_USBCTRL = USB_USBCTRL_PDE_MASK;
    // Disable weak pull downs
    USB0_USBCTRL &= ~(uint8)(USB_USBCTRL_PDE_MASK | USB_USBCTRL_SUSP_MASK);


    USB0_USBTRC0|=0x40;

    USB0_CTL|=0x01;

    // Pull up enable
    FLAG_SET(USB_CONTROL_DPPULLUPNONOTG_SHIFT,USB0_CONTROL);
}
Esempio n. 27
0
void usb_init(void)
{
      //printf("\n********** USB XCVR Module Testing **********\n");
      USB_REG_SET_ENABLE;
      CDC_Init();
      // Pull up enable
      FLAG_SET(USB_CONTROL_DPPULLUPNONOTG_SHIFT,USB0_CONTROL);
}
void MAX3353_ISR(void)
{
    // Clear the Interrupt pending flag
    gu8MAX3353StatusRegister=I2C_ReadRegister(MAX3353_I2C_ADDRESS,MAX3353_REG_INT_LATCH);

    // Set MAX3353 ISR flag
    FLAG_SET(_MAX3353,gu8ISR_Flags);
}
Esempio n. 29
0
void USB_EP0_Stall(void)
{
   
    FLAG_SET(USB_ENDPT_EPSTALL_SHIFT,USB0_ENDPT0);
    //ENDPT0_EP_STALL = 1;                      
    tBDTtable[bEP0OUT_ODD].Stat._byte = kUDATA0; 
    tBDTtable[bEP0OUT_ODD].Cnt = EP0_SIZE;       
}
Esempio n. 30
0
//=========================================================================
//函数名: hw_usb_isr
//功  能: 处理复位中断
//参  数: 无
//返  回: 无
//=========================================================================
void hw_usb_isr(void)
{
    // 检测USB 模块是否解析到有效的复位。
    if(FLAG_CHK(USB_ISTAT_USBRST_SHIFT,USB0_ISTAT)) 
    {
        hw_usb_reset_handler();
        return;
    }
    
    
    if(FLAG_CHK(USB_ISTAT_SOFTOK_SHIFT,USB0_ISTAT)) 
    {
        USB0_ISTAT = USB_ISTAT_SOFTOK_MASK;   
    }
    
    
    // 检测STALL
    if(FLAG_CHK(USB_ISTAT_STALL_SHIFT,USB0_ISTAT))
    {
        hw_usb_stall_handler();
    }
    
    
    // 令牌完成中断
    if(FLAG_CHK(USB_ISTAT_TOKDNE_SHIFT,USB0_ISTAT)) 
    {
        FLAG_SET(USB_CTL_ODDRST_SHIFT,USB0_CTL);
        // USB 处理函数
        hw_usb_handler();
        // 清除令牌完成中断
        FLAG_SET(USB_ISTAT_TOKDNE_SHIFT,USB0_ISTAT);
    }
    
    // SLEEP 
    if(FLAG_CHK(USB_ISTAT_SLEEP_SHIFT,USB0_ISTAT)) 
    {
        // 清除SLEEP中断
        FLAG_SET(USB_ISTAT_SLEEP_SHIFT,USB0_ISTAT);        
    }
    
    // 错误
    if(FLAG_CHK(USB_ISTAT_ERROR_SHIFT,USB0_ISTAT))
    {
        FLAG_SET(USB_ISTAT_ERROR_SHIFT,USB0_ISTAT);
    }
}