Subversion Repositories FuelGauge

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 mjames 1
/**
2
  ******************************************************************************
3
  * @file    stm32f0xx_hal_pwr_ex.h
4
  * @author  MCD Application Team
5
  * @brief   Header file of PWR HAL Extension module.
6
  ******************************************************************************
7
  * @attention
8
  *
9
  * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
10
  * All rights reserved.</center></h2>
11
  *
12
  * This software component is licensed by ST under BSD 3-Clause license,
13
  * the "License"; You may not use this file except in compliance with the
14
  * License. You may obtain a copy of the License at:
15
  *                        opensource.org/licenses/BSD-3-Clause
16
  *
17
  ******************************************************************************
18
  */
19
 
20
/* Define to prevent recursive inclusion -------------------------------------*/
21
#ifndef __STM32F0xx_HAL_PWR_EX_H
22
#define __STM32F0xx_HAL_PWR_EX_H
23
 
24
#ifdef __cplusplus
25
 extern "C" {
26
#endif
27
 
28
/* Includes ------------------------------------------------------------------*/
29
#include "stm32f0xx_hal_def.h"
30
 
31
/** @addtogroup STM32F0xx_HAL_Driver
32
  * @{
33
  */
34
 
35
/** @addtogroup PWREx
36
  * @{
37
  */
38
 
39
/* Exported types ------------------------------------------------------------*/
40
 
41
/** @defgroup PWREx_Exported_Types PWREx Exported Types
42
 *  @{
43
 */
44
 
45
#if defined (STM32F031x6) || defined (STM32F042x6) || defined (STM32F051x8) || \
46
    defined (STM32F071xB) || defined (STM32F072xB) || \
47
    defined (STM32F091xC)
48
 
49
/**
50
  * @brief  PWR PVD configuration structure definition
51
  */
52
typedef struct
53
{
54
  uint32_t PVDLevel;   /*!< PVDLevel: Specifies the PVD detection level
55
                            This parameter can be a value of @ref PWREx_PVD_detection_level */
56
 
57
  uint32_t Mode;       /*!< Mode: Specifies the operating mode for the selected pins.
58
                            This parameter can be a value of @ref PWREx_PVD_Mode */
59
}PWR_PVDTypeDef;
60
 
61
#endif /* defined (STM32F031x6) || defined (STM32F042x6) || defined (STM32F051x8) || */
62
       /* defined (STM32F071xB) || defined (STM32F072xB) || */
63
       /* defined (STM32F091xC) */
64
/**
65
  * @}
66
  */
67
/* Exported constants --------------------------------------------------------*/
68
 
69
/** @defgroup PWREx_Exported_Constants PWREx Exported Constants
70
  * @{
71
  */
72
 
73
 
74
/** @defgroup PWREx_WakeUp_Pins PWREx Wakeup Pins
75
  * @{
76
  */
77
#if defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || \
78
    defined (STM32F091xC) || defined (STM32F098xx)
79
#define PWR_WAKEUP_PIN1                     ((uint32_t)PWR_CSR_EWUP1)
80
#define PWR_WAKEUP_PIN2                     ((uint32_t)PWR_CSR_EWUP2)
81
#define PWR_WAKEUP_PIN3                     ((uint32_t)PWR_CSR_EWUP3)
82
#define PWR_WAKEUP_PIN4                     ((uint32_t)PWR_CSR_EWUP4)
83
#define PWR_WAKEUP_PIN5                     ((uint32_t)PWR_CSR_EWUP5)
84
#define PWR_WAKEUP_PIN6                     ((uint32_t)PWR_CSR_EWUP6)
85
#define PWR_WAKEUP_PIN7                     ((uint32_t)PWR_CSR_EWUP7)
86
#define PWR_WAKEUP_PIN8                     ((uint32_t)PWR_CSR_EWUP8)
87
 
88
#define IS_PWR_WAKEUP_PIN(PIN) (((PIN) == PWR_WAKEUP_PIN1) || \
89
                                ((PIN) == PWR_WAKEUP_PIN2) || \
90
                                ((PIN) == PWR_WAKEUP_PIN3) || \
91
                                ((PIN) == PWR_WAKEUP_PIN4) || \
92
                                ((PIN) == PWR_WAKEUP_PIN5) || \
93
                                ((PIN) == PWR_WAKEUP_PIN6) || \
94
                                ((PIN) == PWR_WAKEUP_PIN7) || \
95
                                ((PIN) == PWR_WAKEUP_PIN8))
