/*   14,"REC READ","+84972046096","","12/07/26,11:10:17+28"   */
char SMS_Process(char c)
{ 
	static uint32_t length = 0;
	switch(AT_cmdRecvLength)
	{
		case 0:
				if((c >= '0') && (c <= '9'))
				{
					length = c - '0';
					break;
				}
				return 0;
		case 1:
		case 2:
		case 3:
				if((c >= '0') && (c <= '9'))
				{
					length *= 10;
					length += c - '0';
					break;
				}
				else
				{
					RINGBUF_Put(&smsUnreadRingBuff,(uint8_t)(length & 0x00ff));
					RINGBUF_Put(&smsUnreadRingBuff,(uint8_t)((length >> 8) & 0x00ff));
					smsCnt++;
					smsNewMessageFlag = 1;
					return 0;
				}	
		default:
			smsNewMessageFlag = 1;
			return 0;
	}
	return 0xff;
}
/*				
				  \/
+UUSORD: 0,14
AT_cmdRecvBuff = 0,14
*/
char GPRS_GetLength(char c)
{
	static uint32_t length = 0;
	switch(AT_cmdRecvLength)
	{
		case 0:
				socketNo = RemaskSocket((c - '0'));
				if(socketNo >= SOCKET_NUM)
				{
					return 0;
				}
			break;
		case 2:
			if((c >= '0') && (c <= '9'))
				length = c - '0';
			else
				return 0;
			break;
		case 3:
			if((c >= '0') && (c <= '9'))
			{
				length *= 10;
				length += c - '0';
				RINGBUF_Put(&gprsRingLengthBuff[socketNo],(uint8_t)(length & 0x00ff));
				RINGBUF_Put(&gprsRingLengthBuff[socketNo],(uint8_t)((length >> 8) & 0x00ff));
				length = 0;
			}
			return 0;
		default:
			break;
	}
static void UART2_RxTxHandler(void)
{
	uint32_t IntStatus, byteCnt, timeout = 1000000;
	uint8_t c;
	IntStatus = UARTIntStatus(UART2_BASE, true);
	UARTIntClear(UART2_BASE, IntStatus);
	if(IntStatus & UART_INT_TX)
	{
		byteCnt = RINGBUF_GetFill(&long_Uart2_TxRingBuf);
		if (byteCnt)
		{
			RINGBUF_Get(&long_Uart2_TxRingBuf, &c);
			UARTCharPutNonBlocking(UART2_BASE, c);
			if (byteCnt == 1)
			{
				UARTIntDisable(UART2_BASE, UART_INT_TX);
			}
		}
		else
		{
			UARTIntDisable(UART2_BASE, UART_INT_TX);
		}
	}
	else if (IntStatus & (UART_INT_RX | UART_INT_RT))
	{
		while(!UARTCharsAvail(UART2_BASE) && (timeout--));
		c = UARTCharGet(UART2_BASE);
		RINGBUF_Put(&long_Uart0_RxRingBuf,c);
	}
	else
	{
		c = UARTCharGet(UART2_BASE);
	}
}
sint8 ICACHE_FLASH_ATTR
	RINGBUF_Push(RINGBUF* r,uint8* buf,uint16 length)
{
	if((r->size - r->fill_cnt) < length) return -1;

	int i;
	for(i=0;i<length;i++){
		RINGBUF_Put(r,*(buf++));
	}
}
Esempio n. 5
0
I16 PROTO_AddRb(RINGBUF *rb, const U8 *packet, I16 len)
{
    U16 i = 2;
    if(RINGBUF_Put(rb, 0x7E) == -1) return -1;
    while (len--) {
        switch (*packet) {
        case 0x7D:
        case 0x7E:
        case 0x7F:
        	if(RINGBUF_Put(rb, 0x7D) == -1) return -1;
        	if(RINGBUF_Put(rb, *packet++ ^ 0x20) == -1) return -1;
            i += 2;
            break;
        default:
        	if(RINGBUF_Put(rb, *packet++) == -1) return -1;
            i++;
            break;
        }
    }
    if(RINGBUF_Put(rb, 0x7F) == -1) return -1;

    return i;
}
void Long_Uart2_PutChar(char c)
{
	uint32_t byteCnt;
	byteCnt = RINGBUF_GetFill(&long_Uart2_TxRingBuf);
	if (byteCnt)
	{
		RINGBUF_Put(&long_Uart2_TxRingBuf, c);
	}
	else
	{
		UARTCharPutNonBlocking(UART2_BASE, c);
		UARTIntEnable(UART2_BASE, UART_INT_TX);
	}
}
/**
  * @brief Camera UART Handler
  * @param         
  * @param
  * @retval
  */
void UART_CAM_Handler(void)
{
    uint8_t data;
	
	/* USART Receive Interrupt */
	if (USART_GetITStatus(CAM_COMM, USART_IT_RXNE) != RESET)
	{
		// Read one byte from the receive data register
		data = USART_ReceiveData(CAM_COMM);
        //u_send(SIM_COMM, data);
        
        RINGBUF_Put(&uartCAM_RxRingBuff, data);
        
        // CAM Input
        CAM_Input(data);
	}
}
Esempio n. 8
0
void SIM_UART_Handler(void)
{
	uint8_t data;
	
	/* USART Receive Interrupt */
	if (USART_GetITStatus(SIM_COMM, USART_IT_RXNE) != RESET)
	{
		// Read one byte from the receive data register
		data = USART_ReceiveData(SIM_COMM);
        //u_send(SIM_COMM, data);
        
        RINGBUF_Put(&UART1_RxRingBuff, data);
        
        // AT Command parser
        AT_ComnandParser(data);
	}
}
Esempio n. 9
0
void ICACHE_FLASH_ATTR
CMD_Input(uint8_t data)
{
	RINGBUF_Put(&rxRb, data);
	system_os_post(CMD_TASK_PRIO, 0, 0);
}