232 lines
5.3 KiB
C
232 lines
5.3 KiB
C
#ifndef _TIP_COMMON_H_
|
|
#define _TIP_COMMON_H_
|
|
|
|
/**
|
|
****************************************************************************************
|
|
* @addtogroup TIP Time Profile
|
|
* @ingroup PROFILE
|
|
* @brief Time Profile
|
|
*****************************************************************************************
|
|
*/
|
|
|
|
/*
|
|
* INCLUDE FILES
|
|
****************************************************************************************
|
|
*/
|
|
|
|
|
|
#include "prf_types.h"
|
|
#include <stdint.h>
|
|
|
|
/*
|
|
* ENUMERATIONS
|
|
****************************************************************************************
|
|
*/
|
|
|
|
///Adjust Reason Flags field bit values
|
|
enum
|
|
{
|
|
TIPS_FLAG_MAN_TIME_UPDATE = 0x01,
|
|
TIPS_FLAG_EXT_TIME_UPDATE = 0x02,
|
|
TIPS_FLAG_CHG_TIME_ZONE = 0x04,
|
|
TIPS_FLAG_DST_CHANGE = 0x08,
|
|
};
|
|
|
|
///Time Update Control Point Key values
|
|
enum
|
|
{
|
|
TIPS_TIME_UPD_CTNL_PT_GET = 0x01,
|
|
TIPS_TIME_UPD_CTNL_PT_CANCEL,
|
|
};
|
|
|
|
///Time Update State Current State Key Values
|
|
enum
|
|
{
|
|
TIPS_TIME_UPD_STATE_IDLE = 0x00,
|
|
TIPS_TIME_UPD_STATE_PENDING,
|
|
};
|
|
|
|
///Time Update State Result Key Values
|
|
enum
|
|
{
|
|
TIPS_TIME_UPD_RESULT_SUCCESS = 0x00,
|
|
TIPS_TIME_UPD_RESULT_CANCELED,
|
|
TIPS_TIME_UPD_RESULT_NO_CONN,
|
|
TIPS_TIME_UPD_RESULT_ERROR_RSP,
|
|
TIPS_TIME_UPD_RESULT_TIMEOUT,
|
|
TIPS_TIME_UPD_NOT_ATTEMPTED,
|
|
};
|
|
|
|
///Time Profile Supported Features bit flags
|
|
enum
|
|
{
|
|
///NDCS bit
|
|
///NDCS supported
|
|
TIPS_NDCS_SUPPORTED = 0x01,
|
|
|
|
///RTUS bit
|
|
///RTUS supported
|
|
TIPS_RTUS_SUPPORTED = 0x02,
|
|
};
|
|
|
|
enum
|
|
{
|
|
TIP_RD_RSP = 0x00,
|
|
TIP_NTF = 0x01,
|
|
};
|
|
|
|
/*
|
|
* TYPE DEFINITIONS
|
|
****************************************************************************************
|
|
*/
|
|
|
|
|
|
/*
|
|
* STRUCTURES
|
|
****************************************************************************************
|
|
*/
|
|
|
|
/**
|
|
* Each of the following structure is related to a characteristic.
|
|
*/
|
|
|
|
/*
|
|
* Current Time Service
|
|
*/
|
|
|
|
///Current Time Characteristic Structure
|
|
struct tip_curr_time
|
|
{
|
|
/// Date time
|
|
struct prf_date_time date_time;
|
|
/// Day of the week
|
|
uint8_t day_of_week;
|
|
/// 1/256th of a second
|
|
uint8_t fraction_256;
|
|
/// Adjust reason
|
|
uint8_t adjust_reason;
|
|
};
|
|
|
|
/**
|
|
*
|
|
* Time Zone Characteristic - UUID:0x2A0E
|
|
* Min value : -48 (UTC-12:00), Max value : 56 (UTC+14:00)
|
|
* -128 : Time zone offset is not known
|
|
*/
|
|
typedef int8_t tip_time_zone;
|
|
|
|
/**
|
|
* DST Offset Characteristic - UUID:0x2A2D
|
|
* Min value : 0, Max value : 8
|
|
* 255 = DST is not known
|
|
*/
|
|
typedef uint8_t tip_dst_offset;
|
|
|
|
///Local Time Info Characteristic Structure - UUID:0x2A0F
|
|
struct tip_loc_time_info
|
|
{
|
|
tip_time_zone time_zone;
|
|
tip_dst_offset dst_offset;
|
|
};
|
|
|
|
/**
|
|
* Time Source Characteristic - UUID:0x2A13
|
|
* Min value : 0, Max value : 6
|
|
* 0 = Unknown
|
|
* 1 = Network Time Protocol
|
|
* 2 = GPS
|
|
* 3 = Radio Time Signal
|
|
* 4 = Manual
|
|
* 5 = Atomic Clock
|
|
* 6 = Cellular Network
|
|
*/
|
|
typedef uint8_t tip_time_source;
|
|
|
|
/**
|
|
* Time Accuracy Characteristic - UUID:0x2A12
|
|
* Accuracy (drift) of time information in steps of 1/8 of a second (125ms) compared
|
|
* to a reference time source. Valid range from 0 to 253 (0s to 31.5s). A value of
|
|
* 254 means Accuracy is out of range (> 31.5s). A value of 255 means Accuracy is
|
|
* unknown.
|
|
*/
|
|
typedef uint8_t tip_time_accuracy;
|
|
|
|
///Reference Time Info Characteristic Structure - UUID:0x2A14
|
|
struct tip_ref_time_info
|
|
{
|
|
tip_time_source time_source;
|
|
tip_time_accuracy time_accuracy;
|
|
/**
|
|
* Days since last update about Reference Source
|
|
* Min value : 0, Max value : 254
|
|
* 255 = 255 or more days
|
|
*/
|
|
uint8_t days_update;
|
|
/**
|
|
* Hours since update about Reference Source
|
|
* Min value : 0, Mac value : 23
|
|
* 255 = 255 or more days (If Days Since Update = 255, then Hours Since Update shall
|
|
* also be set to 255)
|
|
*/
|
|
uint8_t hours_update;
|
|
};
|
|
|
|
/*
|
|
* Next DST Change Service
|
|
*/
|
|
///Time With DST Characteristic Structure - UUID:0x2A11
|
|
struct tip_time_with_dst
|
|
{
|
|
///Date and Time of the Next DST Change
|
|
struct prf_date_time date_time;
|
|
///DST Offset that will be in effect after this change
|
|
tip_dst_offset dst_offset;
|
|
};
|
|
|
|
/*
|
|
* Reference Time Update Service
|
|
*/
|
|
/**
|
|
* Time Update Control Point Characteristic - UUID:0x2A16
|
|
* The Time Update Control Point Characteristic enables a client to issue a command
|
|
* request to update the time in the time server.
|
|
* 0x01 = Get Reference Update = Forces the state machine to Update Pending and
|
|
* starts the time update procedure
|
|
* 0x02 = Cancel Reference Update = Forces the state machine to idle and stops the
|
|
* attempt to receive a time update.
|
|
*/
|
|
typedef uint8_t tip_time_upd_contr_pt;
|
|
|
|
///Time Update State Characteristic Structure - UUID:0x2A17
|
|
struct tip_time_upd_state
|
|
{
|
|
/**
|
|
* The Time Update Status Characteristic exposes the status of the time update
|
|
* process and the result of the last update in the server.
|
|
*/
|
|
|
|
/**
|
|
* Current State
|
|
* Min value : 0, Max value = 1
|
|
* 0 = Idle
|
|
* 1 = Update Pending
|
|
*/
|
|
uint8_t current_state;
|
|
/**
|
|
* Result
|
|
* Min value : 0, Max Value : 5
|
|
* 0 = Successful
|
|
* 1 = Canceled
|
|
* 2 = No Connection To Reference
|
|
* 3 = Reference responded with an error
|
|
* 4 = Timeout
|
|
* 5 = Update not attempted after reset
|
|
*/
|
|
uint8_t result;
|
|
};
|
|
|
|
|
|
/// @} tip_common
|
|
|
|
#endif /* _TIP_COMMON_H_ */
|