Merge branch 'task/get_device' into 'master'

esp_rmaker_core: Added a get_device_by_name API similar to params

See merge request app-frameworks/esp-rainmaker!257
This commit is contained in:
Piyush Shah
2021-09-02 07:44:55 +00:00
2 changed files with 28 additions and 0 deletions

View File

@@ -518,6 +518,18 @@ esp_err_t esp_rmaker_node_add_device(const esp_rmaker_node_t *node, const esp_rm
*/
esp_err_t esp_rmaker_node_remove_device(const esp_rmaker_node_t *node, const esp_rmaker_device_t *device);
/** Get device by name
*
* Get handle for a device based on the name.
*
* @param[in] node Node handle.
* @param[in] device_name Device name to search.
*
* @return Device handle on success.
* @return NULL in case of failure.
*/
esp_rmaker_device_t *esp_rmaker_node_get_device_by_name(const esp_rmaker_node_t *node, const char *device_name);
/** Add a Device attribute
*
* @note Device attributes are reported only once after a boot-up as part of the node

View File

@@ -271,6 +271,22 @@ esp_err_t esp_rmaker_node_remove_device(const esp_rmaker_node_t *node, const esp
return ESP_OK;
}
esp_rmaker_device_t *esp_rmaker_node_get_device_by_name(const esp_rmaker_node_t *node, const char *device_name)
{
if (!node || !device_name) {
ESP_LOGE(TAG, "Node handle or device name cannot be NULL");
return NULL;
}
_esp_rmaker_device_t *device = ((_esp_rmaker_node_t *)node)->devices;
while(device) {
if (strcmp(device->name, device_name) == 0) {
break;
}
device = device->next;
}
return (esp_rmaker_device_t *)device;
}
_esp_rmaker_device_t *esp_rmaker_node_get_first_device(const esp_rmaker_node_t *node)
{
_esp_rmaker_node_t *_node = (_esp_rmaker_node_t *)node;