nt9856x/code/lib/source/sifar/code/include/sf_mcu.h

436 lines
11 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 SF_DC_IN_VOLATAGE 70
#define SF_LI_IN_VOLATAGE 99
#define SUCCESS 0
#define FAIL 1
#define SF_MCU_NIGHT_MODE_LUMINANCE 600
#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
/*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;
typedef struct sfCAMERA_CMD_S
{
UINT8 setPara;
UINT8 moduleUpdateOTA;
UINT8 moduleUpdateSD;
UINT8 firmwareUpdateOTA;
UINT8 getLog;
UINT8 takePhotoAndSend;
UINT8 sendHD;
UINT8 sendVideo;
UINT8 formatSD;
UINT8 cameraReset;
UINT8 cameraRestart;
UINT8 GotoServerGetPara;
} SF_CAMERA_CMD_S;
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_cmd_camera_restart(UINT8 cameraRestart);
UINT8 sf_get_camera_restart(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(UINT8 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);
#endif