96
 
97
#elif defined(STM32F030xC) || defined (STM32F070xB)
98
#define PWR_WAKEUP_PIN1                     ((uint32_t)PWR_CSR_EWUP1)
99
#define PWR_WAKEUP_PIN2                     ((uint32_t)PWR_CSR_EWUP2)
100
#define PWR_WAKEUP_PIN4                     ((uint32_t)PWR_CSR_EWUP4)
101
#define PWR_WAKEUP_PIN5                     ((uint32_t)PWR_CSR_EWUP5)
102
#define PWR_WAKEUP_PIN6                     ((uint32_t)PWR_CSR_EWUP6)
103
#define PWR_WAKEUP_PIN7                     ((uint32_t)PWR_CSR_EWUP7)
104
 
105
#define IS_PWR_WAKEUP_PIN(PIN) (((PIN) == PWR_WAKEUP_PIN1) || \
106
                                ((PIN) == PWR_WAKEUP_PIN2) || \
107
                                ((PIN) == PWR_WAKEUP_PIN4) || \
108
                                ((PIN) == PWR_WAKEUP_PIN5) || \
109
                                ((PIN) == PWR_WAKEUP_PIN6) || \
110
                                ((PIN) == PWR_WAKEUP_PIN7))
111
 
112
#elif defined(STM32F042x6) || defined (STM32F048xx)
113
#define PWR_WAKEUP_PIN1                     ((uint32_t)PWR_CSR_EWUP1)
114
#define PWR_WAKEUP_PIN2                     ((uint32_t)PWR_CSR_EWUP2)
115
#define PWR_WAKEUP_PIN4                     ((uint32_t)PWR_CSR_EWUP4)
116
#define PWR_WAKEUP_PIN6                     ((uint32_t)PWR_CSR_EWUP6)
117
#define PWR_WAKEUP_PIN7                     ((uint32_t)PWR_CSR_EWUP7)
118
 
119
#define IS_PWR_WAKEUP_PIN(PIN) (((PIN) == PWR_WAKEUP_PIN1) || \
120
                                ((PIN) == PWR_WAKEUP_PIN2) || \
121
                                ((PIN) == PWR_WAKEUP_PIN4) || \
122
                                ((PIN) == PWR_WAKEUP_PIN6) || \
123
                                ((PIN) == PWR_WAKEUP_PIN7))
124
 
125
#else
126
#define PWR_WAKEUP_PIN1                     ((uint32_t)PWR_CSR_EWUP1)
127
#define PWR_WAKEUP_PIN2                     ((uint32_t)PWR_CSR_EWUP2)
128
 
129
 
130
#define IS_PWR_WAKEUP_PIN(PIN) (((PIN) == PWR_WAKEUP_PIN1) || \
131
                                ((PIN) == PWR_WAKEUP_PIN2))
132
 
133
#endif
134
 
135
/**
136
  * @}
137
  */
138
 
139
/** @defgroup PWREx_EXTI_Line PWREx EXTI Line
140
  * @{
141
  */
142
#if defined (STM32F031x6) || defined (STM32F042x6) || defined (STM32F051x8) || \
143
    defined (STM32F071xB) || defined (STM32F072xB) || \
144
    defined (STM32F091xC)
145
 
146
#define PWR_EXTI_LINE_PVD                   ((uint32_t)EXTI_IMR_MR16)  /*!< External interrupt line 16 Connected to the PVD EXTI Line */
147
 
148
#endif /* defined (STM32F031x6) || defined (STM32F042x6) || defined (STM32F051x8) || */
149
       /* defined (STM32F071xB) || defined (STM32F072xB) || */
150
       /* defined (STM32F091xC) */
151
 
