コード例 #1
0
static int bt_server_spp_read(void* data)
{
	
	  VMINT ret = 0;
	  VMINT i = 0;
    if(g_serverContext.conn_id < 0)
    {
        //not connected yet

        APP_LOG((char*)"[BTC]bt_server_spp_read : not connected yet");

        return true;
    }
    char *readdata = new char[LBT_SERIAL_BUFFER_SIZE];
    if(readdata == NULL)
  	{
  		APP_LOG((char*)"[BTC]bt_server_spp_read : allocate memory fail");
  		return false;
  	}
    ret = vm_btspp_read(g_serverContext.conn_id, (void*)readdata, LBT_SERIAL_BUFFER_SIZE);

    APP_LOG("[BTC]bt_server_spp_read, ret: %d", ret);

    if (ret < 0)
    {
       APP_LOG((char*)"[BTC]bt_server_spp_read : read data fail");

    }
    else 
    {

    	  if(server_mutex.guard == 0)
    	  {
    	      vm_mutex_create(&server_mutex);
    	  }
    	  vm_mutex_lock(&server_mutex);
        for(i=0;i<ret;i++)
        {
        	LBTServer._rx_buffer->store_char(readdata[i]);
        }
        vm_mutex_unlock(&server_mutex);

        APP_LOG((char*)"[BTC]btServerRead : read data success");
    }
    delete[] readdata;
	return ret;
}
コード例 #2
0
int LBTServerClass::read(void)
{

  if(_rx_buffer->_iHead == _rx_buffer->_iTail)
  {
  	return -1;
  }
	if(server_mutex.guard == 0)
	{
		vm_mutex_create(&server_mutex);
	}	
 	vm_mutex_lock(&server_mutex); 
  uint8_t uc = _rx_buffer->_aucBuffer[_rx_buffer->_iTail];
  _rx_buffer->_iTail = (unsigned int)(_rx_buffer->_iTail + 1) % LBT_SERIAL_BUFFER_SIZE;
  vm_mutex_unlock(&server_mutex);
  return uc;
  
}