aboutsummaryrefslogtreecommitdiff
path: root/host/libs/audio_connector/server.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'host/libs/audio_connector/server.cpp')
-rw-r--r--host/libs/audio_connector/server.cpp41
1 files changed, 17 insertions, 24 deletions
diff --git a/host/libs/audio_connector/server.cpp b/host/libs/audio_connector/server.cpp
index ab74daa02..f98621c3b 100644
--- a/host/libs/audio_connector/server.cpp
+++ b/host/libs/audio_connector/server.cpp
@@ -55,6 +55,13 @@ ScopedMMap AllocateShm(size_t size, const std::string& name, SharedFD* shm_fd) {
return mmap_res;
}
+volatile uint8_t* BufferAt(ScopedMMap& shm, size_t offset, size_t len) {
+ CHECK(shm.WithinBounds(offset, len))
+ << "Tx buffer bounds outside the buffer area: " << offset << " " << len;
+ void* ptr = shm.get();
+ return &reinterpret_cast<volatile uint8_t*>(ptr)[offset];
+}
+
bool CreateSocketPair(SharedFD* local, SharedFD* remote) {
auto ret = SharedFD::SocketPair(AF_UNIX, SOCK_SEQPACKET, 0, local, remote);
if (!ret) {
@@ -301,10 +308,11 @@ bool AudioClientConnection::ReceivePlayback(AudioServerExecutor& executor) {
LOG(ERROR) << "Received PCM_XFER message is too small: " << recv_size;
return false;
}
- TxBuffer buffer(msg_hdr->io_xfer,
- TxBufferAt(msg_hdr->buffer_offset, msg_hdr->buffer_len),
- msg_hdr->buffer_len,
- SendStatusCallback(msg_hdr->buffer_offset, tx_socket_));
+ TxBuffer buffer(
+ msg_hdr->io_xfer,
+ BufferAt(tx_shm_, msg_hdr->buffer_offset, msg_hdr->buffer_len),
+ msg_hdr->buffer_len,
+ SendStatusCallback(msg_hdr->buffer_offset, tx_socket_));
executor.OnPlaybackBuffer(std::move(buffer));
return true;
}
@@ -320,10 +328,11 @@ bool AudioClientConnection::ReceiveCapture(AudioServerExecutor& executor) {
LOG(ERROR) << "Received PCM_XFER message is too small: " << recv_size;
return false;
}
- RxBuffer buffer(msg_hdr->io_xfer,
- RxBufferAt(msg_hdr->buffer_offset, msg_hdr->buffer_len),
- msg_hdr->buffer_len,
- SendStatusCallback(msg_hdr->buffer_offset, rx_socket_));
+ RxBuffer buffer(
+ msg_hdr->io_xfer,
+ BufferAt(rx_shm_, msg_hdr->buffer_offset, msg_hdr->buffer_len),
+ msg_hdr->buffer_len,
+ SendStatusCallback(msg_hdr->buffer_offset, rx_socket_));
executor.OnCaptureBuffer(std::move(buffer));
return true;
}
@@ -347,22 +356,6 @@ bool AudioClientConnection::CmdReply(AudioStatus status, const void* data,
return true;
}
-const volatile uint8_t* AudioClientConnection::TxBufferAt(size_t offset,
- size_t len) const {
- CHECK(tx_shm_.WithinBounds(offset, len))
- << "Tx buffer bounds outside the buffer area: " << offset << " " << len;
- const void* ptr = tx_shm_.get();
- return &reinterpret_cast<const volatile uint8_t*>(ptr)[offset];
-}
-
-volatile uint8_t* AudioClientConnection::RxBufferAt(size_t offset,
- size_t len) {
- CHECK(rx_shm_.WithinBounds(offset, len))
- << "Rx buffer bounds outside the buffer area: " << offset << " " << len;
- void* ptr = rx_shm_.get();
- return &reinterpret_cast<volatile uint8_t*>(ptr)[offset];
-}
-
bool AudioClientConnection::SendEvent(/*TODO*/) { return false; }
ssize_t AudioClientConnection::ReceiveMsg(SharedFD socket, void* buffer,