152
#if defined (STM32F042x6) || defined (STM32F048xx) || \
153
    defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || \
154
    defined (STM32F091xC) || defined (STM32F098xx)
155
 
156
#define PWR_EXTI_LINE_VDDIO2                ((uint32_t)EXTI_IMR_MR31)  /*!< External interrupt line 31 Connected to the Vddio2 Monitor EXTI Line */
157
 
158
#endif /* defined (STM32F042x6) || defined (STM32F048xx) ||\
159
          defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || \
160
          defined (STM32F091xC) || defined (STM32F098xx) ||*/
161
/**
162
  * @}
163
  */
164
 
165
#if defined (STM32F031x6) || defined (STM32F042x6) || defined (STM32F051x8) || \
166
    defined (STM32F071xB) || defined (STM32F072xB) || \
167
    defined (STM32F091xC)
168
/** @defgroup PWREx_PVD_detection_level PWREx PVD detection level
169
  * @{
170
  */
171
#define PWR_PVDLEVEL_0                      PWR_CR_PLS_LEV0
172
#define PWR_PVDLEVEL_1                      PWR_CR_PLS_LEV1
173
#define PWR_PVDLEVEL_2                      PWR_CR_PLS_LEV2
174
#define PWR_PVDLEVEL_3                      PWR_CR_PLS_LEV3
175
#define PWR_PVDLEVEL_4                      PWR_CR_PLS_LEV4
176
#define PWR_PVDLEVEL_5                      PWR_CR_PLS_LEV5
177
#define PWR_PVDLEVEL_6                      PWR_CR_PLS_LEV6
178
#define PWR_PVDLEVEL_7                      PWR_CR_PLS_LEV7
179
#define IS_PWR_PVD_LEVEL(LEVEL) (((LEVEL) == PWR_PVDLEVEL_0) || ((LEVEL) == PWR_PVDLEVEL_1)|| \
180
                                 ((LEVEL) == PWR_PVDLEVEL_2) || ((LEVEL) == PWR_PVDLEVEL_3)|| \
181
                                 ((LEVEL) == PWR_PVDLEVEL_4) || ((LEVEL) == PWR_PVDLEVEL_5)|| \
182
                                 ((LEVEL) == PWR_PVDLEVEL_6) || ((LEVEL) == PWR_PVDLEVEL_7))
183
/**
184
  * @}
185
  */
186
 
187
/** @defgroup PWREx_PVD_Mode PWREx PVD Mode
188
  * @{
189
  */
190
#define PWR_PVD_MODE_NORMAL                 (0x00000000U)   /*!< basic mode is used */
191
#define PWR_PVD_MODE_IT_RISING              (0x00010001U)   /*!< External Interrupt Mode with Rising edge trigger detection */
192
#define PWR_PVD_MODE_IT_FALLING             (0x00010002U)   /*!< External Interrupt Mode with Falling edge trigger detection */
193
#define PWR_PVD_MODE_IT_RISING_FALLING      (0x00010003U)   /*!< External Interrupt Mode with Rising/Falling edge trigger detection */
194
#define PWR_PVD_MODE_EVENT_RISING           (0x00020001U)   /*!< Event Mode with Rising edge trigger detection */
195
#define PWR_PVD_MODE_EVENT_FALLING          (0x00020002U)   /*!< Event Mode with Falling edge trigger detection */
196
#define PWR_PVD_MODE_EVENT_RISING_FALLING   (0x00020003U)   /*!< Event Mode with Rising/Falling edge trigger detection */
197
 
198
#define IS_PWR_PVD_MODE(MODE) (((MODE) == PWR_PVD_MODE_IT_RISING)|| ((MODE) == PWR_PVD_MODE_IT_FALLING) || \
199
                              ((MODE) == PWR_PVD_MODE_IT_RISING_FALLING) || ((MODE) == PWR_PVD_MODE_EVENT_RISING) || \
200
                              ((MODE) == PWR_PVD_MODE_EVENT_FALLING) || ((MODE) == PWR_PVD_MODE_EVENT_RISING_FALLING) || \
201
                              ((MODE) == PWR_PVD_MODE_NORMAL))
