#ifndef _SF_MCU_H #define _SF_MCU_H #ifdef __KERNEL__ #include //#include #include "kwrap/type.h" //#include "kwrap/semaphore.h" #include "kwrap/flag.h" //#include "sf_ip6303.h" #include #include //#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 "rtos_na51089/kdrv_i2c.h" #endif #define SUCCESS 0 #define FAIL 1 #define SF_SEND_LIST_ITEM_LENGTH 15 #define SF_MCU_NIGHT_MODE_LUMINANCE 100// old phototransistor:600 #define DIGITAL_PIR 1 #define SF_DC_IN_VOLATAGE 70 #define SF_LI_IN_VOLATAGE 99 #define SF_LI_BATT_RECOVERY 99 #define SF_OTHER_BATT_RECOVERY 99 #define SF_BATT_RECOVERY 72 //S530 #define SF_DATE_TIME_YEAR_MAX 2050 #define SF_DATE_TIME_YEAR_MIN 2021 /*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 enum _SF_I2C_ID { SF_I2C_ID_1 = 0, SF_I2C_ID_2 = 1, SF_I2C_ID_3 = 2, SF_I2C_ID_4 = 3, SF_I2C_ID_5 = 4, ENUM_DUMMY4WORD(SF_I2C_ID) } SF_I2C_ID; typedef struct _SF_I2C { SF_I2C_ID id; UINT32 addr; } SF_I2C; 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; #define SF_MAX_PATH_LEN 128 #define SF_MAX_PIC_LEN 64 #define SF_SRCFILE_MAX 201 typedef enum sf_FILE_TYPE_E { SF_FILE_TYPE_PIC_THUM_3M = 0x00, SF_FILE_TYPE_PIC_3M = 0x01, SF_FILE_TYPE_VIDEO_THUM_WVGA = 0X02, SF_FILE_TYPE_VIDEO_WVGA = 0X03, SF_FILE_TYPE_VIDEO_THUM_720P = 0X04, SF_FILE_TYPE_VIDEO_720P = 0X05, SF_FILE_TYPE_VIDEO_THUM_1080P = 0X06, SF_FILE_TYPE_VIDEO_1080P = 0X07, SF_FILE_TYPE_PIC_THUM_5M = 0x08, SF_FILE_TYPE_PIC_5M = 0x09, SF_FILE_TYPE_LOG_ERROR = 0x0A, SF_FILE_TYPE_CFG = 0x0B, SF_FILE_TYPE_TRIGGER = 0x0C, SF_FILE_TYPE_PIC_BIG, SF_FILE_TYPE_PIC_SMALL, SF_FILE_TYPE_PIC_VIDEO, SF_FILE_TYPE_VIDEO, SF_FILE_TYPE_LOG_DP, /*dailyreport file*/ SF_FILE_TYPE_GPS, SF_FILE_TYPE_TXT, SF_FILE_TYPE_UPDATE, SF_FILE_TYPE_FOTA, SF_FILE_TYPE_BT_ALARM, /*Bettery Alarm*/ SF_FILE_TYPE_OTHER, SF_FILE_TYPE_BUTT, }SF_FILE_TYPE_E; typedef struct sf_FILE_ATTR_S { SF_FILE_TYPE_E enFileTye; char thumbfileName[SF_SEND_LIST_ITEM_LENGTH]; char thumbfilePath[SF_MAX_PATH_LEN]; char txtfilePath[SF_MAX_PATH_LEN]; char txtfileName[SF_MAX_PIC_LEN]; UINT32 thumbfileSize; }SF_FILE_ATTR_S; typedef enum MCU_FLAG_INIT { MCU_FLAG_INITT_SYSTEM = 0x00, MCU_FLAG_INIT_SENSOR = 0x01, MCU_FLAG_INIT_CAPTURE = 0x02, MCU_FLAG_INIT_DISPLAY = 0x03, MCU_FLAG_INIT_STORAGE = 0x04, MCU_FLAG_INIT_FILESYSOK = 0x05, MCU_FLAG_INIT_FILENAMINGOK, MCU_FLAG_INIT_MEIDA_ENCODER, MCU_FLAG_INIT_MEIDA_DECODER, MCU_FLAG_INIT_BOOTLOGO, MCU_FLAG_INIT_OTHERS, MCU_FLAG_INIT_BOOT, MCU_FLAG_INIT_MAX_CNT = 32, //flag max bit cnt is 32 } MCU_FLAG_INIT; typedef struct sf_SRCFILE_ATTR_S { UINT8 filecnt; SF_FILE_ATTR_S stfileattr[SF_SRCFILE_MAX]; }SF_SRCFILE_ATTR_S; extern int sf_mcu_test(void); extern int sf_mod_init(void); extern void sf_mod_exit(void); extern UINT8 sf_mcu_wdg_set(UINT8 value); extern UINT8 sf_get_power_on_mode(void); UINT8 sf_mcu_reg_set(MCUParam_t attrId, UINT8 val); BOOL sf_is_night_mode(BOOL isRefresh); UINT16 sf_mcu_get_irshtter(void); BOOL sf_is_card_full(void); UINT32 sf_check_card_full(void); typedef BOOL (*SF_CALLBACK_SD_CMD)(void); void sf_sd_exist_reg_cb(SF_CALLBACK_SD_CMD fpCB); BOOL sf_in_card_exist(void); BOOL sf_get_mode_flag(void); BOOL sf_is_usb_flag(void); void sf_calculate_daily_report(UINT8*dailyHour, UINT8*dailyMin); int sf_while_flag(void); int sf_init_mcu(void); UINT8 sf_get_mcu_rtc_set_sys(void); UINT8 sf_get_power_off_flag(void); void sf_set_power_off_flag(UINT8 flag); UINT32 sf_set_pir_sensitivity(UINT8 pirs); void sf_set_module_sleep_flag(UINT8 flag); void sf_file_thumb_cfg_fill(char* filepath,char* fileName,UINT32 size, SF_FILE_TYPE_E enFileType); void sf_file_thumb_cfg_set(SF_SRCFILE_ATTR_S *pThumbFileCfgl); void sf_file_thumb_cfg_clear(void); void sf_file_thumb_cfg_sava(void); void sf_add_file_name_to_send_list(char *sendfname); UINT8 sf_mcu_power_on_para_get(MCUParam_t attrId); void sf_mcu_flag_init(void); void sf_mcu_flag_set_done(MCU_FLAG_INIT boot_init); void sf_mcu_flag_wait_done(MCU_FLAG_INIT boot_init); int sf_mcu_flag_wait_done_timeout(MCU_FLAG_INIT boot_init, int timeout_ms); void sf_mcu_flag_clear_done(MCU_FLAG_INIT boot_init); UINT32 sf_get_send_pic_sieze(void); void sf_para_print(void); UINT8 sf_convert_power_on_mode(void); void sf_hw_info_save(char *name); void sf_set_iso_exp_lv(UINT32 adj, UINT32 iso, UINT32 exp, UINT32 lv); UINT32 sf_in_update(void); #endif