419 lines
10 KiB
C
419 lines
10 KiB
C
#ifndef _SF_MCU_H
|
|
#define _SF_MCU_H
|
|
|
|
|
|
|
|
#ifdef __KERNEL__
|
|
#include <linux/delay.h>
|
|
//#include <mach/rcw_macro.h>
|
|
#include "kwrap/type.h"
|
|
//#include "kwrap/semaphore.h"
|
|
#include "kwrap/flag.h"
|
|
//#include "sf_ip6303.h"
|
|
#include <linux/i2c.h>
|
|
#include <linux/slab.h>
|
|
//#include "kflow_audiocapture/ctl_aud.h"
|
|
#else
|
|
#include "kwrap/type.h"
|
|
//#include "kwrap/semaphore.h"
|
|
#include "kwrap/flag.h"
|
|
//#include "sf_ip6303.h"
|
|
//#include "kflow_audiocapture/ctl_aud.h"
|
|
//#include <linux/i2c.h>
|
|
//#include <linux/i2c-dev.h>
|
|
#endif
|
|
#include "sf_param_struct.h"
|
|
|
|
#define SUCCESS 0
|
|
#define FAIL 1
|
|
#define SF_MCU_NIGHT_MODE_LUMINANCE 160
|
|
#define DIGITAL_PIR 1
|
|
|
|
#define SF_LI_BATT_RECOVERY 99
|
|
#define SF_OTHER_BATT_RECOVERY 99
|
|
#define SF_BATT_RECOVERY 72 //S530
|
|
|
|
/*REG START MODE*/
|
|
#define MCU_MODE_AUTO 0x00
|
|
#define MCU_MODE_OFF 0x40
|
|
#define MCU_MODE_SETUP 0x80
|
|
|
|
#define PWR_OFF 0x00
|
|
#define PWR_ON_SETUP 0x01
|
|
#define PWR_ON_TIMELAPSE 0x02
|
|
#define PWR_ON_AUTO 0x03
|
|
#define PWR_ON_SMS 0x04
|
|
#define PWR_ON_PIR 0x05
|
|
#define PWR_ON_LBAT 0x06
|
|
#define PWR_ON_SERVER 0x07
|
|
#define PWR_ON_DAILY_REPORT 0x08
|
|
#define PWR_ON_USB 0x09
|
|
#define PWR_ON_GPRS_INIT 0x0A
|
|
#define PWR_ON_TIME_SYNC 0x0B
|
|
#define PWR_ON_TIME_SEND 0x0C
|
|
#define PWR_ON_MCU_UPDATA 0x0F
|
|
|
|
/*REG FUNCTION_SWTICH*/
|
|
#define PIR_OFF 0x00
|
|
#define PIR_ON 0x01
|
|
#define TIMELAPSE_ON 0x02
|
|
#define PIR_DELAY_ON 0x04
|
|
#define TIME_SYNC_ON 0x08
|
|
#define DAILY_REPORT_ON 0x10
|
|
#define DAILY_SEND1_ON 0x20
|
|
#define DAILY_SEND2_ON 0x40
|
|
#define GPS_ALWAYS_ON 0x80
|
|
|
|
/*REG PIR_SENSITIVITY*/
|
|
#define DIGITAL_PIR_SENSITIVITY_MASK 0xFF
|
|
#define GPRS_ON 0x80
|
|
#define GPRS_MODE_MASK 0x60
|
|
#define GPRS_DAILY 0x00
|
|
#define GPRS_INSTANT 0x40
|
|
#define GPRS_HYBRID 0x20
|
|
#define TIME_SYNC_RESET 0x10
|
|
#define PIR_SEN_HIGH 0x00
|
|
#define PIR_SEN_MIDDLE 0x01
|
|
#define PIR_SEN_LOW 0x02
|
|
|
|
/*REG DSP_BUSY*/
|
|
#define DSP_BUSY 0x01
|
|
#define DSP_IDLE 0x00
|
|
|
|
/*REG SYS_STATUS*/
|
|
#define SYS_SD_INSERT 0x01
|
|
#define SYS_MENORY_FULL 0x02
|
|
#define SYS_USB_INSERT 0x04
|
|
#define SYS_SOFT_UPDATE 0x08
|
|
#define GPRS_RESTART 0x10
|
|
#define POWER_CYCLE 0x20
|
|
#define SYS_CAM_OFF 0x40
|
|
#define PIR_RESTART 0x80
|
|
|
|
/*REG POWEROFF_TYPE*/
|
|
#define PWROFF_NOUSE 0x00
|
|
#define PWROFF_GPRS_INIT 0x01
|
|
#define PWROFF_SMS_RESTART 0x02
|
|
#define PWROFF_LBAT 0x40
|
|
#define PWROFF_TIMEOUT 0x80
|
|
|
|
/*REG GPS_POWER_TIMER_CLEAR */
|
|
#define GPS_COUNTDOWM_RESET 0x01
|
|
|
|
/*REG GPS_POWER_CTRL */
|
|
#define GPS_PWR_ON 0x01
|
|
|
|
/*REG FUNCTION_SWTICH1*/
|
|
#define DAILY_SEND3_ON 0x01
|
|
#define DAILY_SEND4_ON 0x02
|
|
|
|
/*REG FUNCTION_SWTICH2*/
|
|
#define WDT_OFF 0x01
|
|
#define DEBUG_MODE_ON 0x02
|
|
|
|
#if 0//defined(_MODEL_565_HUNTING_EVB_LINUX_4G_S530_)
|
|
#define REG_SIZE 82
|
|
|
|
typedef enum
|
|
{
|
|
MCU_SUB_VER,
|
|
MCU_VER,
|
|
START_MODE,
|
|
LUMINANCE_L,
|
|
LUMINANCE_H,
|
|
SF_RTC_YEAR,
|
|
SF_RTC_MONTH,
|
|
SF_RTC_DAY,
|
|
SF_RTC_HOUR,
|
|
SF_RTC_MINUTE,
|
|
SF_RTC_SEC,//10
|
|
SF_RTC_WEEK,
|
|
FUNCTION_SWTICH,
|
|
TIMELAPSE_HOUR,
|
|
TIMELAPSE_MINUTE,
|
|
TIMELAPSE_SEC,
|
|
PIR_DELAY_HOUR,
|
|
PIR_DELAY_MINUTE,
|
|
PIR_DELAY_SEC,
|
|
TIME_SYNC_HOUR,
|
|
TIME_SYNC_MINUTE,//20
|
|
TIME_SYNC_SEC,
|
|
DAILY_REPORT_HOUR,
|
|
DAILY_REPORT_MINUTE,
|
|
DAILY_SEND1_HOUR,
|
|
DAILY_SEND1_MINUTE,
|
|
DAILY_SEND2_HOUR,
|
|
DAILY_SEND2_MINUTE,
|
|
ANALOG_PIR_SENSITIVITY,
|
|
DIGITAL_PIR_SENSITIVITY,
|
|
DIGITAL_PIR_CFG,//30
|
|
DSP_BUSY_STATUS,
|
|
SF_SYS_STATUS,
|
|
POWEROFF_TYPE,
|
|
WDT_TIME,
|
|
VBAT_LOW_WARN_VAL,
|
|
VBAT_RECOVER_VAL,
|
|
|
|
WORKTIME1_SWITCH,
|
|
WORKTIME1_START_HOUR,
|
|
WORKTIME1_START_MINUTE,
|
|
WORKTIME1_STOP_HOUR,//40
|
|
WORKTIME1_STOP_MINUTE,
|
|
|
|
WORKTIME2_SWITCH,
|
|
WORKTIME2_START_HOUR,
|
|
WORKTIME2_START_MINUTE,
|
|
WORKTIME2_STOP_HOUR,
|
|
WORKTIME2_STOP_MINUTE,
|
|
|
|
WORKTIME3_SWITCH,
|
|
WORKTIME3_START_HOUR,
|
|
WORKTIME3_START_MINUTE,
|
|
WORKTIME3_STOP_HOUR,//50
|
|
WORKTIME3_STOP_MINUTE,
|
|
|
|
WORKTIME4_SWITCH,
|
|
WORKTIME4_START_HOUR,
|
|
WORKTIME4_START_MINUTE,
|
|
WORKTIME4_STOP_HOUR,
|
|
WORKTIME4_STOP_MINUTE,
|
|
|
|
WORKTIME5_SWITCH,
|
|
WORKTIME5_START_HOUR,
|
|
WORKTIME5_START_MINUTE,
|
|
WORKTIME5_STOP_HOUR,//60
|
|
WORKTIME5_STOP_MINUTE,
|
|
|
|
WORKTIME6_SWITCH,
|
|
WORKTIME6_START_HOUR,
|
|
WORKTIME6_START_MINUTE,
|
|
WORKTIME6_STOP_HOUR,
|
|
WORKTIME6_STOP_MINUTE,
|
|
|
|
GPS_POWER_TIMER_CLEAR,
|
|
GPS_POWER_CTRL,
|
|
DSP_WRITE_FLG,
|
|
FUNCTION_SWTICH1,//70
|
|
DAILY_SEND3_HOUR,
|
|
DAILY_SEND3_MINUTE,
|
|
DAILY_SEND4_HOUR,
|
|
DAILY_SEND4_MINUTE,
|
|
FUNCTION_SWTICH2,
|
|
RESERVER7,
|
|
RESERVER8,
|
|
RESERVER9,
|
|
RESERVER10,
|
|
RESERVER11,//80
|
|
RESERVER12,
|
|
RESERVER13,
|
|
RESERVER14,
|
|
}PARA_REG;
|
|
#endif
|
|
|
|
typedef enum {
|
|
POWEROFF_COUNTDOWN = 1,
|
|
POWEROFF_PVDOWN,
|
|
POWEROFF_KEYDOWN,
|
|
POWEROFF_KEYREBOOT,
|
|
POWEROFF_GPRSREBOOT,
|
|
POWEROFF_KEYOFF
|
|
}POWEROFF_MODE;
|
|
|
|
typedef enum {
|
|
TRIG_MOTION = 1,
|
|
TRIG_TIMELAPSE,
|
|
TRIG_SETUP,
|
|
TRIG_COMMOND,
|
|
}TRIG_TYPE;
|
|
|
|
|
|
typedef enum {
|
|
WORKING_TIME_0 = 0,
|
|
WORKING_TIME_1,
|
|
WORKING_TIME_2,
|
|
WORKING_TIME_3,
|
|
WORKING_TIME_4,
|
|
WORKING_TIME_5,
|
|
WORKING_TIME_ALL = 0xff,
|
|
}WORKING_TIME_TYPE;
|
|
|
|
//#elif defined(_MODEL_565_HUNTING_EVB_LINUX_4G_68CS_)
|
|
#if 1
|
|
|
|
#define REG_SIZE 91
|
|
|
|
typedef enum
|
|
{
|
|
MCU_SUB_VER = 0,
|
|
MCU_VER_L = 1,
|
|
MCU_VER_H = 2,
|
|
MCU_PRODUCT_INFO = 3,
|
|
START_MODE = 4,
|
|
LUMINANCE_L = 5,
|
|
LUMINANCE_H = 6,
|
|
RESERVER1 = 7,
|
|
|
|
SF_RTC_YEAR = 8,
|
|
SF_RTC_MONTH = 9,
|
|
SF_RTC_DAY = 10,
|
|
SF_RTC_HOUR = 11,
|
|
SF_RTC_MINUTE = 12,
|
|
SF_RTC_SEC = 13,
|
|
SF_RTC_WEEK = 14,
|
|
FUNCTION_SWTICH0 = 15,
|
|
FUNCTION_SWTICH1 = 16,
|
|
FUNCTION_SWTICH2 = 17,
|
|
RESERVER2 = 18,
|
|
|
|
GPS_POWER_TIMER_CLEAR = 19,
|
|
GPS_POWER_CTRL = 20,
|
|
ANALOG_PIR_SENSITIVITY = 21,
|
|
DIGITAL_PIR_SENSITIVITY= 22,
|
|
DIGITAL_PIR_CFG = 23,
|
|
DSP_BUSY_STATUS = 24,
|
|
SF_SYS_STATUS = 25,
|
|
RESERVER3 = 26,
|
|
|
|
POWEROFF_TYPE = 27,
|
|
WDT_TIME = 28,
|
|
VBAT_LOW_WARN_VAL = 29,
|
|
VBAT_RECOVER_VAL = 30,
|
|
RESERVER4 = 31,
|
|
|
|
TIMELAPSE_HOUR = 32,
|
|
TIMELAPSE_MINUTE = 33,
|
|
TIMELAPSE_SEC = 34,
|
|
PIR_DELAY_HOUR = 35,
|
|
PIR_DELAY_MINUTE = 36,
|
|
PIR_DELAY_SEC = 37,
|
|
TIME_SYNC_HOUR = 38,
|
|
TIME_SYNC_MINUTE = 39,
|
|
TIME_SYNC_SEC = 40,
|
|
DAILY_REPORT_HOUR = 41,
|
|
DAILY_REPORT_MINUTE = 42,
|
|
DAILY_SEND1_HOUR = 43,
|
|
DAILY_SEND1_MINUTE = 44,
|
|
DAILY_SEND2_HOUR = 45,
|
|
DAILY_SEND2_MINUTE = 46,
|
|
DAILY_SEND3_HOUR = 47,
|
|
DAILY_SEND3_MINUTE = 48,
|
|
DAILY_SEND4_HOUR = 49,
|
|
DAILY_SEND4_MINUTE = 50,
|
|
RESERVER5 = 51,
|
|
RESERVER6 = 52,
|
|
RESERVER7 = 53,
|
|
|
|
WORKTIME1_SWITCH = 54,
|
|
WORKTIME1_START_HOUR = 55,
|
|
WORKTIME1_START_MINUTE = 56,
|
|
WORKTIME1_STOP_HOUR = 57,
|
|
WORKTIME1_STOP_MINUTE = 58,
|
|
|
|
WORKTIME2_SWITCH = 59,
|
|
WORKTIME2_START_HOUR = 60,
|
|
WORKTIME2_START_MINUTE = 61,
|
|
WORKTIME2_STOP_HOUR = 62,
|
|
WORKTIME2_STOP_MINUTE = 63,
|
|
|
|
WORKTIME3_SWITCH = 64,
|
|
WORKTIME3_START_HOUR = 65,
|
|
WORKTIME3_START_MINUTE = 66,
|
|
WORKTIME3_STOP_HOUR = 67,
|
|
WORKTIME3_STOP_MINUTE = 68,
|
|
|
|
WORKTIME4_SWITCH = 69,
|
|
WORKTIME4_START_HOUR = 70,
|
|
WORKTIME4_START_MINUTE = 71,
|
|
WORKTIME4_STOP_HOUR = 72,
|
|
WORKTIME4_STOP_MINUTE = 73,
|
|
|
|
WORKTIME5_SWITCH = 74,
|
|
WORKTIME5_START_HOUR = 75,
|
|
WORKTIME5_START_MINUTE = 76,
|
|
WORKTIME5_STOP_HOUR = 77,
|
|
WORKTIME5_STOP_MINUTE = 78,
|
|
|
|
WORKTIME6_SWITCH = 79,
|
|
WORKTIME6_START_HOUR = 80,
|
|
WORKTIME6_START_MINUTE = 81,
|
|
WORKTIME6_STOP_HOUR = 82,
|
|
WORKTIME6_STOP_MINUTE = 83,
|
|
|
|
DSP_WRITE_FLG = 84,
|
|
|
|
RESERVER8 = 85,
|
|
RESERVER9 = 86,
|
|
RESERVER10 = 87,
|
|
RESERVER11 = 88,
|
|
RESERVER12 = 89,
|
|
RESERVER13 = 90,
|
|
}PARA_REG;
|
|
|
|
#endif
|
|
|
|
|
|
typedef enum {
|
|
SF_MCU_STARTMODE = 0,
|
|
SF_MCU_POWERON,
|
|
SF_MCU_POWEROFF,
|
|
SF_MCU_CTRL_MODULE_PIR,
|
|
SF_MCU_PARA,
|
|
SF_MCU_RESET_MODULE,
|
|
SF_MCU_SOFT_UPDATE,
|
|
SF_MCU_POWER_RESTART,
|
|
SF_MCU_PIR_RESTART,
|
|
SF_MCU_TEST_PIR,
|
|
SF_MCU_PARAM_MAX
|
|
} MCUParam_t;
|
|
|
|
|
|
|
|
typedef enum {
|
|
APP_POWER_OFF_NORMAL,
|
|
APP_POWER_OFF_LENS_ERROR,
|
|
APP_POWER_OFF_BATT_EMPTY,
|
|
APP_POWER_OFF_CHARGE_ERROR,
|
|
APP_POWER_OFF_CARD_PLUG,
|
|
APP_POWER_OFF_USB_PLUG,
|
|
APP_POWER_OFF_TV_PLUG,
|
|
APP_POWER_OFF_HDMI_PLUG,
|
|
APP_POWER_OFF_VIDEO_REC_ERROR, /*slow card, fail to video recording*/
|
|
APP_POWER_OFF_APO,
|
|
} appUiPowerOff_e;
|
|
|
|
void sf_mcu_dataready_ck(UINT8 startMode);
|
|
void sf_mcu_dataready_get(void);
|
|
UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val);
|
|
UINT32 sf_gpio_get_status(UINT32 ipin);
|
|
UINT8 sf_mcu_wdg_set(UINT8 value);
|
|
UINT8 sf_get_power_on_mode(void);
|
|
int sf_mcu_init(void);
|
|
extern BOOL GxUSB_GetIsUSBPlug(void);
|
|
UINT8 sf_mcu_write_multi(UINT8 reg[], UINT8 data[], UINT32 num);
|
|
BOOL sf_get_mode_flag(void);
|
|
BOOL sf_is_usb_flag(void);
|
|
void sf_calculate_daily_report(UINT8*dailyHour, UINT8*dailyMin);
|
|
void sf_set_power_off_flag(UINT8 flag);
|
|
UINT8 sf_get_power_off_flag(void);
|
|
int sf_while_flag(void);
|
|
UINT8 sf_mcu_power_on_para_get(MCUParam_t attrId);
|
|
void sf_set_sim_insert(INT32 sim);
|
|
UINT8 sf_get_mcu_rtc_set_sys(void);
|
|
unsigned short sf_get_mcu_ver(void);
|
|
UINT16 sf_mcu_get_irshtter(void);
|
|
void sf_mcu_set_irshtter(UINT16 data);
|
|
UINT16 sf_get_irshtter(void);
|
|
void sf_set_power_on_mode(UINT8 data);
|
|
UINT8 sf_cardv_convert_power_on_mode(void);
|
|
void sf_set_module_sleep_flag(UINT8 flag);
|
|
void sf_set_mcu_sub_ver(unsigned char mcuSubVersion);
|
|
void sf_set_mcu_ver(unsigned short mcuVersion);
|
|
SINT32 sf_sys_rtc_time_set(SF_PARA_TIME_S* pstDateTime);
|
|
void sf_set_ae_night_mode(UINT8 isNightMode);
|
|
UINT32 sf_get_send_pic_sieze(void);
|
|
void sf_mcu_version_get(UINT8 *mcuVer);
|
|
BOOL sf_is_night_mode(BOOL isRefresh);
|
|
extern void* sf_usb_insmod_thread(void *arg);
|
|
#endif
|
|
|