202
/**
203
  * @}
204
  */
205
#endif /* defined (STM32F031x6) || defined (STM32F042x6) || defined (STM32F051x8) || */
206
       /* defined (STM32F071xB) || defined (STM32F072xB) || */
207
       /* defined (STM32F091xC) */
208
 
209
/** @defgroup PWREx_Flag PWREx Flag
210
  * @{
211
  */
212
#if defined (STM32F031x6) || defined (STM32F042x6) || defined (STM32F051x8) || \
213
    defined (STM32F071xB) || defined (STM32F072xB) || \
214
    defined (STM32F091xC)
215
 
216
#define PWR_FLAG_WU                         PWR_CSR_WUF
217
#define PWR_FLAG_SB                         PWR_CSR_SBF
218
#define PWR_FLAG_PVDO                       PWR_CSR_PVDO
219
#define PWR_FLAG_VREFINTRDY                 PWR_CSR_VREFINTRDYF
220
#elif defined (STM32F070x6) || defined (STM32F070xB) || defined (STM32F030xC)
221
#define PWR_FLAG_WU                         PWR_CSR_WUF
222
#define PWR_FLAG_SB                         PWR_CSR_SBF
223
#define PWR_FLAG_VREFINTRDY                 PWR_CSR_VREFINTRDYF
224
#else
225
#define PWR_FLAG_WU                         PWR_CSR_WUF
226
#define PWR_FLAG_SB                         PWR_CSR_SBF
227
 
228
#endif /* defined (STM32F031x6) || defined (STM32F042x6) || defined (STM32F051x8) || */
229
       /* defined (STM32F071xB) || defined (STM32F072xB) || */
230
       /* defined (STM32F091xC) */
231
/**
232
  * @}
233
  */
234
 
235
/**
236
  * @}
237
  */
238
 
239
/* Exported macro ------------------------------------------------------------*/
240
/** @defgroup PWREx_Exported_Macros PWREx Exported Macros
241
  * @{
242
  */
243
#if defined (STM32F031x6) || defined (STM32F042x6) || defined (STM32F051x8) || \
244
    defined (STM32F071xB) || defined (STM32F072xB) || \
245
    defined (STM32F091xC)
246
/**
247
  * @brief Enable interrupt on PVD Exti Line 16.
248
  * @retval None.
249
  */
250
#define __HAL_PWR_PVD_EXTI_ENABLE_IT()      (EXTI->IMR |= (PWR_EXTI_LINE_PVD))
251
 
252
/**
253
  * @brief Disable interrupt on PVD Exti Line 16.
254
  * @retval None.
255
  */
256
#define __HAL_PWR_PVD_EXTI_DISABLE_IT()     (EXTI->IMR &= ~(PWR_EXTI_LINE_PVD))
257
 
258
/**
259
  * @brief Enable event on PVD Exti Line 16.
260
  * @retval None.
261
  */
262
#define __HAL_PWR_PVD_EXTI_ENABLE_EVENT()   (EXTI->EMR |= (PWR_EXTI_LINE_PVD))
263
 
264
/**
265
  * @brief Disable event on PVD Exti Line 16.
266
  * @retval None.
267
  */
268
#define __HAL_PWR_PVD_EXTI_DISABLE_EVENT()  (EXTI->EMR &= ~(PWR_EXTI_LINE_PVD))
269
 
270
/**
271
  * @brief Disable the PVD Extended Interrupt Rising Trigger.
272
  * @retval None.
273
  */
274
#define __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE()  CLEAR_BIT(EXTI->RTSR, PWR_EXTI_LINE_PVD)
275
 
276
/**
277
  * @brief Disable the PVD Extended Interrupt Falling Trigger.
278
  * @retval None.
279
  */
280
#define __HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE()  CLEAR_BIT(EXTI->FTSR, PWR_EXTI_LINE_PVD)
281
 
282
/**
283
  * @brief Disable the PVD Extended Interrupt Rising & Falling Trigger.
284
  * @retval None
285
  */
