Adopt retransmission for secondary address probing

This commit is contained in:
Stefan Wahren 2013-10-19 13:56:58 +02:00
parent e6173103e2
commit 663642b7ec

View File

@ -2164,7 +2164,7 @@ mbus_select_secondary_address(mbus_handle * handle, const char *mask)
int
mbus_probe_secondary_address(mbus_handle *handle, const char *mask, char *matching_addr)
{
int ret;
int ret, i;
mbus_frame reply;
if (mask == NULL || matching_addr == NULL || strlen(mask) != 16)
@ -2173,6 +2173,8 @@ mbus_probe_secondary_address(mbus_handle *handle, const char *mask, char *matchi
return MBUS_PROBE_ERROR;
}
for (i = 0; i <= handle->max_search_retry; i++)
{
ret = mbus_select_secondary_address(handle, mask);
if (ret == MBUS_PROBE_SINGLE)
@ -2215,7 +2217,8 @@ mbus_probe_secondary_address(mbus_handle *handle, const char *mask, char *matchi
if (addr == NULL)
{
// show error message, but procede with scan
MBUS_ERROR("Failed to generate secondary address from M-Bus reply frame: %s\n", mbus_error_str());
MBUS_ERROR("Failed to generate secondary address from M-Bus reply frame: %s\n",
mbus_error_str());
return MBUS_PROBE_NOTHING;
}
@ -2235,6 +2238,12 @@ mbus_probe_secondary_address(mbus_handle *handle, const char *mask, char *matchi
return MBUS_PROBE_NOTHING;
}
}
else if ((ret == MBUS_PROBE_ERROR) ||
(ret == MBUS_PROBE_COLLISION))
{
break;
}
}
return ret;
}