app_save.h 6.52 KB
#ifndef _APP_STORE_H_1
#define _APP_STORE_H_1


extern U8 ROM_SAVE_DATA1_START[];
extern U8 ROM_SAVE_DATA2_START[];

#if 0

#define TIMER_ALARM_POINTER_USED

//used 12 pages.
#define APP_SAVE_BT_MULTI_LINK_PAGE_ADDR   0

#define APP_SAVE_DATA_PAGE_ADDR         ((EEPROM_PAGE_BYTE_16*EEPROM_PAGE_SIZE) * (0+12))

#define APP_SAVE_SYS_PAGE_ADDR          ((EEPROM_PAGE_BYTE_16*EEPROM_PAGE_SIZE) * (1+12))
//#define APP_SAVE_SYS_PAGE_ADDR          ((EEPROM_PAGE_BYTE_16*1) //16*4 bytes in address "0"

#define TUNER_PROG_PRESET_PAGE_ADDR     ((EEPROM_PAGE_BYTE_16*EEPROM_PAGE_SIZE) * (2+12))
//#define APP_SAVE_SYS_PAGE_ADDR          ((EEPROM_PAGE_BYTE_16*2) //16*4 bytes in address "1"

#else

#define TIMER_ALARM_POINTER_USED

#define RESUME_SAVE_TO_EEPROM

#define RESUME_VOLUME_NAME_LEN          11

#define BT_DATA_SAVE_TO_EEPROM




#if defined EEPROM_AT24C01

#define APP_PAGE_OFFSET                 0

#elif defined EEPROM_AT24C02

#define APP_PAGE_OFFSET                 0

#elif defined EEPROM_AT24C04

#define APP_PAGE_OFFSET                 0

#elif defined EEPROM_AT24C08

#if 1
#define BT_EEPROM_OFFSET                (0)

//used 12 pages(12*64=768) in EEPROM_AT24C08:EEPROM_PAGE_BYTE*EEPROM_PAGE_SIZE.
#define APP_SAVE_BT_MULTI_LINK_PAGE_ADDR   (BT_EEPROM_OFFSET) //0-11
#define BT_MULTI_LINK_NEED_PAGE_SIZE    (12)
#endif


#define APP_PAGE_OFFSET                 (BT_MULTI_LINK_NEED_PAGE_SIZE)

#define APP_SAVE_DATA_PAGE_ADDR         (EEPROM_PAGE_BYTE*(APP_PAGE_OFFSET+0)) //need one page,EEPROM_PAGE_BYTE*EEPROM_PAGE_SIZE bytes in address "0"

#define APP_SAVE_SYS_PAGE_ADDR          (EEPROM_PAGE_BYTE*(APP_PAGE_OFFSET+1)) //need one page.

#define TUNER_PROG_PRESET_PAGE_ADDR     (EEPROM_PAGE_BYTE*(APP_PAGE_OFFSET+1+1)) //need two pages.


//#define DAB_PROG_PRESET_PAGE_ADDR       (EEPROM_PAGE_BYTE*(APP_PAGE_OFFSET+1+1+9)) //need one page or two pages.


#ifdef RESUME_SAVE_TO_EEPROM
#if 0
#define RESUME_INFO_PAGE_ADDR           (EEPROM_PAGE_BYTE*(APP_PAGE_OFFSET+1+1+9+2)) //need one page
#else
#define RESUME_INFO_PAGE_ADDR           (EEPROM_PAGE_BYTE*(APP_PAGE_OFFSET+1+1+9+1)) //need one page
#endif
#endif

#elif defined EEPROM_AT24C16


#if 1
#define BT_EEPROM_OFFSET                (0)

//used 12 pages(12*64=768) in EEPROM_AT24C08::EEPROM_PAGE_BYTE*EEPROM_PAGE_SIZE.
//used 6 pages(6*128=768) in EEPROM_AT24C16:EEPROM_PAGE_BYTE*EEPROM_PAGE_SIZE.
#define APP_SAVE_BT_MULTI_LINK_PAGE_ADDR   (BT_EEPROM_OFFSET) //0-5
#define BT_MULTI_LINK_NEDD_PAGE_SIZE    (6)
#endif


#define APP_PAGE_OFFSET                 (0+BT_MULTI_LINK_NEDD_PAGE_SIZE)


#define APP_SAVE_DATA_PAGE_ADDR         (EEPROM_PAGE_BYTE*(APP_PAGE_OFFSET+0)) //0

#define APP_SAVE_SYS_PAGE_ADDR          (EEPROM_PAGE_BYTE*(APP_PAGE_OFFSET+1)) //need 1 page,EEPROM_PAGE_BYTE*EEPROM_PAGE_SIZE bytes in address "0"

#define TUNER_PROG_PRESET_PAGE_ADDR     (EEPROM_PAGE_BYTE*(APP_PAGE_OFFSET+1+1)) //need 2 pages,EEPROM_PAGE_BYTE*EEPROM_PAGE_SIZE bytes in address "1"


#define DAB_PROG_PRESET_PAGE_ADDR       (EEPROM_PAGE_BYTE*(APP_PAGE_OFFSET+1+1+5)) //need 1 page or two pages , EEPROM_PAGE_BYTE*EEPROM_PAGE_SIZE bytes in address "1"