286
#define __HAL_PWR_PVD_EXTI_DISABLE_RISING_FALLING_EDGE()  __HAL_PWR_PVD_EXTI_DISABLE_RISING_EDGE();__HAL_PWR_PVD_EXTI_DISABLE_FALLING_EDGE();
287
 
288
 
289
/**
290
  * @brief  PVD EXTI line configuration: set falling edge trigger.
291
  * @retval None.
292
  */
293
#define __HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE()  EXTI->FTSR |= (PWR_EXTI_LINE_PVD)
294
 
295
/**
296
  * @brief  PVD EXTI line configuration: set rising edge trigger.
297
  * @retval None.
298
  */
299
#define __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE()   EXTI->RTSR |= (PWR_EXTI_LINE_PVD)
300
 
301
/**
302
  * @brief  Enable the PVD Extended Interrupt Rising & Falling Trigger.
303
  * @retval None
304
  */
305
#define __HAL_PWR_PVD_EXTI_ENABLE_RISING_FALLING_EDGE()   __HAL_PWR_PVD_EXTI_ENABLE_RISING_EDGE();__HAL_PWR_PVD_EXTI_ENABLE_FALLING_EDGE();
306
 
307
/**
308
  * @brief Check whether the specified PVD EXTI interrupt flag is set or not.
309
  * @retval EXTI PVD Line Status.
310
  */
311
#define __HAL_PWR_PVD_EXTI_GET_FLAG()       (EXTI->PR & (PWR_EXTI_LINE_PVD))
312
 
313
/**
314
  * @brief Clear the PVD EXTI flag.
315
  * @retval None.
316
  */
317
#define __HAL_PWR_PVD_EXTI_CLEAR_FLAG()     (EXTI->PR = (PWR_EXTI_LINE_PVD))
318
 
319
/**
320
  * @brief Generate a Software interrupt on selected EXTI line.
321
  * @retval None.
322
  */
323
#define __HAL_PWR_PVD_EXTI_GENERATE_SWIT()  (EXTI->SWIER |= (PWR_EXTI_LINE_PVD))
324
 
325
#endif /* defined (STM32F031x6) || defined (STM32F042x6) || defined (STM32F051x8) || */
326
       /* defined (STM32F071xB) || defined (STM32F072xB) || */
327
       /* defined (STM32F091xC) */
328
 
329
 
330
#if defined (STM32F042x6) || defined (STM32F048xx) || \
331
    defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || \
332
    defined (STM32F091xC) || defined (STM32F098xx)
333
/**
334
  * @brief Enable interrupt on Vddio2 Monitor Exti Line 31.
335
  * @retval None.
336
  */
337
#define __HAL_PWR_VDDIO2_EXTI_ENABLE_IT()             (EXTI->IMR |= (PWR_EXTI_LINE_VDDIO2))
338
 
339
/**
340
  * @brief Disable interrupt on Vddio2 Monitor Exti Line 31.
341
  * @retval None.
342
  */
343
#define __HAL_PWR_VDDIO2_EXTI_DISABLE_IT()            (EXTI->IMR &= ~(PWR_EXTI_LINE_VDDIO2))
344
 
345
/**
346
  * @brief  Vddio2 Monitor EXTI line configuration: clear falling edge and rising edge trigger.
347
  * @retval None.
348
  */
349
#define __HAL_PWR_VDDIO2_EXTI_DISABLE_FALLING_EDGE()                 \
350
                        do{                                          \
351
                            EXTI->FTSR &= ~(PWR_EXTI_LINE_VDDIO2);   \
352
                            EXTI->RTSR &= ~(PWR_EXTI_LINE_VDDIO2);   \
353
                          } while(0)
354
 
355
/**
356
  * @brief  Vddio2 Monitor EXTI line configuration: set falling edge trigger.
357
  * @retval None.
358
  */
359
#define __HAL_PWR_VDDIO2_EXTI_ENABLE_FALLING_EDGE()  EXTI->FTSR |= (PWR_EXTI_LINE_VDDIO2)
360
 
361
/**
362
  * @brief Check whether the specified VDDIO2 monitor EXTI interrupt flag is set or not.
363
  * @retval EXTI VDDIO2 Monitor Line Status.
364
  */
