Nordic Semiconductor nRF5 AirFuel SDK  version 2.2.0
pru_test_mux.c
Go to the documentation of this file.
1 /* Copyright (c) 2013 Nordic Semiconductor. All Rights Reserved.
2  *
3  * The information contained herein is property of Nordic Semiconductor ASA.
4  * Terms and conditions of usage are described in detail in NORDIC
5  * SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT.
6  *
7  * Licensees are granted free, non-transferable use of the information. NO
8  * WARRANTY of ANY KIND is provided. This heading must NOT be removed from
9  * the file.
10  *
11  */
12 
16 #include <stdbool.h>
17 #include <stdint.h>
18 #include <string.h>
19 
20 #include "pru_test_mux.h"
21 #include "pru_hal.h"
22 #include "nrf_error.h"
23 #include "nrf_assert.h"
24 #include "pru_hw_config.h"
25 
26 /******************************************************************************/
29 /******************************************************************************/
30 
39 {
40  if(set_mux_select == TMUX_SELECT_OVERRIDE)
41  {
42  (void)pru_hal_vout_enable_set(override_values.vout_enable);
43  }
44 }
45 
48 /******************************************************************************/
51 /******************************************************************************/
52 
53 uint32_t tmux_init(void)
54 {
55  override_values.charge_complete = false;
56  override_values.vout_enable = false;
57  override_values.wired_charge_detect = false;
58  override_values.iout = PRU_IOUT_DEFAULT;
59  override_values.irect = PRU_IRECT_DEFAULT;
60  override_values.temperature = PRU_TEMPERATURE_DEFAULT;
61  override_values.vout = PRU_VOUT_DEFAULT;
62  override_values.vrect = PRU_VRECT_DEFAULT;
63  override_values.power_adjusted = PRU_ADJUSTED_DEFAULT;
64  return pru_hal_init();
65 }
66 
67 uint32_t pru_tmux_vrect_get(uint16_t * p_vrect)
68 {
69  TMUX_GET(pru_hal_vrect_get, p_vrect, override_values.vrect);
70 }
71 
72 uint32_t pru_tmux_irect_get(uint16_t * p_irect)
73 {
74  TMUX_GET(pru_hal_irect_get, p_irect, override_values.irect);
75 }
76 
77 uint32_t pru_tmux_vout_enable_get(bool * enable)
78 {
79  TMUX_GET(pru_hal_vout_enable_get, enable, override_values.vout_enable);
80 }
81 
82 uint32_t pru_tmux_vout_get(uint16_t * p_vout)
83 {
84  TMUX_GET(pru_hal_vout_get, p_vout, override_values.vout);
85 }
86 
87 uint32_t pru_tmux_iout_get(uint16_t * p_iout)
88 {
89  TMUX_GET(pru_hal_iout_get, p_iout, override_values.iout);
90 }
91 
92 uint32_t pru_tmux_temperature_get(int16_t * p_temperature)
93 {
94  TMUX_GET(pru_hal_temperature_get, p_temperature, override_values.temperature);
95 }
96 
98 {
100 }
101 
102 uint32_t pru_tmux_charge_complete_status_get(bool * p_charge_complete)
103 {
104  TMUX_GET(pru_hal_charge_complete_status_get, p_charge_complete, override_values.charge_complete);
105 }
106 
107 uint32_t pru_tmux_vout_enable_set(bool enable)
108 {
110 }
111 
113 {
114  TMUX_SET(pru_hal_adj_power_set, adj_setting);
115 }
116 
118 {
119  TMUX_GET(pru_hal_adj_power_get, adj_setting, override_values.adj_setting);
120 }
121 
122 uint32_t pru_tmux_power_adjusted_get(bool * adjusted)
123 {
124  TMUX_GET(pru_hal_power_adjusted_get, adjusted, override_values.power_adjusted);
125 }
126 
127 uint32_t pru_tmux_power_adjusted_set(bool adjusted)
128 {
130 }
131 /******************************************************************************
132  * Test API
133  ******************************************************************************/
134 
136 {
137  get_mux_select = select;
138 }
139 
141 {
142  set_mux_select = select;
144 }
145 
147 {
148  memcpy(&override_values, values, sizeof(pru_tmux_override_t));
150 }
151 
153 {
154  memcpy(values, &override_values, sizeof(pru_tmux_override_t));
155 }
156 
#define PRU_IOUT_DEFAULT
Definition: pru_hw_config.h:52
static pru_tmux_override_t override_values
Definition: pru_test_mux.c:33
tmux_select_t
Enumerator used for configuring test multiplexer.
#define PRU_TEMPERATURE_DEFAULT
Definition: pru_hw_config.h:50
#define PRU_VOUT_DEFAULT
Definition: pru_hw_config.h:51
uint32_t pru_tmux_iout_get(uint16_t *p_iout)
Test wrapper for pru_hal_iout_get().
Definition: pru_test_mux.c:87
uint32_t pru_tmux_vout_enable_get(bool *enable)
Test wrapper for pru_hal_vout_enable_get().
Definition: pru_test_mux.c:77
uint32_t pru_tmux_temperature_get(int16_t *p_temperature)
Test wrapper for pru_hal_temperature_get().
Definition: pru_test_mux.c:92
#define PRU_VRECT_DEFAULT
Definition: pru_hw_config.h:49
uint32_t pru_tmux_charge_complete_status_get(bool *p_charge_complete)
Test wrapper for pru_hal_charge_complete_status_get().
Definition: pru_test_mux.c:102
static void m_update_hal_from_override_values(void)
Write all override values to **hal**set() functions if overriding of **set functions is enabled...
Definition: pru_test_mux.c:38
uint32_t pru_tmux_vout_get(uint16_t *p_vout)
Test wrapper for pru_hal_vout_get().
Definition: pru_test_mux.c:82
void pru_tmux_override_values_set(pru_tmux_override_t *values)
Set override values.
Definition: pru_test_mux.c:146
static tmux_select_t get_mux_select
Definition: pru_test_mux.c:31
#define PRU_ADJUSTED_DEFAULT
Definition: pru_hw_config.h:54
uint32_t pru_tmux_power_adjusted_set(bool adjusted)
Test wrapper for pru_hal_power_adjusted_set().
Definition: pru_test_mux.c:127
uint32_t pru_hal_wired_charge_detect_status_get(bool *p_wired)
Get the status of whether the PRU is charged by wire.
uint32_t pru_hal_temperature_get(int16_t *p_temperature)
Read the temperature.
uint32_t pru_tmux_vrect_get(uint16_t *p_vrect)
Test wrapper for pru_hal_vrect_get().
Definition: pru_test_mux.c:67
void pru_tmux_override_values_get(pru_tmux_override_t *values)
Get ovveride values.
Definition: pru_test_mux.c:152
uint32_t pru_tmux_vout_enable_set(bool enable)
Test wrapper for pru_hal_vout_enable_set().
Definition: pru_test_mux.c:107
uint32_t pru_hal_power_adjusted_set(bool adjusted)
Set power adjusted value.
uint32_t pru_hal_vout_get(uint16_t *p_vout)
Read the voltage output to battery.
Definition: pru_hal_evkit.c:95
uint32_t pru_hal_vrect_get(uint16_t *p_vrect)
Read the value of VRECT.
Definition: pru_hal_evkit.c:71
uint32_t pru_tmux_adj_power_get(ctl_adj_power_t *adj_setting)
Test wrapper for pru_hal_adj_power_get().
Definition: pru_test_mux.c:117
uint32_t pru_hal_adj_power_set(ctl_adj_power_t adj_setting)
Limit maximum power consumed by PRU.
uint32_t pru_hal_charge_complete_status_get(bool *p_charge_complete)
Get the status of whether the PRU is charged.
uint32_t pru_hal_vout_enable_get(bool *enable)
Get status of VOUT enable.
Definition: pru_hal_evkit.c:89
uint32_t pru_hal_irect_get(uint16_t *p_irect)
Read the value of IRECT.
Definition: pru_hal_evkit.c:77
#define TMUX_SET(hal_fun, arg)
Macro for multiplexing **hal**set() functions.
uint32_t pru_tmux_power_adjusted_get(bool *adjusted)
Test wrapper for pru_hal_power_adjusted_get().
Definition: pru_test_mux.c:122
uint32_t pru_hal_init(void)
Initialize the PRU's Hardware abstraction layer.
Definition: pru_hal_evkit.c:54
Collection of PRU HAL variables that can be overrided by test multiplexer.
Definition: pru_test_mux.h:36
static tmux_select_t set_mux_select
Definition: pru_test_mux.c:32
uint32_t pru_hal_adj_power_get(ctl_adj_power_t *adj_setting)
Get adjust power setting.
ctl_adj_power_t
Power adjust settings in control packet.
Definition: wpt.h:42
void tmux_get_select(tmux_select_t select)
Select source for all **tmux**get() functions.
Definition: pru_test_mux.c:135
#define PRU_IRECT_DEFAULT
Definition: pru_hw_config.h:53
void tmux_set_select(tmux_select_t select)
Select whether override values shall be used when writing to **hal**set() functions.
Definition: pru_test_mux.c:140
uint32_t pru_tmux_adj_power_set(ctl_adj_power_t adj_setting)
Test wrapper for pru_hal_adj_power_set().
Definition: pru_test_mux.c:112
ctl_adj_power_t adj_setting
Definition: pru_test_mux.h:42
uint32_t pru_tmux_wired_charge_detect_status_get(bool *p_wired)
Test wrapper for pru_hal_wired_charge_detect_status_get().
Definition: pru_test_mux.c:97
uint32_t pru_hal_vout_enable_set(bool enable)
Enable output to battery.
Definition: pru_hal_evkit.c:83
uint32_t tmux_init(void)
Initialize the PTU's test multiplexer.
Definition: pru_test_mux.c:53
uint32_t pru_hal_iout_get(uint16_t *p_iout)
Read the value of IOUT.
uint32_t pru_hal_power_adjusted_get(bool *p_adjusted)
This function is called by the PRU profile to see if the PRU has limited its power consumption as ins...
uint32_t pru_tmux_irect_get(uint16_t *p_irect)
Test wrapper for pru_hal_irect_get().
Definition: pru_test_mux.c:72
#define TMUX_GET(hal_fun, arg, override_val)
Macro for multiplexing **hal**get() functions.