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; }
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; }