firehose: Extract call to firehose_reset()

Expose firehose_reset() and call this from the main() function instead,
allowing the code to be reused between qdl and the nbdkit plugin.

Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
This commit is contained in:
Bjorn Andersson
2019-05-06 21:10:49 -07:00
parent 066022e6d8
commit 342e99b9be
3 changed files with 25 additions and 24 deletions

View File

@@ -597,28 +597,6 @@ static int firehose_set_bootable(struct qdl_device *qdl, int part)
return 0;
}
static int firehose_reset(struct qdl_device *qdl)
{
xmlNode *root;
xmlNode *node;
xmlDoc *doc;
int ret;
doc = xmlNewDoc((xmlChar*)"1.0");
root = xmlNewNode(NULL, (xmlChar*)"data");
xmlDocSetRootElement(doc, root);
node = xmlNewChild(root, NULL, (xmlChar*)"power", NULL);
xml_setpropf(node, "value", "reset");
ret = firehose_write(qdl, doc);
xmlFreeDoc(doc);
if (ret < 0)
return ret;
return firehose_read(qdl, true, firehose_nop_parser, NULL);
}
int firehose_run(struct qdl_device *qdl, const char *incdir, const char *storage)
{
int bootable;
@@ -660,8 +638,6 @@ int firehose_run(struct qdl_device *qdl, const char *incdir, const char *storage
else
firehose_set_bootable(qdl, bootable);
firehose_reset(qdl);
return 0;
}
@@ -680,3 +656,25 @@ int firehose_getsize(struct qdl_device *qdl, int lun, size_t *sector_size,
return 0;
}
int firehose_reset(struct qdl_device *qdl)
{
xmlNode *root;
xmlNode *node;
xmlDoc *doc;
int ret;
doc = xmlNewDoc((xmlChar*)"1.0");
root = xmlNewNode(NULL, (xmlChar*)"data");
xmlDocSetRootElement(doc, root);
node = xmlNewChild(root, NULL, (xmlChar*)"power", NULL);
xml_setpropf(node, "value", "reset_to_edl");
ret = firehose_write(qdl, doc);
xmlFreeDoc(doc);
if (ret < 0)
return ret;
return firehose_read(qdl, true, firehose_generic_parser, NULL);
}

2
qdl.c
View File

@@ -504,5 +504,7 @@ int main(int argc, char **argv)
if (ret < 0)
return 1;
firehose_reset(&qdl);
return 0;
}

1
qdl.h
View File

@@ -20,6 +20,7 @@ const char *attr_as_string(xmlNode *node, const char *attr, int *errors);
int firehose_getsize(struct qdl_device *qdl, int lun, size_t *sector_size,
size_t *num_sectors);
int firehose_reset(struct qdl_device *qdl);
extern bool qdl_debug;