Home | History | Annotate | Download | only in time-services
      1 /*
      2  * Copyright (c) 2010-2014, The Linux Foundation. All rights reserved.
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions are met:
      6  *  * Redistributions of source code must retain the above copyright
      7  *    notice, this list of conditions and the following disclaimer.
      8  *  * Redistributions in binary form must reproduce the above copyright
      9  *    notice, this list of conditions and the following disclaimer in the
     10  *    documentation and/or other materials provided with the distribution.
     11  *  * Neither the name of The Linux Foundation nor the names of its contributors
     12  *    may be used to endorse or promote products derived from this software
     13  *    without specific prior written permission.
     14  *
     15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
     16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     17  * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
     18  * NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     19  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     20  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     21  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
     22  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     23  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
     24  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
     25  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     26  *
     27  */
     28 
     29 #ifndef __TIME_GENOFF_H__
     30 #define __TIME_GENOFF_H__
     31 
     32 #ifdef __cplusplus
     33 extern "C" {
     34 #endif
     35 
     36 /*
     37  * Time genoff base -- To be used by the time setter
     38  * Reserved bases to be supported later.
     39  */
     40 typedef enum time_bases {
     41 	ATS_RTC = 0,
     42 	ATS_TOD,
     43 	ATS_USER,
     44 	ATS_SECURE,
     45 	ATS_RESERVED_1,
     46 	ATS_RESERVED_2,
     47 	ATS_RESERVED_3,
     48 	ATS_GPS,
     49 	ATS_1X,
     50 	ATS_RESERVED_4,
     51 	ATS_WCDMA,
     52 	ATS_SNTP,
     53 	ATS_UTC,
     54 	ATS_MODEM,
     55 	ATS_MFLO,
     56 	ATS_INVALID
     57 } time_bases_type;
     58 
     59 /* Time unit -- Unit in which time is set/get */
     60 typedef enum time_unit {
     61 	TIME_STAMP,		/* Not supported */
     62 	TIME_MSEC,
     63 	TIME_SECS,
     64 	TIME_JULIAN,
     65 	TIME_20MS_FRAME,	/* Not supported */
     66 	TIME_INVALID
     67 } time_unit_type;
     68 
     69 /* Operation to be done */
     70 typedef enum time_genoff_opr {
     71 	T_SET,
     72 	T_GET,
     73 	T_IS_SET,
     74 	T_DISABLE,
     75 	T_ENABLE,
     76 	T_MAX
     77 } time_genoff_opr_type;
     78 
     79 /* Structure to be passed as argument to time_genoff_operation() */
     80 /*
     81  * In set/get: ts_val should be assigned memory and then passed.
     82  * if time_unit = TIME_MSEC, TIME_SECS then ts_val = (uint64_t *)
     83  * if time_unit = TIME_JULIAN then ts_val = (struct tm *)
     84  */
     85 typedef struct time_genoff_info {
     86 	time_bases_type base;		/* Genoff in consideration */
     87 	void *ts_val;			/* Time to be set/get */
     88 	time_unit_type unit;		/* Time unit */
     89 	time_genoff_opr_type operation; /* Time operation to be done */
     90 }time_genoff_info_type;
     91 
     92 /* API to be called for time get/set operation */
     93 int time_genoff_operation(time_genoff_info_type *pargs);
     94 
     95 /* API to be called for logging operations */
     96 int time_control_operations(time_genoff_info_type *pargs);
     97 
     98 #ifdef __cplusplus
     99 }
    100 #endif
    101 
    102 #endif /* __TIME_GENOFF_H__ */
    103