Compare commits

...

8 Commits

Author SHA1 Message Date
Clipping 2858d33101
Merge df72ddbf97 into 6141d27841 2026-07-09 20:20:13 +00:00
EugenioCollado 6141d27841
Merge pull request #415
Handle reliable stream send failures
2026-07-07 08:33:37 +02:00
EugenioCollado 7e430da400
Merge pull request #417
Use raw regex string in memory map analysis
2026-07-06 08:16:42 +02:00
EugenioCollado 8360d2cd0c
Merge pull request #416
cmake: update standalone example minimum version
2026-07-06 08:16:01 +02:00
aineoae86-sys bd9b696331 Use raw regex string in memory map analysis
Prefix the memory map regex with r so newer Python versions do not emit invalid escape sequence SyntaxWarnings while keeping the pattern unchanged.

Generated-by: OpenAI Codex
Signed-off-by: aineoae86-sys <ai.neo.ae86@gmail.com>
2026-07-06 00:28:02 +08:00
aineoae86-sys 608dbac01c cmake: update standalone example minimum version
Generated-by: OpenAI Codex
Signed-off-by: aineoae86-sys <ai.neo.ae86@gmail.com>
2026-07-05 21:09:28 +08:00
aineoae86-sys ebaf8914ec Fix reliable stream send failure handling
Generated-by: OpenAI Codex
Signed-off-by: aineoae86-sys <ai.neo.ae86@gmail.com>
2026-07-05 20:11:31 +08:00
LiPing07 df72ddbf97 fix microcontroller no real bool type issue
Signed-off-by: clipping <clippinglp@qq.com>
2024-06-03 11:10:08 +08:00
32 changed files with 112 additions and 61 deletions

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5.0)
if (${CMAKE_VERSION} VERSION_GREATER 3.0)
cmake_policy(SET CMP0048 NEW)
endif()

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5.0)
if (${CMAKE_VERSION} VERSION_GREATER 3.0)
cmake_policy(SET CMP0048 NEW)
endif()

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5.0)
if (${CMAKE_VERSION} VERSION_GREATER 3.0)
cmake_policy(SET CMP0048 NEW)
endif()

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5.0)
if (${CMAKE_VERSION} VERSION_GREATER 3.0)
cmake_policy(SET CMP0048 NEW)
endif()

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5.0)
if (${CMAKE_VERSION} VERSION_GREATER 3.0)
cmake_policy(SET CMP0048 NEW)
endif()

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5.0)
if (${CMAKE_VERSION} VERSION_GREATER 3.0)
cmake_policy(SET CMP0048 NEW)
endif()

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5.0)
if (${CMAKE_VERSION} VERSION_GREATER 3.0)
cmake_policy(SET CMP0048 NEW)
endif()

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5.0)
if (${CMAKE_VERSION} VERSION_GREATER 3.0)
cmake_policy(SET CMP0048 NEW)
endif()

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5.0)
if (${CMAKE_VERSION} VERSION_GREATER 3.0)
cmake_policy(SET CMP0048 NEW)
endif()

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5.0)
if (${CMAKE_VERSION} VERSION_GREATER 3.0)
cmake_policy(SET CMP0048 NEW)
endif()

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5.0)
if (${CMAKE_VERSION} VERSION_GREATER 3.0)
cmake_policy(SET CMP0048 NEW)
endif()

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5.0)
if (${CMAKE_VERSION} VERSION_GREATER 3.0)
cmake_policy(SET CMP0048 NEW)
endif()

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5.0)
if (${CMAKE_VERSION} VERSION_GREATER 3.0)
cmake_policy(SET CMP0048 NEW)
endif()

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5.0)
if (${CMAKE_VERSION} VERSION_GREATER 3.0)
cmake_policy(SET CMP0048 NEW)
endif()

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5.0)
if (${CMAKE_VERSION} VERSION_GREATER 3.0)
cmake_policy(SET CMP0048 NEW)
endif()

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5.0)
if (${CMAKE_VERSION} VERSION_GREATER 3.0)
cmake_policy(SET CMP0048 NEW)
endif()

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5.0)
if (${CMAKE_VERSION} VERSION_GREATER 3.0)
cmake_policy(SET CMP0048 NEW)
endif()

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5.0)
if (${CMAKE_VERSION} VERSION_GREATER 3.0)
cmake_policy(SET CMP0048 NEW)
endif()

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5.0)
if (${CMAKE_VERSION} VERSION_GREATER 3.0)
cmake_policy(SET CMP0048 NEW)
endif()

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5.0)
if (${CMAKE_VERSION} VERSION_GREATER 3.0)
cmake_policy(SET CMP0048 NEW)
endif()

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5.0)
if (${CMAKE_VERSION} VERSION_GREATER 3.0)
cmake_policy(SET CMP0048 NEW)
endif()

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5.0)
if (${CMAKE_VERSION} VERSION_GREATER 3.0)
cmake_policy(SET CMP0048 NEW)
endif()

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5.0)
if (${CMAKE_VERSION} VERSION_GREATER 3.0)
cmake_policy(SET CMP0048 NEW)
endif()

