diff --git a/inc/luos.h b/inc/luos.h index f957f0908..252044a28 100644 --- a/inc/luos.h +++ b/inc/luos.h @@ -56,6 +56,7 @@ error_return_t Luos_ReadFromService(service_t *service, int16_t id, msg_t **retu void Luos_SendData(service_t *service, msg_t *msg, void *bin_data, uint16_t size); error_return_t Luos_ReceiveData(service_t *service, msg_t *msg, void *bin_data); void Luos_SendStreaming(service_t *service, msg_t *msg, streaming_channel_t *stream); +void Luos_SendStreamingSize(service_t *service, msg_t *msg, streaming_channel_t *stream, uint32_t max_size); error_return_t Luos_ReceiveStreaming(service_t *service, msg_t *msg, streaming_channel_t *stream); void Luos_SendBaudrate(service_t *service, uint32_t baudrate); void Luos_SetExternId(service_t *service, target_mode_t target_mode, uint16_t target, uint16_t newid); diff --git a/src/luos.c b/src/luos.c index 6535088b0..c4941d9c0 100644 --- a/src/luos.c +++ b/src/luos.c @@ -809,8 +809,25 @@ error_return_t Luos_ReceiveData(service_t *service, msg_t *msg, void *bin_data) void Luos_SendStreaming(service_t *service, msg_t *msg, streaming_channel_t *stream) { // Compute number of message needed to send available datas on ring buffer - int msg_number = 1; - int data_size = Stream_GetAvailableSampleNB(stream); + Luos_SendStreamingSize(service, msg, stream, Stream_GetAvailableSampleNB(stream)); +} +/****************************************************************************** + * @brief Send a number of datas of a streaming channel + * @param Service who send + * @param Message to send + * @param streaming channel pointer + * @param max_size maximum sample to send + * @return None + ******************************************************************************/ +void Luos_SendStreamingSize(service_t *service, msg_t *msg, streaming_channel_t *stream, uint32_t max_size) +{ + // Compute number of message needed to send available datas on ring buffer + int msg_number = 1; + int data_size = Stream_GetAvailableSampleNB(stream); + if (data_size > max_size) + { + data_size = max_size; + } const int max_data_msg_size = (MAX_DATA_MSG_SIZE / stream->data_size); if (data_size > max_data_msg_size) {