diff --git a/FEE/smile_fee_ctrl.c b/FEE/smile_fee_ctrl.c index 274e85a81f4ba491f31e9042d708d12321421f7c..f1784150127c442ea90994acd606f7a1d99d93cc 100644 --- a/FEE/smile_fee_ctrl.c +++ b/FEE/smile_fee_ctrl.c @@ -1861,19 +1861,24 @@ int smile_fee_sync_execute_op(enum sync_direction dir) - - - - /** * @brief initialise the smile_fee control library + * + * @param fee_mirror the desired FEE mirror, set NULL to allocate it for you */ -void smile_fee_ctrl_init(void) +void smile_fee_ctrl_init(struct smile_fee_mirror *fee_mirror) { - smile_fee = (struct smile_fee_mirror *) malloc(sizeof(struct smile_fee_mirror)); - if (!smile_fee) + if (!fee_mirror) + smile_fee = (struct smile_fee_mirror *) + malloc(sizeof(struct smile_fee_mirror)); + else + smile_fee = fee_mirror; + + if (!smile_fee) { printf("Error allocating memory for the SMILE_FEE mirror\n"); + return; + } bzero(smile_fee, sizeof(struct smile_fee_mirror)); } diff --git a/FEE/smile_fee_ctrl.h b/FEE/smile_fee_ctrl.h index a60dbe5b40724a88e5960bc181cb1494879c8f2a..deca7185ba4ef5cd9a532d50a5e6b213c88d1470 100644 --- a/FEE/smile_fee_ctrl.h +++ b/FEE/smile_fee_ctrl.h @@ -239,7 +239,7 @@ void smile_fee_set_execute_op(uint32_t mode); /* setup */ -void smile_fee_ctrl_init(void); +void smile_fee_ctrl_init(struct smile_fee_mirror *fee_mirror); #endif /* _SMILE_FEE_CTRL_H_ */ diff --git a/FEE/smile_fee_demo.c b/FEE/smile_fee_demo.c index 681dfd4a9b6f7acb45eeb3b407880f89e69fe77a..eb98d8de9e318bacf3f8fa213e9425f039b1f3ae 100644 --- a/FEE/smile_fee_demo.c +++ b/FEE/smile_fee_demo.c @@ -549,7 +549,7 @@ int main(void) #endif /* initialise the libraries */ - smile_fee_ctrl_init(); + smile_fee_ctrl_init(NULL); smile_fee_rmap_init(GRSPW2_DEFAULT_MTU, rmap_tx, rmap_rx);