dfu: add error callback
Add error callback in dfu stack to manage some board specific behavior on DFU targets. Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com> Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
This commit is contained in:
committed by
Patrice Chotard
parent
d4cb402577
commit
d4710326c8
@@ -44,6 +44,14 @@ __weak void dfu_initiated_callback(struct dfu_entity *dfu)
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
* The purpose of the dfu_error_callback() function is to
|
||||
* provide callback for dfu user
|
||||
*/
|
||||
__weak void dfu_error_callback(struct dfu_entity *dfu, const char *msg)
|
||||
{
|
||||
}
|
||||
|
||||
/*
|
||||
* The purpose of the dfu_usb_get_reset() function is to
|
||||
* provide information if after USB_DETACH request
|
||||
@@ -342,6 +350,7 @@ int dfu_write(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
|
||||
printf("%s: Wrong sequence number! [%d] [%d]\n",
|
||||
__func__, dfu->i_blk_seq_num, blk_seq_num);
|
||||
dfu_transaction_cleanup(dfu);
|
||||
dfu_error_callback(dfu, "Wrong sequence number");
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -366,6 +375,7 @@ int dfu_write(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
|
||||
ret = dfu_write_buffer_drain(dfu);
|
||||
if (ret) {
|
||||
dfu_transaction_cleanup(dfu);
|
||||
dfu_error_callback(dfu, "DFU write error");
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
@@ -375,6 +385,7 @@ int dfu_write(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
|
||||
pr_err("Buffer overflow! (0x%p + 0x%x > 0x%p)\n", dfu->i_buf,
|
||||
size, dfu->i_buf_end);
|
||||
dfu_transaction_cleanup(dfu);
|
||||
dfu_error_callback(dfu, "Buffer overflow");
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -386,6 +397,7 @@ int dfu_write(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
|
||||
ret = dfu_write_buffer_drain(dfu);
|
||||
if (ret) {
|
||||
dfu_transaction_cleanup(dfu);
|
||||
dfu_error_callback(dfu, "DFU write error");
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user