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