View File

@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
cmake_minimum_required(VERSION 2.8.12)
cmake_minimum_required(VERSION 3.5.0)
if (${CMAKE_VERSION} VERSION_GREATER 3.0)
cmake_policy(SET CMP0048 NEW)
endif()

View File

@ -409,7 +409,7 @@ bool uxr_serialize_CLIENT_Representation(
ret &= uxr_serialize_XrceVendorId(buffer, &input->xrce_vendor_id);
ret &= uxr_serialize_ClientKey(buffer, &input->client_key);
ret &= ucdr_serialize_uint8_t(buffer, input->session_id);
ret &= ucdr_serialize_bool(buffer, input->optional_properties);
ret &= ucdr_serialize_bool(buffer, (input->optional_properties)? 0x01 : 0x00);
if (input->optional_properties == true)
{
ret &= uxr_serialize_PropertySeq(buffer, &input->properties);
@ -447,7 +447,7 @@ bool uxr_serialize_AGENT_Representation(
ret &= uxr_serialize_XrceCookie(buffer, &input->xrce_cookie);
ret &= uxr_serialize_XrceVersion(buffer, &input->xrce_version);
ret &= uxr_serialize_XrceVendorId(buffer, &input->xrce_vendor_id);
ret &= ucdr_serialize_bool(buffer, input->optional_properties);
ret &= ucdr_serialize_bool(buffer, (input->optional_properties)? 0x01 : 0x00);
if (input->optional_properties == true)
{
ret &= uxr_serialize_PropertySeq(buffer, &input->properties);
@ -909,13 +909,13 @@ bool uxr_serialize_OBJK_DomainParticipant_Binary(
const OBJK_DomainParticipant_Binary* input)
{
bool ret = true;
ret &= ucdr_serialize_bool(buffer, input->optional_domain_reference);
ret &= ucdr_serialize_bool(buffer, (input->optional_domain_reference)? 0x01 : 0x00);
if (input->optional_domain_reference == true)
{
ret &= ucdr_serialize_string(buffer, input->domain_reference);
}
ret &= ucdr_serialize_bool(buffer, input->optional_qos_profile_reference);
ret &= ucdr_serialize_bool(buffer, (input->optional_qos_profile_reference)? 0x01 : 0x00);
if (input->optional_qos_profile_reference == true)
{
ret &= ucdr_serialize_string(buffer, input->qos_profile_reference);
@ -950,13 +950,13 @@ bool uxr_serialize_OBJK_Topic_Binary(
{
bool ret = true;
ret &= ucdr_serialize_string(buffer, input->topic_name);
ret &= ucdr_serialize_bool(buffer, input->optional_type_reference);
ret &= ucdr_serialize_bool(buffer, (input->optional_type_reference)? 0x01 : 0x00);
if (input->optional_type_reference == true)
{
ret &= ucdr_serialize_string(buffer, input->type_reference);
}
ret &= ucdr_serialize_bool(buffer, input->optional_type_name);
ret &= ucdr_serialize_bool(buffer, (input->optional_type_name)? 0x01 : 0x00);
if (input->optional_type_name == true)
{
ret &= ucdr_serialize_string(buffer, input->type_name);
@ -991,13 +991,13 @@ bool uxr_serialize_OBJK_Publisher_Binary_Qos(
const OBJK_Publisher_Binary_Qos* input)
{
bool ret = true;
ret &= ucdr_serialize_bool(buffer, input->optional_partitions);
ret &= ucdr_serialize_bool(buffer, (input->optional_partitions)? 0x01 : 0x00);
if (input->optional_partitions == true)
{
ret &= uxr_serialize_StringSequence_t(buffer, &input->partitions);
}
ret &= ucdr_serialize_bool(buffer, input->optional_group_data);
ret &= ucdr_serialize_bool(buffer, (input->optional_group_data)? 0x01 : 0x00);
if (input->optional_group_data == true)
{
ret &= uxr_serialize_BinarySequence_t(buffer, &input->group_data);
@ -1031,13 +1031,13 @@ bool uxr_serialize_OBJK_Publisher_Binary(
const OBJK_Publisher_Binary* input)
{
bool ret = true;
ret &= ucdr_serialize_bool(buffer, input->optional_publisher_name);
ret &= ucdr_serialize_bool(buffer, (input->optional_publisher_name)? 0x01 : 0x00);
if (input->optional_publisher_name == true)
{
ret &= ucdr_serialize_string(buffer, input->publisher_name);
}
ret &= ucdr_serialize_bool(buffer, input->optional_qos);
ret &= ucdr_serialize_bool(buffer, (input->optional_qos)? 0x01 : 0x00);
if (input->optional_qos == true)
{
ret &= uxr_serialize_OBJK_Publisher_Binary_Qos(buffer, &input->qos);
@ -1071,13 +1071,13 @@ bool uxr_serialize_OBJK_Subscriber_Binary_Qos(
const OBJK_Subscriber_Binary_Qos* input)
{
bool ret = true;
ret &= ucdr_serialize_bool(buffer, input->optional_partitions);
ret &= ucdr_serialize_bool(buffer, (input->optional_partitions)? 0x01 : 0x00);
if (input->optional_partitions == true)
{
ret &= uxr_serialize_StringSequence_t(buffer, &input->partitions);
}
ret &= ucdr_serialize_bool(buffer, input->optional_group_data);
ret &= ucdr_serialize_bool(buffer, (input->optional_group_data)? 0x01 : 0x00);
if (input->optional_group_data == true)
{
ret &= uxr_serialize_BinarySequence_t(buffer, &input->group_data);
@ -1111,13 +1111,13 @@ bool uxr_serialize_OBJK_Subscriber_Binary(
const OBJK_Subscriber_Binary* input)
{
bool ret = true;
ret &= ucdr_serialize_bool(buffer, input->optional_subscriber_name);
ret &= ucdr_serialize_bool(buffer, (input->optional_subscriber_name)? 0x01 : 0x00);
if (input->optional_subscriber_name == true)
{
ret &= ucdr_serialize_string(buffer, input->subscriber_name);
}
ret &= ucdr_serialize_bool(buffer, input->optional_qos);
ret &= ucdr_serialize_bool(buffer, (input->optional_qos)? 0x01 : 0x00);
if (input->optional_qos == true)
{
ret &= uxr_serialize_OBJK_Subscriber_Binary_Qos(buffer, &input->qos);
@ -1152,25 +1152,25 @@ bool uxr_serialize_OBJK_Endpoint_QosBinary(
{
bool ret = true;
ret &= ucdr_serialize_uint16_t(buffer, input->qos_flags);
ret &= ucdr_serialize_bool(buffer, input->optional_history_depth);
ret &= ucdr_serialize_bool(buffer, (input->optional_history_depth)? 0x01 : 0x00);
if (input->optional_history_depth == true)
{
ret &= ucdr_serialize_uint16_t(buffer, input->history_depth);
}
ret &= ucdr_serialize_bool(buffer, input->optional_deadline_msec);
ret &= ucdr_serialize_bool(buffer, (input->optional_deadline_msec)? 0x01 : 0x00);
if (input->optional_deadline_msec == true)
{
ret &= ucdr_serialize_uint32_t(buffer, input->deadline_msec);
}
ret &= ucdr_serialize_bool(buffer, input->optional_lifespan_msec);
ret &= ucdr_serialize_bool(buffer, (input->optional_lifespan_msec)? 0x01 : 0x00);
if (input->optional_lifespan_msec == true)
{
ret &= ucdr_serialize_uint32_t(buffer, input->lifespan_msec);
}
ret &= ucdr_serialize_bool(buffer, input->optional_user_data);
ret &= ucdr_serialize_bool(buffer, (input->optional_user_data)? 0x01 : 0x00);
if (input->optional_user_data == true)
{
ret &= uxr_serialize_BinarySequence_t(buffer, (BinarySequence_t*) &input->user_data);
@ -1218,7 +1218,7 @@ bool uxr_serialize_OBJK_DataWriter_Binary_Qos(
{
bool ret = true;
ret &= uxr_serialize_OBJK_Endpoint_QosBinary(buffer, &input->base);
ret &= ucdr_serialize_bool(buffer, input->optional_ownership_strength);
ret &= ucdr_serialize_bool(buffer, (input->optional_ownership_strength)? 0x01 : 0x00);
if (input->optional_ownership_strength == true)
{
ret &= ucdr_serialize_uint64_t(buffer, input->ownership_strength);
@ -1248,13 +1248,13 @@ bool uxr_serialize_OBJK_DataReader_Binary_Qos(
{
bool ret = true;
ret &= uxr_serialize_OBJK_Endpoint_QosBinary(buffer, &input->base);
ret &= ucdr_serialize_bool(buffer, input->optional_timebasedfilter_msec);
ret &= ucdr_serialize_bool(buffer, (input->optional_timebasedfilter_msec)? 0x01 : 0x00);
if (input->optional_timebasedfilter_msec == true)
{
ret &= ucdr_serialize_uint64_t(buffer, input->timebasedfilter_msec);
}
ret &= ucdr_serialize_bool(buffer, input->optional_contentbased_filter);
ret &= ucdr_serialize_bool(buffer, (input->optional_contentbased_filter)? 0x01 : 0x00);
if (input->optional_contentbased_filter == true)
{
ret &= ucdr_serialize_string(buffer, input->contentbased_filter);
@ -1290,7 +1290,7 @@ bool uxr_serialize_OBJK_DataReader_Binary(
{
bool ret = true;
ret &= uxr_serialize_ObjectId(buffer, &input->topic_id);
ret &= ucdr_serialize_bool(buffer, input->optional_qos);
ret &= ucdr_serialize_bool(buffer, (input->optional_qos)? 0x01 : 0x00);
if (input->optional_qos == true)
{
ret &= uxr_serialize_OBJK_DataReader_Binary_Qos(buffer, &input->qos);
@ -1320,7 +1320,7 @@ bool uxr_serialize_OBJK_DataWriter_Binary(
{
bool ret = true;
ret &= uxr_serialize_ObjectId(buffer, &input->topic_id);
ret &= ucdr_serialize_bool(buffer, input->optional_qos);
ret &= ucdr_serialize_bool(buffer, (input->optional_qos)? 0x01 : 0x00);
if (input->optional_qos == true)
{
ret &= uxr_serialize_OBJK_DataWriter_Binary_Qos(buffer, &input->qos);
@ -1352,12 +1352,12 @@ bool uxr_serialize_OBJK_Requester_Binary(
ret &= ucdr_serialize_string(buffer, input->service_name);
ret &= ucdr_serialize_string(buffer, input->request_type);
ret &= ucdr_serialize_string(buffer, input->reply_type);
ret &= ucdr_serialize_bool(buffer, input->optional_request_topic_name);
ret &= ucdr_serialize_bool(buffer, (input->optional_request_topic_name)? 0x01 : 0x00);
if (input->optional_request_topic_name == true)
{
ret &= ucdr_serialize_string(buffer, input->request_topic_name);
}
ret &= ucdr_serialize_bool(buffer, input->optional_reply_topic_name);
ret &= ucdr_serialize_bool(buffer, (input->optional_reply_topic_name)? 0x01 : 0x00);
if (input->optional_reply_topic_name == true)
{
ret &= ucdr_serialize_string(buffer, input->reply_topic_name);
@ -1396,12 +1396,12 @@ bool uxr_serialize_OBJK_Replier_Binary(
ret &= ucdr_serialize_string(buffer, input->service_name);
ret &= ucdr_serialize_string(buffer, input->request_type);
ret &= ucdr_serialize_string(buffer, input->reply_type);
ret &= ucdr_serialize_bool(buffer, input->optional_request_topic_name);
ret &= ucdr_serialize_bool(buffer, (input->optional_request_topic_name)? 0x01 : 0x00);
if (input->optional_request_topic_name == true)
{
ret &= ucdr_serialize_string(buffer, input->request_topic_name);
}
ret &= ucdr_serialize_bool(buffer, input->optional_reply_topic_name);
ret &= ucdr_serialize_bool(buffer, (input->optional_reply_topic_name)? 0x01 : 0x00);
if (input->optional_reply_topic_name == true)
{
ret &= ucdr_serialize_string(buffer, input->reply_topic_name);
@ -1549,8 +1549,8 @@ bool uxr_serialize_CreationMode(
const CreationMode* input)
{
bool ret = true;
ret &= ucdr_serialize_bool(buffer, input->reuse);
ret &= ucdr_serialize_bool(buffer, input->replace);
ret &= ucdr_serialize_bool(buffer, (input->reuse)? 0x01 : 0x00);
ret &= ucdr_serialize_bool(buffer, (input->replace)? 0x01 : 0x00);
return ret;
}
@ -1737,13 +1737,13 @@ bool uxr_serialize_ObjectInfo(
const ObjectInfo* input)
{
bool ret = true;
ret &= ucdr_serialize_bool(buffer, input->optional_config);
ret &= ucdr_serialize_bool(buffer, (input->optional_config)? 0x01 : 0x00);
if (input->optional_config == true)
{
ret &= uxr_serialize_ObjectVariant(buffer, &input->config);
}
ret &= ucdr_serialize_bool(buffer, input->optional_activity);
ret &= ucdr_serialize_bool(buffer, (input->optional_activity)? 0x01 : 0x00);
if (input->optional_activity == true)
{
ret &= uxr_serialize_ActivityInfoVariant(buffer, &input->activity);
@ -1823,13 +1823,13 @@ bool uxr_serialize_ReadSpecification(
bool ret = true;
ret &= ucdr_serialize_uint8_t(buffer, input->preferred_stream_id);
ret &= ucdr_serialize_uint8_t(buffer, input->data_format);
ret &= ucdr_serialize_bool(buffer, input->optional_content_filter_expression);
ret &= ucdr_serialize_bool(buffer, (input->optional_content_filter_expression)? 0x01 : 0x00);
if (input->optional_content_filter_expression == true)
{
ret &= ucdr_serialize_string(buffer, input->content_filter_expression);
}
ret &= ucdr_serialize_bool(buffer, input->optional_delivery_control);
ret &= ucdr_serialize_bool(buffer, (input->optional_delivery_control)? 0x01 : 0x00);
if (input->optional_delivery_control == true)
{
ret &= uxr_serialize_DataDeliveryControl(buffer, &input->delivery_control);

View File

@ -629,7 +629,11 @@ void uxr_flash_output_streams(
while (uxr_prepare_next_reliable_buffer_to_send(stream, &buffer, &length, &seq_num))
{
uxr_stamp_session_header(&session->info, id.raw, seq_num, buffer);
send_message(session, buffer, length);
if (!send_message(session, buffer, length))
{
uxr_cancel_reliable_buffer_to_send(stream, seq_num);
break;
}
}
UXR_UNLOCK_STREAM_ID(session, id);

View File

@ -192,6 +192,19 @@ bool uxr_prepare_next_reliable_buffer_to_send(
return data_to_send;
}
void uxr_cancel_reliable_buffer_to_send(
uxrOutputReliableStream* stream,
uxrSeqNum seq_num)
{
uxrSeqNum next_seq_num = uxr_seq_num_add(seq_num, 1);
stream->last_sent = uxr_seq_num_sub(seq_num, 1);
if (stream->last_written == next_seq_num &&
stream->offset == uxr_get_reliable_buffer_size(&stream->base, next_seq_num))
{
stream->last_written = seq_num;
}
}
bool uxr_update_output_stream_heartbeat_timestamp(
uxrOutputReliableStream* stream,
int64_t current_timestamp)

View File

@ -45,6 +45,9 @@ bool uxr_prepare_next_reliable_buffer_to_send(
uint8_t** buffer,
size_t* length,
uxrSeqNum* seq_num);
void uxr_cancel_reliable_buffer_to_send(
uxrOutputReliableStream* stream,
uxrSeqNum seq_num);
bool uxr_update_output_stream_heartbeat_timestamp(
uxrOutputReliableStream* stream,

View File

@ -2,7 +2,7 @@ import sys
import re
import csv
pattern = re.compile('(?P<name>[\w]+)\s(?P<text>[\d]+)\s(?P<data>[\d]+)\s(?P<bss>[\d]+)\s')
pattern = re.compile(r'(?P<name>[\w]+)\s(?P<text>[\d]+)\s(?P<data>[\d]+)\s(?P<bss>[\d]+)\s')
# Take data from file.
complete_profile_data = []

View File

@ -16,7 +16,7 @@
#
###############################################################################
cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
cmake_minimum_required(VERSION 3.5.0 FATAL_ERROR)
# New project because of the CXX GTest dependency.
if(CMAKE_VERSION VERSION_LESS 3.0)

View File

@ -16,7 +16,7 @@
#
###############################################################################
cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
cmake_minimum_required(VERSION 3.5.0 FATAL_ERROR)
# New project because of the CXX GTest dependency.
if(CMAKE_VERSION VERSION_LESS 3.0)

View File

@ -103,6 +103,7 @@ public:
uint8_t input_reliable_buffer[MTU * HISTORY];
static int listening_counter;
static int sending_counter;
static bool send_msg(
void* instance,
@ -124,6 +125,13 @@ public:
EXPECT_EQ(size_t(MTU), len);
return false;
}
else if (std::string("FlashReliableStreamSendError") ==
::testing::UnitTest::GetInstance()->current_test_info()->name())
{
EXPECT_EQ(size_t(OFFSET + SUBHEADER_SIZE + 8), len);
SessionTest::sending_counter++;
return false;
}
else if (std::string("SendHeartbeat") == ::testing::UnitTest::GetInstance()->current_test_info()->name())
{
EXPECT_EQ(size_t(HEARTBEAT_MAX_MSG_SIZE - (MAX_HEADER_SIZE - OFFSET)), len);
@ -272,6 +280,7 @@ public:
SessionTest* SessionTest::current = nullptr;
int SessionTest::listening_counter;
int SessionTest::sending_counter;
TEST_F(SessionTest, SetStatusCallback)
{
@ -355,6 +364,28 @@ TEST_F(SessionTest, FlashStreams)
uxr_flash_output_streams(&session);
}
TEST_F(SessionTest, FlashReliableStreamSendError)
{
SessionTest::sending_counter = 0;
ucdrBuffer ub;
uxrStreamId output_reliable = uxr_stream_id(0, UXR_RELIABLE_STREAM, UXR_OUTPUT_STREAM);
(void) uxr_prepare_stream_to_write_submessage(&session, output_reliable, 8, &ub, 1, 0);
uxrOutputReliableStream* stream = &session.streams.output_reliable[0];
uxr_flash_output_streams(&session);
EXPECT_EQ(1, SessionTest::sending_counter);
EXPECT_EQ(SEQ_NUM_MAX, stream->last_sent);
EXPECT_EQ(0u, stream->last_written);
uxr_flash_output_streams(&session);
EXPECT_EQ(2, SessionTest::sending_counter);
EXPECT_EQ(SEQ_NUM_MAX, stream->last_sent);
EXPECT_EQ(0u, stream->last_written);
}
TEST_F(SessionTest, WaitSessionStatusBad)
{
// The OK version is already checked with the CreateOk and DeleteOk test versions