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:
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;
|
||||
}
|
||||
}
|
||||
|
@ -377,6 +377,17 @@ void dfu_initiated_callback(struct dfu_entity *dfu);
|
||||
*/
|
||||
void dfu_flush_callback(struct dfu_entity *dfu);
|
||||
|
||||
/**
|
||||
* dfu_error_callback() - weak callback called at the DFU write error
|
||||
*
|
||||
* It is a callback function called by DFU stack after DFU write error.
|
||||
* This function allows to manage some board specific behavior on DFU targets
|
||||
*
|
||||
* @dfu: pointer to the dfu_entity which cause the error
|
||||
* @msg: the message of the error
|
||||
*/
|
||||
void dfu_error_callback(struct dfu_entity *dfu, const char *msg);
|
||||
|
||||
int dfu_transaction_initiate(struct dfu_entity *dfu, bool read);
|
||||
void dfu_transaction_cleanup(struct dfu_entity *dfu);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user