Exemplo n.º 1
0
int uart1_send(u8_t *buff,u32_t size)
{
	int ret;
	if((size == 0) || (buff == 0))
		return -1;
	p_dbg("uart1 send start\n");
	clear_wait_event(u1_send.wait);
	OSSemSet((OS_EVENT*)u1_send.wait, 0, (INT8U*)&ret);
	u1_send.cnt = size;
 	DMA_TxConfiguration((uint32_t*)buff, size);
	
again:
	ret = wait_event_timeout(u1_send.wait, 2000);
	if(ret != 0)
		goto again;
	
	p_dbg("uart1 send end\n");

	if(u1_send.cnt)
		p_err("uart1_send err:%d,%d,%d\n",ret,u1_send.cnt,size);
	else
		p_dbg("uart1 send a  pkg:%d\n", size);
	
	return 0;
}
Exemplo n.º 2
0
void switch_audio_mode()
{
	if(!audio_cfg.audio_dev_open)
	{
		p_dbg("请先打开音频");
		return;
	}
	audio_cfg.play_mp3 = !audio_cfg.play_mp3;
	if(audio_cfg.play_mp3){

		p_dbg("mp3播放模式");
#if ENABLE_MP3
		if(!mp3_format.init)
		{
			if(init_mp3_format())
				p_err("init_mp3_format err\n");
		}
		reset_mp3_stat();
#endif
	}else{
		p_dbg("pcm播放模式(语音对讲)");
#if ENABLE_MP3
		deinit_mp3_format();
#endif
	}
}
Exemplo n.º 3
0
Arquivo: skbuff.c Projeto: foxwolf/yjd
/*
static void __skb_trim(struct sk_buff *skb, unsigned int len)
{
	if (unlikely(skb_is_nonlinear(skb)))
	{
		WARN_ON(1);
		return ;
	} skb->len = len;
	skb_set_tail_pointer(skb, len);
}

extern void skb_trim(struct sk_buff *skb, unsigned int len);

static int __pskb_trim(struct sk_buff *skb, unsigned int len)
{
	if (skb->data_len)
		return ___pskb_trim(skb, len);
	__skb_trim(skb, len);
	return 0;
} 

static int pskb_trim(struct sk_buff *skb, unsigned int len)
{
	return (len < skb->len) ? __pskb_trim(skb, len): 0;
} 
*/
struct sk_buff *__dev_alloc_skb(unsigned int length, gfp_t gfp_mask)
{
	struct sk_buff *skb = alloc_skb(length + NET_SKB_PAD, gfp_mask);
	if (likely(skb))
		skb_reserve(skb, NET_SKB_PAD);
	
#ifdef DEBUG
	if(length  + NET_SKB_PAD == 112)
		p_dbg("alloc:%x, %x", skb, skb->head);
	//else
	p_dbg("alloc1:%d,%x, %x", length + NET_SKB_PAD, skb, skb->head);
#endif
	return skb;
} 
Exemplo n.º 4
0
void DMA2_Stream7_IRQHandler()  //发送中断
{	
	uint32_t irq_flag;
	enter_interrupt();

	DMA_Cmd(DMA2_Stream7, DISABLE);
	NVIC_DisableIRQ(DMA2_Stream7_IRQn);
	irq_flag = local_irq_save(); 

	if(DMA_GetFlagStatus(DMA2_Stream7, DMA_FLAG_TEIF7))
	{
		
		p_err("uart dma err");
	}

	DMA_ITConfig(DMA2_Stream7, DMA_IT_TC | DMA_IT_TE | DMA_IT_HT,DISABLE);
	DMA_ClearFlag(DMA2_Stream7, DMA_FLAG_TCIF7 | DMA_FLAG_TEIF7 | DMA_FLAG_HTIF7 | DMA_FLAG_DMEIF7 | DMA_FLAG_HTIF7);
   
	u1_send.cnt = DMA2_Stream7->NDTR;   //取剩余字数,应该为0
	local_irq_restore(irq_flag);
	USART_DMACmd(USART1, USART_DMAReq_Tx, DISABLE);
	p_dbg("u_send irq\n");
	wake_up(u1_send.wait);   //唤醒等待线程
	
	exit_interrupt(1);
}
Exemplo n.º 5
0
Arquivo: timer.c Projeto: foxwolf/yjd
timer_t *timer_setup(int time_val, int type, timer_callback_func callback, void *callback_arg)
{
	INT8U perr;
	OS_TMR *tmr;

	if (time_val < 100)
		time_val = 100;

	time_val = time_val * OS_TMR_CFG_TICKS_PER_SEC / 1000;

	if ((callback == 0))
	{
		p_err("setup_timer err arg\n");
		return 0;
	}
	if (type)
	//== 1 repeat
	{
		p_dbg("repeat:%d\n", time_val);
		tmr = OSTmrCreate(time_val, time_val, OS_TMR_OPT_PERIODIC, (OS_TMR_CALLBACK)callback, callback_arg, "", &perr);
	}
	else
	{
		p_dbg("one short:%d\n", time_val);
		tmr = OSTmrCreate(time_val, time_val, OS_TMR_OPT_ONE_SHOT, (OS_TMR_CALLBACK)callback, callback_arg, "", &perr);
	}

	if (perr != OS_ERR_NONE)
	{
		tmr = 0;
		p_err("setup_timer err\n");
	}
	tmr->priv = mem_malloc(sizeof(struct work_struct));
	if(!tmr->priv){
		OSTmrDel(tmr, &perr);
		return 0;
	}
	init_work(tmr->priv, callback, callback_arg);
	
	return (timer_t*)tmr;
}