diff --git a/firehose.c b/firehose.c index 636d24b..96f233e 100644 --- a/firehose.c +++ b/firehose.c @@ -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); +} diff --git a/qdl.c b/qdl.c index 47debd9..100c968 100644 --- a/qdl.c +++ b/qdl.c @@ -504,5 +504,7 @@ int main(int argc, char **argv) if (ret < 0) return 1; + firehose_reset(&qdl); + return 0; } diff --git a/qdl.h b/qdl.h index f1b9921..e3b1907 100644 --- a/qdl.h +++ b/qdl.h @@ -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;