pub unsafe extern "C" fn esp_mesh_waive_root(
    vote: *const mesh_vote_t,
    reason: c_int
) -> esp_err_t
Expand description

@brief Cause the root device to give up (waive) its mesh root status - A device is elected root primarily based on RSSI from the external router. - If external router conditions change, users can call this API to perform a root switch. - In this API, users could specify a desired root address to replace itself or specify an attempts value to ask current root to initiate a new round of voting. During the voting, a better root candidate would be expected to find to replace the current one. - If no desired root candidate, the vote will try a specified number of attempts (at least 15). If no better root candidate is found, keep the current one. If a better candidate is found, the new better one will send a root switch request to the current root, current root will respond with a root switch acknowledgment. - After that, the new candidate will connect to the router to be a new root, the previous root will disconnect with the router and choose another parent instead.

        Root switch is completed with minimal disruption to the whole mesh network.

@attention This API is only called by the root.

@param[in] vote vote configuration - If this parameter is set NULL, the vote will perform the default 15 times.

        - Field percentage threshold is 0.9 by default.
        - Field is_rc_specified shall be false.
        - Field attempts shall be at least 15 times.

@param[in] reason only accept MESH_VOTE_REASON_ROOT_INITIATED for now

@return

  • ESP_OK
  • ESP_ERR_MESH_QUEUE_FULL
  • ESP_ERR_MESH_DISCARD
  • ESP_FAIL