/* 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++)); } }
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); } }
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); } }
void ICACHE_FLASH_ATTR CMD_Input(uint8_t data) { RINGBUF_Put(&rxRb, data); system_os_post(CMD_TASK_PRIO, 0, 0); }