Nordic Semiconductor nRF5 AirFuel SDK  version 2.2.0
ptu_config.h
Go to the documentation of this file.
1 /* Copyright (c) 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 
20 #ifndef __PTU_CONFIG_H__
21 #define __PTU_CONFIG_H__
22 
23 #include "ptu_hw_config.h"
24 
25 /******************************************************************************
26  * Misc. parameters
27  ******************************************************************************/
28 
29 #define PTU_MAX_CONNECTIONS 8
30 #define PTU_MAX_DEVICES 8
31 #define PTU_OUTPUT_TX_POWER 0
32 #define PTU_HW_REVISION 0
33 #define PTU_FW_REVISION 0
34 #define PTU_PROTOCOL_REVISION 1
35 #define PTU_MAX_APP_TIMERS 3
36 #define PTU_SENSORS_READ_INTERVAL_MS 30
37 #define PTU_PRU_DYN_READ_INTERVAL_MS 50
38 #define PTU_CONFIG_TIMEOUT_MS 10
39 #define PTU_SEC_MIN_KEYSIZE 7
40 #define PTU_SEC_MAX_KEYSIZE 16
41 #define PTU_P_ADJ_CMD_COOLDOWN_MS 2000
42 #define PTU_ADJUSTED_POWER_BIT_TIMEOUT_MS 2000
43 #define PTU_POWER_TRANSFER_HYSTERISIS 100
44 #define PTU_RECONNECT_TIMEOUT_MS 1100
45 #define PTU_DISTANT_LIST_LEN 30
46 #define PTU_MS_FROM_BEACON_STOP_TO_ACTIVATE_DISTANT_LIST 100
48 #define PTU_ALLOWED_REDUCED_POSITIVE_ITX_COIL_ADJUSTMENT_MULTIPLIER 0.95
50 #define PTU_ALLOWED_REDUCED_NEGATIVE_ITX_COIL_ADJUSTMENT_MULTIPLIER 1.05
52 #define PTU_DOMINANT_PRU_UPPER_LIMIT_VRECTSET_MULTIPLIER_FOR_REDUCTION_IN_STEP_SIZE 1.0/0.95
55 #define PTU_DOMINANT_PRU_LOWER_LIMIT_VRECTSET_MULTIPLIER_FOR_REDUCTION_IN_STEP_SIZE 1.0/1.05
59 /******************************************************************************
60  * Load detection
61  ******************************************************************************/
62 
63 #define PTU_LOAD_VARIATION_DETECT_LIFETIME_MS 1500
64 #define PTU_Z_TX_IN_NO_LOAD 100
65 #define PTU_Z_TX_IN_LOAD_DETECT 50
66 #define PTU_P_TX_IN_LOAD_DETECT 50
72 #define PTU_Z_MEAS_BUF_LENGTH ((100 / PTU_SENSORS_READ_INTERVAL_MS) + 1)
73 
74 /******************************************************************************
75  * Cross connection
76  ******************************************************************************/
77 
78 #define PTU_CCA_RSSI_ENABLE true
79 #define PTU_CCA_TIME_SET_ENABLE true
80 #define PTU_CCA_REBOOT_BIT_ENABLE false
81 #define PTU_TIME_SET_VAL_MS 80
82 #define PTU_TIME_SET_VAL_MS_MARGIN 4
83 #define PTU_TIME_SET_CHECK_INTERVAL_MS 2
84 #define PTU_TIME_SET_500_MS_OF_SAMPLES \
85  (500 / PTU_TIME_SET_CHECK_INTERVAL_MS)
86 #define PTU_TIME_SET_LOWER_LIMIT_MS \
87  (PTU_TIME_SET_VAL_MS - \
88  PTU_TIME_SET_VAL_MS_MARGIN - \
89  PTU_TIME_SET_CHECK_INTERVAL_MS)
90 #define PTU_TIME_SET_UPPER_LIMIT_MS \
91  (PTU_TIME_SET_VAL_MS + \
92  PTU_TIME_SET_VAL_MS_MARGIN)
93 #define PTU_TIME_SET_VAL_LOW_LOAD_MS 20
94 #define PTU_MAX_DISTANT_PRUS 3
95 #define PTU_ADV_PRE_CONNECT_ALLOW 11
97 #define PTU_ADV_IGNORE_TIMEOUT_MS 1700
100 /******************************************************************************
101  * Scan parameters
102  ******************************************************************************/
103 
104 #define PTU_POWER_SAVE_STATE_SCAN_INTERVAL 160
105 #define PTU_POWER_SAVE_STATE_SCAN_WINDOW PTU_POWER_SAVE_STATE_SCAN_INTERVAL
106 #ifdef WDBGPTU
107 #define PTU_NORMAL_SCAN_INTERVAL 100
108 #else
109 #define PTU_NORMAL_SCAN_INTERVAL 80
110 #endif
111 #define PTU_NORMAL_SCAN_WINDOW 48
113 /******************************************************************************
114  * Connection parameters
115  ******************************************************************************/
116 
117 #define PTU_MIN_CONN_INTERVAL 40
118 #define PTU_MAX_CONN_INTERVAL 40
119 #define PTU_SLAVE_LATENCY 0
120 #define PTU_CONN_SUP_TIMEOUT 100
121 #define PTU_MAX_BLE_CONN_ATTEMPTS 2
122 #define PTU_MAX_REG_ATTEMPTS 2
123 #define PTU_REG_TIMEOUT_MS 500
140 #define PTU_REVOKE_ACCEPTED_STATE true
141 
145 #define PTU_REVOKE_ACCEPTED_STATE_NON_POWER_SAVE_MS \
146  (PTU_REVOKE_ACCEPTED_STATE_RETRIES * PTU_BEACON_DURATION_LONG_MS)
147 
151 #define PTU_REVOKE_ACCEPTED_STATE_POWER_SAVE_MS \
152  (PTU_REVOKE_ACCEPTED_STATE_RETRIES * ((PTU_BEACON_CYCLES_LONG * PTU_BEACON_CYCLE_PERIOD_MS) + PTU_BEACON_DURATION_LONG_MS))
153 
159 #define PTU_REVOKE_ACCEPTED_STATE_RETRIES 3
161 
162 /******************************************************************************
163  * Rogue object detection
164  ******************************************************************************/
165 
166 #define PTU_ROGUE_OBJECT_DETECT_THRESHOLD 30
167 #define PTU_CCA_ROGUE_DETECT_ENABLE true
169 /******************************************************************************
170  * Beacon parameters (Power Save and Latching Fault state)
171  ******************************************************************************/
172 
173 #define PTU_BEACON_CYCLE_PERIOD_MS 250
174 #define PTU_BEACON_CYCLES_LONG 10
175 #define PTU_BEACON_DURATION_SHORT_MS 10
177 /* Verify that beacon cycles and durations are BSS compliant (section 5.2.3.3 and 5.2.3.4) */
178 #if PTU_BEACON_CYCLE_PERIOD_MS != 250
179  #error PTU_BEACON_CYCLE_PERIOD_MS MUST be 250
180 #endif
181 
182 #if (PTU_BEACON_CYCLES_LONG * PTU_BEACON_CYCLE_PERIOD_MS) < 850
183  #error PTU_BEACON_CYCLES_LONG * PTU_BEACON_CYCLE_PERIOD_MS can not be smaller than 850
184 #elif (PTU_BEACON_CYCLES_LONG * PTU_BEACON_CYCLE_PERIOD_MS) > 3000
185  #error PTU_BEACON_CYCLES_LONG * PTU_BEACON_CYCLE_PERIOD_MS can not be larger than 3000
186 #endif
187 
188 #if PTU_BEACON_DURATION_SHORT_MS > 30
189  #error PTU_BEACON_DURATION_SHORT_MS can not be larger than 30
190 #endif
191 
192 /******************************************************************************
193  * Latching fault parameters
194  ******************************************************************************/
195 
196 #define PTU_LATCH_FAULT_ENTRY_DELAY_MS 1000
197 #define PTU_LATCH_FAULT_EXIT_ATTEMPT_DELAY_MS 5000
198 #define PTU_LATCH_FAULT_MAX_AUTO_CLR_ATTEMPTS 3
199 #define PTU_LATCH_FAULT_NO_ERR_CLR_TIMEOUT_SEC (5 * 60)
200 #define PTU_LATCH_FAULT_NO_ERR_CLR_TIMEOUT_MS PTU_LATCH_FAULT_NO_ERR_CLR_TIMEOUT_SEC * 1000
201 #define PTU_LATCH_FAULT_NO_LOAD_VAR_NO_DEVICES_MS 5000
204 /******************************************************************************
205  * PTU Static characteristic default values
206  ******************************************************************************/
208 #define BLE_WPTS_PTU_STATIC_MAX_SOURCE_IMPEDANCE_VAL BLE_WPTS_PTU_STATIC_MAX_SOURCE_IMPEDANCE_100_VAL
209 #define BLE_WPTS_PTU_STATIC_MAX_SOURCE_IMPEDANCE_VALID 0
210 #define BLE_WPTS_PTU_STATIC_MAX_LOAD_RESISTANCE_VAL BLE_WPTS_PTU_STATIC_MAX_LOAD_RESISTANCE_55_VAL
211 #define BLE_WPTS_PTU_STATIC_MAX_LOAD_RESISTANCE_VALID 0
212 #define BLE_WPTS_PTU_POWER BLE_WPTS_PTU_POWER_9_9W
215 /******************************************************************************
216  * PTU DFU parameters
217  ******************************************************************************/
218  #define PTU_BUTTON_PRESS_LENGTH_DFU_MS 5 * 1000
222 /******************************************************************************
223  * PTU Beacon parameters
224  ******************************************************************************/
225 #define PTU_BEACON_DURATION_LONG_MS 105
226 #define PTU_BEACON_DURATION_EXTENDED_MS 3000
227 #define PTU_POWER_SAVE_LONG_BEACON_PTX_READ_INTERVAL_MS 2
230 #if(PTU_MAX_DEVICES == 0)
231  #error PTU_MAX_DEVICES can not be 0
232 #elif(PTU_MAX_DEVICES == 1)
233  #define BLE_WPTS_PTU_STATIC_NUM_DEVICES_BITVAL BLE_WPTS_PTU_STATIC_NUM_DEVICES_1_VAL
234 #elif(PTU_MAX_DEVICES == 2)
235  #define BLE_WPTS_PTU_STATIC_NUM_DEVICES_BITVAL BLE_WPTS_PTU_STATIC_NUM_DEVICES_2_VAL
236 #elif(PTU_MAX_DEVICES == 3)
237  #define BLE_WPTS_PTU_STATIC_NUM_DEVICES_BITVAL BLE_WPTS_PTU_STATIC_NUM_DEVICES_3_VAL
238 #elif(PTU_MAX_DEVICES == 4)
239  #define BLE_WPTS_PTU_STATIC_NUM_DEVICES_BITVAL BLE_WPTS_PTU_STATIC_NUM_DEVICES_4_VAL
240 #elif(PTU_MAX_DEVICES == 5)
241  #define BLE_WPTS_PTU_STATIC_NUM_DEVICES_BITVAL BLE_WPTS_PTU_STATIC_NUM_DEVICES_5_VAL
242 #elif(PTU_MAX_DEVICES == 6)
243  #define BLE_WPTS_PTU_STATIC_NUM_DEVICES_BITVAL BLE_WPTS_PTU_STATIC_NUM_DEVICES_6_VAL
244 #elif(PTU_MAX_DEVICES == 7)
245  #define BLE_WPTS_PTU_STATIC_NUM_DEVICES_BITVAL BLE_WPTS_PTU_STATIC_NUM_DEVICES_7_VAL
246 #elif(PTU_MAX_DEVICES == 8)
247  #define BLE_WPTS_PTU_STATIC_NUM_DEVICES_BITVAL BLE_WPTS_PTU_STATIC_NUM_DEVICES_8_VAL
248 #else
249  #error BLE_WPTS_PTU_STATIC_NUM_DEVICES_BITVAL must be in range [1, 8]
250 #endif
251 
252 #if(PTU_TIME_SET_VAL_MS == 0)
253  #error PTU_MAX_CONNECTIONS can not be 0
254 #elif(PTU_TIME_SET_VAL_MS == 10)
255  #define BLE_WPTS_TIME_SET_BITVAL CTL_TIME_SET_10MS
256 #elif(PTU_TIME_SET_VAL_MS == 20)
257  #define BLE_WPTS_TIME_SET_BITVAL CTL_TIME_SET_20MS
258 #elif(PTU_TIME_SET_VAL_MS == 30)
259  #define BLE_WPTS_TIME_SET_BITVAL CTL_TIME_SET_30MS
260 #elif(PTU_TIME_SET_VAL_MS == 40)
261  #define BLE_WPTS_TIME_SET_BITVAL CTL_TIME_SET_40MS
262 #elif(PTU_TIME_SET_VAL_MS == 50)
263  #define BLE_WPTS_TIME_SET_BITVAL CTL_TIME_SET_50MS
264 #elif(PTU_TIME_SET_VAL_MS == 60)
265  #define BLE_WPTS_TIME_SET_BITVAL CTL_TIME_SET_60MS
266 #elif(PTU_TIME_SET_VAL_MS == 70)
267  #define BLE_WPTS_TIME_SET_BITVAL CTL_TIME_SET_70MS
268 #elif(PTU_TIME_SET_VAL_MS == 80)
269  #define BLE_WPTS_TIME_SET_BITVAL CTL_TIME_SET_80MS
270 #else
271  #error PTU_TIME_SET_VAL_MS must be in range [10, 80] in steps of 10.
272 #endif
273 
274 #if(PTU_CLASS == BLE_WPTS_PTU_CLASS_1)
275  #if(PTU_PTX_IN_MAX < 20)
276  #warning PTU Class 1 requires PTU_PTX_IN_MAX >= 20
277  #endif
278 #elif(PTU_CLASS == BLE_WPTS_PTU_CLASS_2)
279  #if(PTU_PTX_IN_MAX < 100)
280  #warning PTU Class 2 requires PTU_PTX_IN_MAX >= 100
281  #endif
282 #elif(PTU_CLASS == BLE_WPTS_PTU_CLASS_3)
283  #if(PTU_PTX_IN_MAX < 160)
284  #warning PTU Class 3 requires PTU_PTX_IN_MAX >= 160
285  #endif
286 #elif(PTU_CLASS == BLE_WPTS_PTU_CLASS_4)
287  #if(PTU_PTX_IN_MAX < 330)
288  #warning PTU Class 4 requires PTU_PTX_IN_MAX >= 330
289  #endif
290 #elif(PTU_CLASS == BLE_WPTS_PTU_CLASS_5)
291  #if(PTU_PTX_IN_MAX < 500)
292  #warning PTU Class 5 requires PTU_PTX_IN_MAX >= 500
293  #endif
294 #elif(PTU_CLASS == BLE_WPTS_PTU_CLASS_6)
295  #if(PTU_PTX_IN_MAX < 700)
296  #warning PTU Class 6 requires PTU_PTX_IN_MAX >= 700
297  #endif
298 #endif
299 
300 #if(PTU_SENSORS_READ_INTERVAL_MS > (PTU_TIME_SET_VAL_MS / 2))
301  #error PTU_TIME_SET_VAL_MS must be <= (PTU_TIME_SET_VAL_MS / 2)
302 #endif
303 
304 #endif /* __PTU_CONFIG_H__ */
305