• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #include"hpm_mcl_drivers.h"
9 
hpm_mcl_drivers_init(mcl_drivers_t * drivers,mcl_drivers_cfg_t * cfg)10 hpm_mcl_stat_t hpm_mcl_drivers_init(mcl_drivers_t *drivers, mcl_drivers_cfg_t *cfg)
11 {
12     drivers->status = drivers_status_init;
13     MCL_ASSERT(drivers != NULL, mcl_invalid_pointer);
14     MCL_ASSERT(cfg != NULL, mcl_invalid_pointer);
15     drivers->cfg = cfg;
16     drivers->cfg->callback.init();
17     drivers->cfg->callback.enable_all_drivers();
18     drivers->status = drivers_status_run;
19 
20     return mcl_success;
21 }
22 
hpm_mcl_drivers_update_bldc_duty(mcl_drivers_t * drivers,float duty_a,float duty_b,float duty_c)23 hpm_mcl_stat_t hpm_mcl_drivers_update_bldc_duty(mcl_drivers_t *drivers, float duty_a, float duty_b, float duty_c)
24 {
25     MCL_ASSERT_EXEC_CODE_AND_RETURN(drivers->cfg->callback.update_duty_cycle(mcl_drivers_chn_a, duty_a) == mcl_success,
26                                     drivers->status = drivers_status_fail,
27                                     mcl_drivers_update_error);
28     MCL_ASSERT_EXEC_CODE_AND_RETURN(drivers->cfg->callback.update_duty_cycle(mcl_drivers_chn_b, duty_b) == mcl_success,
29                                     drivers->status = drivers_status_fail,
30                                     mcl_drivers_update_error);
31     MCL_ASSERT_EXEC_CODE_AND_RETURN(drivers->cfg->callback.update_duty_cycle(mcl_drivers_chn_c, duty_c) == mcl_success,
32                                     drivers->status = drivers_status_fail,
33                                     mcl_drivers_update_error);
34 
35     return mcl_success;
36 }
37 
hpm_mcl_drivers_update_step_duty(mcl_drivers_t * drivers,float duty_a0,float duty_a1,float duty_b0,float duty_b1)38 hpm_mcl_stat_t hpm_mcl_drivers_update_step_duty(mcl_drivers_t *drivers, float duty_a0, float duty_a1, float duty_b0, float duty_b1)
39 {
40     MCL_ASSERT_EXEC_CODE_AND_RETURN(drivers->cfg->callback.update_duty_cycle(mcl_drivers_chn_a0, duty_a0) == mcl_success,
41                                     drivers->status = drivers_status_fail,
42                                     mcl_drivers_update_error);
43     MCL_ASSERT_EXEC_CODE_AND_RETURN(drivers->cfg->callback.update_duty_cycle(mcl_drivers_chn_a1, duty_a1) == mcl_success,
44                                     drivers->status = drivers_status_fail,
45                                     mcl_drivers_update_error);
46     MCL_ASSERT_EXEC_CODE_AND_RETURN(drivers->cfg->callback.update_duty_cycle(mcl_drivers_chn_b0, duty_b0) == mcl_success,
47                                     drivers->status = drivers_status_fail,
48                                     mcl_drivers_update_error);
49     MCL_ASSERT_EXEC_CODE_AND_RETURN(drivers->cfg->callback.update_duty_cycle(mcl_drivers_chn_b1, duty_b1) == mcl_success,
50                                     drivers->status = drivers_status_fail,
51                                     mcl_drivers_update_error);
52 
53     return mcl_success;
54 }
55 
hpm_mcl_disable_all_drivers(mcl_drivers_t * drivers)56 hpm_mcl_stat_t hpm_mcl_disable_all_drivers(mcl_drivers_t *drivers)
57 {
58     MCL_ASSERT_EXEC_CODE_AND_RETURN(drivers->cfg->callback.disable_all_drivers() == mcl_success,
59                                     drivers->status = drivers_status_fail,
60                                     mcl_fail);
61 
62     return mcl_success;
63 }
64 
hpm_mcl_enable_all_drivers(mcl_drivers_t * drivers)65 hpm_mcl_stat_t hpm_mcl_enable_all_drivers(mcl_drivers_t *drivers)
66 {
67     MCL_ASSERT_EXEC_CODE_AND_RETURN(drivers->cfg->callback.enable_all_drivers() == mcl_success,
68                                     drivers->status = drivers_status_fail,
69                                     mcl_fail);
70 
71     return mcl_success;
72 }
73