\qquad 下面是HD-GR GNSS导航软件的实时数据备份和实时时钟相关定义:
// rtc.h -- Header file for the rtc.c file
/*
* Copyright (C) 2005 Andrew Greenberg
* Distributed under the GNU GENERAL PUBLIC LICENSE (GPL) Version 2 (June 1991).
* See the "COPYING" file distributed with this software for more information.
*/
/*
* HD-GR GNSS receiver project
* Modes : None
* version : V1.0
* date : xx/xx/2015
*/
#ifndef RTC_H_
#define RTC_H_
#include "gnsstime.h"
#include "main_position.h"
#include "gps_almanac.h"
#include "b1i_almanac.h"
/*******************************************************************************
* Definitions
******************************************************************************/
#define BACKUP_HEADER_SIGNATURE 0xABABABAB
/*******************************************************************************
* Declarations
******************************************************************************/
// flash数据备份头结构
typedef struct {
unsigned long signature;
unsigned long data_size;
stdtime_t data_time;
} backup_header_t;
// flash数据备份体结构
typedef struct {
pvt_t rec_pvt;
neu_t rec_neu;
almanac_t gps_alm[32];
} backup_body_t;
// flash数据备份结构:
// (1) 备份数据在程序启动时调用cycgps_init_backup读取;
// (2) 每30分钟调用一次cycgps_save_backup进行保存。
typedef struct {
backup_header_t header;
backup_body_t body;
} flash_backup_t;
// 返回0表示成功,否则表示失败
int flash_read_backup(int offset,void* dest_addr,int length);
// 返回0表示成功,否则表示失败
int flash_write_backup(int offset,void* dest_addr,int length);
// 返回0表示成功,否则表示失败
int cycgps_init_backup(void);
// 返回0表示成功,否则表示失败
int cycgps_save_backup(void);
/*
* Name: iic_start
* Description: IIC启动
*/
void iic_start(void);
/*
* Name: iic_stop
* Description: IIC停止
*/
void iic_stop(void);
/*
* Name: iic_write
* Description: IIC写一个字节
*/
void iic_write(alt_u8 dat);
/*
* Name: iic_read
* Description: IIC读一个字节
*/
alt_u8 iic_read(void);
/*
* Name: iic_ack
* Description: 发出IIC应答或非应答信号
*/
void iic_ack(int a);
/*
* Name: rtc_write_byte
* Description: 向RTC写一个字节
* Return: 1表示成功
*/
int rtc_write_byte(alt_u8 addr, alt_u8 dat);
/*
* Name: rtc_write_multibytes
* Description: 向RTC写多个字节
* Return: 1表示成功
*/
int rtc_write_multibytes(alt_u8 addr, alt_u8 suba, alt_u8 *dat, int no);
/*
* Name: rtc_read_byte
* Description: 从RTC读一个字节
* Return: 1表示成功
*/
int rtc_read_byte(alt_u8 addr, alt_u8 *c);
/*
* Name: rtc_read_multibytes
* Description: 从RTC读多个字节
* Return: 1表示成功
*/
int rtc_read_multibytes(alt_u8 addr, alt_u8 suba, alt_u8 *dat, int no);
/*
* Description: 设置时间信息
* Return: 1表示成功
*/
int ds32x35_set_time(stdtime_t st, double gsts);
/*
* Description: 获取时间信息
* Return: 1表示成功
*/
int ds32x35_get_time(stdtime_t *pst);
/*
* Description: 检查时间设置情况,如果未设置,需要时进行设置
* Return: 1表示进行了设置, 0表示保持现有设置,-1表示错误
*/
int ds32x35_check_set_time(void);
/*******************************************************************************
* Externs
******************************************************************************/
extern int m_rtc_inited;
#endif // RTC_H_