365
#define __HAL_PWR_VDDIO2_EXTI_GET_FLAG()              (EXTI->PR & (PWR_EXTI_LINE_VDDIO2))
366
 
367
/**
368
  * @brief Clear the VDDIO2 Monitor EXTI flag.
369
  * @retval None.
370
  */
371
#define __HAL_PWR_VDDIO2_EXTI_CLEAR_FLAG()            (EXTI->PR = (PWR_EXTI_LINE_VDDIO2))
372
 
373
/**
374
  * @brief Generate a Software interrupt on selected EXTI line.
375
  * @retval None.
376
  */
377
#define __HAL_PWR_VDDIO2_EXTI_GENERATE_SWIT()         (EXTI->SWIER |= (PWR_EXTI_LINE_VDDIO2))
378
 
379
 
380
#endif /* defined (STM32F042x6) || defined (STM32F048xx) ||\
381
          defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || \
382
          defined (STM32F091xC) || defined (STM32F098xx) */
383
 
384
/**
385
  * @}
386
  */
387
 
388
/* Exported functions --------------------------------------------------------*/
389
 
390
/** @addtogroup PWREx_Exported_Functions PWREx Exported Functions
391
 *  @{
392
 */
393
 
394
/** @addtogroup PWREx_Exported_Functions_Group1
395
  * @{
396
  */
397
/* I/O operation functions  ***************************************************/
398
#if defined (STM32F031x6) || defined (STM32F042x6) || defined (STM32F051x8) || \
399
    defined (STM32F071xB) || defined (STM32F072xB) || \
400
    defined (STM32F091xC)
401
void HAL_PWR_PVD_IRQHandler(void);
402
void HAL_PWR_PVDCallback(void);
403
#endif /* defined (STM32F031x6) || defined (STM32F042x6) || defined (STM32F051x8) || */
404
       /* defined (STM32F071xB) || defined (STM32F072xB) || */
405
       /* defined (STM32F091xC) */
406
 
407
#if defined (STM32F042x6) || defined (STM32F048xx) || \
408
    defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || \
409
    defined (STM32F091xC) || defined (STM32F098xx)
410
void HAL_PWREx_Vddio2Monitor_IRQHandler(void);
411
void HAL_PWREx_Vddio2MonitorCallback(void);
412
#endif /* defined (STM32F042x6) || defined (STM32F048xx) || \
413
          defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || \
414
          defined (STM32F091xC) || defined (STM32F098xx) */
415
 
416
/* Peripheral Control functions  **********************************************/
417
#if defined (STM32F031x6) || defined (STM32F042x6) || defined (STM32F051x8) || \
418
    defined (STM32F071xB) || defined (STM32F072xB) || \
419
    defined (STM32F091xC)
420
void HAL_PWR_ConfigPVD(PWR_PVDTypeDef *sConfigPVD);
421
void HAL_PWR_EnablePVD(void);
422
void HAL_PWR_DisablePVD(void);
423
#endif /* defined (STM32F031x6) || defined (STM32F042x6) || defined (STM32F051x8) || */
424
       /* defined (STM32F071xB) || defined (STM32F072xB) || */
425
       /* defined (STM32F091xC) */
426
 
427
#if defined (STM32F042x6) || defined (STM32F048xx) || \
428
    defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || \
429
    defined (STM32F091xC) || defined (STM32F098xx)
430
void HAL_PWREx_EnableVddio2Monitor(void);
431
void HAL_PWREx_DisableVddio2Monitor(void);
432
#endif /* defined (STM32F042x6) || defined (STM32F048xx) || \
433
          defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx) || \
434
          defined (STM32F091xC) || defined (STM32F098xx) */
435
 
436
/**
437
  * @}
438
  */
439
 
440
/**
441
  * @}
442
  */
443
 
444
/**
445
  * @}
446
  */
447
 
448
/**
449
  * @}
450
  */
451
 
452
#ifdef __cplusplus
453
}
454
#endif
455
 
456
#endif /* __STM32F0xx_HAL_PWR_EX_H */
457
 
458
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
459