/*
* Copyright (c) 2010-2014, 2016 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of The Linux Foundation nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef __TIME_GENOFF_H__
#define __TIME_GENOFF_H__
#ifdef __cplusplus
extern "C" {
#endif
/*
* Time genoff base -- To be used by the time setter
* Reserved bases to be supported later.
*/
typedef enum time_bases {
ATS_RTC = 0,
ATS_TOD,
ATS_USER,
ATS_SECURE,
ATS_DRM,
ATS_RESERVED_2,
ATS_RESERVED_3,
ATS_GPS,
ATS_1X,
ATS_RESERVED_4,
ATS_WCDMA,
ATS_SNTP,
ATS_UTC,
ATS_MODEM,
ATS_MFLO,
ATS_TOD_MODEM,
ATS_WLAN,
ATS_INVALID
} time_bases_type;
/* Time unit -- Unit in which time is set/get */
typedef enum time_unit {
TIME_STAMP, /* Not supported */
TIME_MSEC,
TIME_SECS,
TIME_JULIAN,
TIME_20MS_FRAME, /* Not supported */
TIME_INVALID
} time_unit_type;
/* Operation to be done */
typedef enum time_genoff_opr {
T_SET,
T_GET,
T_IS_SET,
T_DISABLE,
T_ENABLE,
T_MAX
} time_genoff_opr_type;
/* Structure to be passed as argument to time_genoff_operation() */
/*
* In set/get: ts_val should be assigned memory and then passed.
* if time_unit = TIME_MSEC, TIME_SECS then ts_val = (uint64_t *)
* if time_unit = TIME_JULIAN then ts_val = (struct tm *)
*/
typedef struct time_genoff_info {
time_bases_type base; /* Genoff in consideration */
void *ts_val; /* Time to be set/get */
time_unit_type unit; /* Time unit */
time_genoff_opr_type operation; /* Time operation to be done */
}time_genoff_info_type;
/* API to be called for time get/set operation */
int time_genoff_operation(time_genoff_info_type *pargs);
/* API to be called for logging operations */
int time_control_operations(time_genoff_info_type *pargs);
#ifdef __cplusplus
}
#endif
#endif /* __TIME_GENOFF_H__ */