blob: abc02fa903a0608835627ac1fb8c6f46146ec894 [file] [log] [blame]
/*****************************************************************************
* © 2015 Microchip Technology Inc. and its subsidiaries.
* You may use this software and any derivatives exclusively with
* Microchip products.
* THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS".
* NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE,
* INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY,
* AND FITNESS FOR A PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP
* PRODUCTS, COMBINATION WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION.
* IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
* INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
* WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS
* BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE.
* TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL
* CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF
* FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
* MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE
* OF THESE TERMS.
******************************************************************************
Version Control Information (Perforce)
******************************************************************************
$Revision: #1 $
$DateTime: 2016/04/08 10:18:28 $
$Author: pramans $
Last Change: Updated for peripheral functions prefix p_
******************************************************************************/
/** @file btimer_perphl.c
* \brief Hibernation Timer API Source file
* \author jvasanth
*
* This file implements Hibernation Timer APIs
******************************************************************************/
/** @defgroup Hibernation_Timer
* @{
*/
#include "common_lib.h"
#include "htimer.h"
#ifdef PLIB_HTIMER_CHECK_ID
/** Local helper that checks if logical Timer ID is valid.
* @param htimer_id Hibernation Timer ID
* @return uint8_t Non-zero(VALID), 0(Invalid)
*/
static uint8_t htmr_valid(uint8_t htimer_id)
{
if ( htimer_id < (PID_HTIMER_MAX ) ) {
return 1;
}
return 0;
}
#else
/** This version of tmr_valid skips checking always returning 1.
* Compiler may optimize it out.
* @param htimer_id Hibernation Timer ID
* @return uint8_t 1(VALID)
*/
static uint8_t htmr_valid(uint8_t htimer_id) { return 1; }
#endif
/** Enables hibernation timer
* @param htimer_id Hibernation Timer ID
* @param preload_value - 16-bit preload value
* @param resolution_mode 0 - resolution of 30.5us per LSB,
* 1 - resolution of 0.125s per LSB
*/
void htimer_enable(uint8_t htimer_id, uint16_t preload_value, uint8_t resolution_mode)
{
if (htmr_valid(htimer_id))
{
p_htimer_preload_set(htimer_id, preload_value);
p_htimer_resolution_set(htimer_id, resolution_mode);
}
}
/** Disables the hibernation timer by programming the prelaod value as 0
* @param htimer_id Hibernation Timer ID
*/
void htimer_disable(uint8_t htimer_id)
{
if (htmr_valid(htimer_id))
{
p_htimer_preload_set(htimer_id, 0);
}
}
/** Reloads new preload value for the hibernation timer
* @param htimer_id Hibernation Timer ID
* @param reload_value - 16-bit preload value
*/
void htimer_reload(uint8_t htimer_id, uint16_t reload_value)
{
if ( htmr_valid(htimer_id))
{
p_htimer_preload_set(htimer_id, reload_value);
}
}
/* end htimer_api.c */
/** @} //APIs Hibernation_Timer
*/