Я пытаюсь реализовать протокол multi-parent rpl, я использую Contiki 3.0.
В файле rpl-dag.c есть функция static rpl_parent_t * best_parent(rpl_dag_t *dag), она отправляет двух соседей в static rpl_parent_t *best_parent(rpl_parent_t * p1, rpl_parent_t *p2) в файле mrhof.c, и эта функция возвращает лучшего соседа в качестве предпочтительного.
Что я пытаюсь сделать, так это получить другого соседа (не самого лучшего) и сравнить его со всеми другими соседями, поэтому я получаю двух лучших соседей, но когда функция в mrhof.c возвращает одного предпочтительного родителя я не могу знать, что это за сосед, как вы можете видеть в этой строке в файле rpl-dag.c:
best = dag->instance->of->best_parent(best, p);
Я имею в виду, что в этой строке функция отправляет best и p и получает best один из них, но я не знаю какой из них выбран как лучший, поэтому я могу взять другой и сравнить его с другими соседями.
И если я попытаюсь отправить трех соседей для работы в mrhof.c, я должен вернуть два лучших, например return best1, best2, но это, конечно, не работает.