Пример #1
0
static void lua_usr_usart_thread(void *data)
{
  uint16_t len=0,index=0;
  uint32_t lastTick=0;

  while(1)
  {
    if((len=MicoUartGetLengthInBuffer(LUA_USR_UART))==0) 
    {
      if(index>0 && mico_get_time() - lastTick>=100) goto doUartData;
      mico_thread_msleep(10);
      continue;
    }
    if(index ==0) lastTick =  mico_get_time();
    if(index+len>=USR_UART_LENGTH) len = USR_UART_LENGTH - index;
    MicoUartRecv(LUA_USR_UART, pinbuf+index, len, 10);
    index = index+len;pinbuf[index]=0x00;
doUartData:
    if(index>=USR_UART_LENGTH || mico_get_time() - lastTick>=100)
    {
      index = 0;
      if(usr_uart_cb_ref == LUA_NOREF) continue;
      lua_rawgeti(gL, LUA_REGISTRYINDEX, usr_uart_cb_ref);
      lua_pushstring(gL,(char const*)pinbuf);
      lua_call(gL, 1, 0);
    }
  }  
  //mico_rtos_delete_thread(NULL);
}
Пример #2
0
uint32_t user_uartRecv(unsigned char *outBuf, unsigned int getLen)
{
    unsigned int data_len = 0;

    if( (NULL == outBuf) || (0 == getLen) )
    {
        user_uart_log("ERROR: user_uartRecv input params error!");
        return 0;
    }

    if( MicoUartRecv( USER_UART, outBuf, getLen, USER_UART_RECV_TIMEOUT) == kNoErr)
    {
        data_len = getLen;
    }
    else
    {
        data_len = MicoUartGetLengthInBuffer( USER_UART );
        if(data_len)
        {
            MicoUartRecv(USER_UART, outBuf, data_len, USER_UART_RECV_TIMEOUT);
        }
        else
        {
            data_len = 0;
        }
    }

    return data_len;
}
Пример #3
0
static size_t _uart_get_one_packet(uint8_t* inBuf, int inBufLen)
{
  
  int datalen;
  
  while(1) {
    if( MicoUartRecv( UART_FOR_APP, inBuf, inBufLen, 500) == kNoErr){
      return inBufLen;
    }
    else{
      datalen = MicoUartGetLengthInBuffer( UART_FOR_APP );
      if(datalen){
        MicoUartRecv(UART_FOR_APP, inBuf, datalen, 500);
        return datalen;
      }
    }
    
  }
}
Пример #4
0
/* Packet format: BB 00 CMD(2B) Status(2B) datalen(2B) data(x) checksum(2B)
* copy to buf, return len = datalen+10
*/
size_t _uart_get_one_packet(uint8_t* inBuf, int inBufLen)
{
  dev_if_log_trace();

  int datalen;
  
  while(1) {
    if( MicoUartRecv( UART_FOR_MCU, inBuf, inBufLen, UART_RECV_TIMEOUT) == kNoErr){
      return inBufLen;
    }
   else{
     datalen = MicoUartGetLengthInBuffer( UART_FOR_MCU );
     if(datalen){
       MicoUartRecv(UART_FOR_MCU, inBuf, datalen, UART_RECV_TIMEOUT);
       return datalen;
     }
   }  
  } 
}