Hi Patrick On 5/18/21 3:12 PM, Patrick Delaunay wrote: > Add error callback in dfu stack to manage some board specific > behavior on DFU targets. > > Signed-off-by: Patrick Delaunay <[email protected]> > --- > > drivers/dfu/dfu.c | 12 ++++++++++++ > include/dfu.h | 11 +++++++++++ > 2 files changed, 23 insertions(+) > > diff --git a/drivers/dfu/dfu.c b/drivers/dfu/dfu.c > index 213a20e7bc..ff1859d946 100644 > --- a/drivers/dfu/dfu.c > +++ b/drivers/dfu/dfu.c > @@ -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; > } > } > diff --git a/include/dfu.h b/include/dfu.h > index d18b701728..1963e9ffb9 100644 > --- a/include/dfu.h > +++ b/include/dfu.h > @@ -383,6 +383,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); > >
Reviewed-by: Patrice Chotard <[email protected]> Thanks Patrice