#ifdef RESUME_SAVE_TO_EEPROM
#if 0
#define RESUME_INFO_PAGE_ADDR           (EEPROM_PAGE_BYTE*(APP_PAGE_OFFSET+1+1+5+2)) //need 1 pages, EEPROM_PAGE_BYTE*EEPROM_PAGE_SIZE bytes
#else
#define RESUME_INFO_PAGE_ADDR           (EEPROM_PAGE_BYTE*(APP_PAGE_OFFSET+1+1+5+1)) //need 1 page, EEPROM_PAGE_BYTE*EEPROM_PAGE_SIZE bytes
#endif
#endif


#if 0
//#define BT_EEPROM_OFFSET                (0)
#define BT_EEPROM_OFFSET                (EEPROM_PAGE_BYTE*(APP_PAGE_OFFSET+1+1+5+1+1)) //need 6 pages

//used 12 pages(12*64=768) in EEPROM_AT24C08::EEPROM_PAGE_BYTE*EEPROM_PAGE_SIZE.
//used 6 pages(6*128=768) in EEPROM_AT24C16::EEPROM_PAGE_BYTE*EEPROM_PAGE_SIZE.
#define APP_SAVE_BT_MULTI_LINK_PAGE_ADDR   (BT_EEPROM_OFFSET) //9-15
#define BT_MULTI_LINK_NEDD_PAGE_SIZE    (6)
#endif

#endif

#endif



//#pragma pack(1,1,0)
//#pragma pack(2,2,0)
typedef struct {

	U8 Vol;

#ifdef RTC_SYC_IPHONE_ENABLE
	U8 iPhone_mode;
#endif

	U8 pre_source;

#ifdef USB_COMBINED_WITH_CD
	U8 keyCdUsbSrcIndex;
#endif

#ifdef DEMO_FUNC_DISP_STORE
	U8 demo_func_disp;
#endif

#ifdef AUX_MULTI_INPUT
	U8 aux_input_num;
#endif

#if (defined TUNER_MODULE || defined DAB_FRONTIER_FSAPI)

#ifdef RTC_SYC_TUNER_ENABLE
	U8 ct_mode;
#endif

	U8 tn_pty_search_no;

	U16 MW_Cur_Freq;
	U16 FM_Cur_Freq;

//	U8 tuner_prog_flag;

	U8 tuner_band;
	U8 MonostereoMod;

#endif //TUNER_MODULE

} __attribute__ ((packed)) APP_SAVE_DATA;
//} APP_SAVE_DATA;

//if saving to sFlash, used the "ROM_SAVE_DATA_START" address, the space must be times 4.
extern APP_SAVE_DATA app_save_data;



typedef struct {
	U8 volume;
	U8 eq_mode;
	U8 bass_mode;
	U8 bass_volume;
	U8 treble_volume;
	U8 x_bass;
	U8 dimmer;

	U8 pre_eq;
	U8 pre_surround;
	U8 pre_source;
	U8 pre_standby;
//	U8 pre_standby_status;

//	sRTCTime rtc;
	U8 time_clock; //the flag of clock setting
	U8 clock_12h;  //"1" is 12 hours "0" is 24 hours
	U8 hours;
	U8 minutes;
	U8 weekdays;

} APP_SAVE_SYS_DATA;

//if saving to sFlash, used the "ROM_SAVE_DATA1_START" address, the space must be times 4
//extern APP_SAVE_SYS_DATA app_save_sys_data


typedef struct {

#if (defined TUNER_MODULE || defined DAB_FRONTIER_FSAPI)
	
//	U8 preset_number;
	U8 fm_preset_number;
	U8 am_preset_number;

	U16 preset_freq[TN_MAX_PRESET];
	
#ifndef TUNER_STERO_FIXATION
	TUNER_STEREO_FLAG stereo_flag[2];
#endif
	
#endif //TUNER_MODULE

} APP_SAVE_TUNER_DATA;


//if saving to sFlash, used the "ROM_SAVE_DATA2_START" address,  the space must be times 4
extern APP_SAVE_TUNER_DATA app_save_tuner_data;


#ifdef TIMER_ALARM_POINTER_USED

typedef struct {
	TIMER_ALARM *timer_alarm;
} APP_SAVE_TIMER_ALRM;

#else

typedef struct {
	TIMER_ALARM timer_alarm[TIMER_NUMBER];
} APP_SAVE_TIMER_ALARM;

#endif


extern U8 ROM_TIMER_ALARM_STORE_DATA_START[];

extern U8 ROM_DAB_STORE_DATA_START[];
extern U8 ROM_DAB_STORE_DATA_END[];


void app_save_system_data_init(void);
void app_save_system_data(void);

void app_save_tuner_preset_init(void);
void app_save_tuner_preset_reset(void);
void app_save_tuner_preset(U32 kFreq, U8 presetNum);

U8 app_save_tuner_preset_number_get(void);
U8 app_save_tuner_preset_stereo_flag_get(U8 presetNum);

//saving current station for "PRESET +" or "PRESET -"
void app_save_tuner_current_preset_freq(U32 kFreq, U8 presetNum);

//saving current station for "PRESET +" or "PRESET -"
void app_save_current_station(U32 kFeq);

void app_save_timer_alarm_data_write(void);
U8 bt_flash_is_optek_role_btaddr_present(void);
u8* bt_flash_get_optek_role_btaddr(void);
void bt_flash_set_optek_role_btaddr(u8 *mac_id);


#endif //_APP_STORE_H_1