7、实时数据备份和实时时钟相关定义

\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_

猜你喜欢

转载自blog.csdn.net/turing321_huaide/article/details/118939567