mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-31 20:11:36 +08:00
param: Fix an off by 1 issue and some style fixes.
This commit is contained in:
@@ -263,25 +263,30 @@ param_find_internal(const char *name, bool notification)
|
|||||||
{
|
{
|
||||||
param_t middle;
|
param_t middle;
|
||||||
param_t front = 0;
|
param_t front = 0;
|
||||||
param_t last = get_param_info_count()-1;
|
param_t last = get_param_info_count() - 1;
|
||||||
|
|
||||||
/* perform a binary search of the known parameters */
|
/* perform a binary search of the known parameters */
|
||||||
|
|
||||||
while (front <= last) {
|
while (front <= last) {
|
||||||
middle = front + (last-front) / 2;
|
middle = front + (last - front) / 2;
|
||||||
int ret = strcmp(name, param_info_base[middle].name);
|
int ret = strcmp(name, param_info_base[middle].name);
|
||||||
|
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
if (notification) {
|
if (notification) {
|
||||||
param_set_used_internal(middle);
|
param_set_used_internal(middle);
|
||||||
}
|
}
|
||||||
|
|
||||||
return middle;
|
return middle;
|
||||||
|
|
||||||
} else if (middle == front || middle == last) {
|
} else if (middle == front || middle == last) {
|
||||||
/* An end point has been hit, but there has been no match */
|
/* An end point has been hit, but there has been no match */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
} else if (ret < 0) {
|
} else if (ret < 0) {
|
||||||
last = middle - 1;
|
last = middle - 1;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
front = middle + 1;
|
front = middle;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -216,6 +216,7 @@ param_main(int argc, char *argv[])
|
|||||||
if (!strcmp(argv[1], "find")) {
|
if (!strcmp(argv[1], "find")) {
|
||||||
if (argc >= 3) {
|
if (argc >= 3) {
|
||||||
return do_find(argv[2]);
|
return do_find(argv[2]);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
warnx("not enough arguments.\nTry 'param find PARAM_NAME'");
|
warnx("not enough arguments.\nTry 'param find PARAM_NAME'");
|
||||||
return 1;
|
return 1;
|
||||||
@@ -341,13 +342,15 @@ do_show(const char *search_string)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
do_find(const char* name)
|
do_find(const char *name)
|
||||||
{
|
{
|
||||||
param_t ret = param_find_no_notification(name);
|
param_t ret = param_find_no_notification(name);
|
||||||
|
|
||||||
if (ret == PARAM_INVALID) {
|
if (ret == PARAM_INVALID) {
|
||||||
warnx("Parameter %s not found", name);
|
warnx("Parameter %s not found", name);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("Found param %s at index %d\n", name, ret);
|
printf("Found param %s at index %d\n", name, ret);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user