1.修改0331IQ;2.修改usb相关;增加sifarapp框架

This commit is contained in:
payton 2023-04-07 17:47:20 +08:00
parent 7423f34db3
commit 302629f168
54 changed files with 10822 additions and 118 deletions

View File

@ -139,6 +139,18 @@ insmod ${PREFIX}/lib/modules/$KERVER/hdal/comm/uvcp/nvt_uvcp.ko
insmod ${PREFIX}/lib/modules/$KERVER/hdal/comm/usb2dev/nvt_usb2dev.ko insmod ${PREFIX}/lib/modules/$KERVER/hdal/comm/usb2dev/nvt_usb2dev.ko
fi fi
#insmod ${PREFIX}/lib/modules/$KERVER/kernel/drivers/usb/ehci-hcd.ko
#insmod ${PREFIX}/lib/modules/$KERVER/kernel/drivers/net/mii.ko
#insmod ${PREFIX}/lib/modules/$KERVER/kernel/drivers/net/usb/usbnet.ko
#
#insmod ${PREFIX}/lib/modules/$KERVER/kernel/drivers/usb/serial/usbserial.ko
#insmod ${PREFIX}/lib/modules/$KERVER/kernel/drivers/usb/serial/usb_wwan.ko
#insmod ${PREFIX}/lib/modules/$KERVER/kernel/drivers/usb/serial/option.ko
#insmod ${PREFIX}/lib/modules/$KERVER/kernel/drivers/net/usb/cdc_ether.ko
#insmod ${PREFIX}/lib/modules/$KERVER/kernel/drivers/net/usb/qmi_wwan.ko
#insmod ${PREFIX}/lib/modules/$KERVER/extra/net/GobiNet/drv_gobi_net.ko
if [ -f /usr/bin/isp_demon ]; then if [ -f /usr/bin/isp_demon ]; then
/usr/bin/isp_demon /usr/bin/isp_demon
fi fi

View File

@ -68,6 +68,7 @@ C_LDFLAGS = \
LDSCRIPT = $(MODULE_NAME).lds LDSCRIPT = $(MODULE_NAME).lds
LDS_EXTERN = extern.lds LDS_EXTERN = extern.lds
OUTPUT_NAME = $(OUTPUT_DIR)/cardv OUTPUT_NAME = $(OUTPUT_DIR)/cardv
OUTPUT2_NAME = $(OUTPUT_DIR)/sifar_app
IMG_NAME = $(OUTPUT_DIR)/$(MODULE_NAME).img IMG_NAME = $(OUTPUT_DIR)/$(MODULE_NAME).img
MAP_NAME = $(OUTPUT_DIR)/$(MODULE_NAME).map MAP_NAME = $(OUTPUT_DIR)/$(MODULE_NAME).map
SYM_NAME = $(OUTPUT_DIR)/$(MODULE_NAME).sym SYM_NAME = $(OUTPUT_DIR)/$(MODULE_NAME).sym
@ -255,7 +256,7 @@ endif
####################################################################################### #######################################################################################
OBJ = $(SRC:.c=.o) $(ASM:.S=.o) $(CPP_SRC:.cpp=.o) $(DTS_SENSOR:.dts=.o) OBJ = $(SRC:.c=.o) $(ASM:.S=.o) $(CPP_SRC:.cpp=.o) $(DTS_SENSOR:.dts=.o)
all: $(OUTPUT_NAME) $(DTS_SENSOR:.dts=.dtb) $(OUTPUT_APPFS) all: $(OUTPUT_NAME) $(DTS_SENSOR:.dts=.dtb) $(OUTPUT_APPFS) $(OUTPUT2_NAME)
$(APPFS_DIR): $(DTS_APP:.dts=.dtb) $(APPFS_DIR): $(DTS_APP:.dts=.dtb)
@echo creating $@ @echo creating $@
@ -318,6 +319,19 @@ $(OUTPUT_NAME): $(IMG_NAME)
@echo Creating executable $@ ... && \ @echo Creating executable $@ ... && \
$(STRIP) $< && \ $(STRIP) $< && \
$(OBJCOPY) -R .comment -R .note.ABI-tag -R .gnu.version $< $@ $(OBJCOPY) -R .comment -R .note.ABI-tag -R .gnu.version $< $@
$(OUTPUT2_NAME) : sifar_app
@echo Creating executable $@ ... && \
$(STRIP) $< && \
$(OBJCOPY) -R .comment -R .note.ABI-tag -R .gnu.version $< $@
APP2_SRC = ./SrcCode/Startup/sifar_app.c
sifar_app: $(APP2_SRC)
@echo Compiling "sifar_app" && \
$(CC) $(C_CFLAGS) -c $(APP2_SRC) -o $(APP2_SRC:.c=.o) && \
$(COLLECT2) -o $@ $(APP2_SRC:.c=.o) $(C_LDFLAGS)
# inline warning should be ignored with some LVGL static inline functions(e.g. lv_color_mix_with_alpha) # inline warning should be ignored with some LVGL static inline functions(e.g. lv_color_mix_with_alpha)
%/fbdev.o: %/fbdev.c %/fbdev.o: %/fbdev.c
@echo Compiling $< , skip inline warning @echo Compiling $< , skip inline warning
@ -354,11 +368,13 @@ cim: $(DTB) $(OBJ)
clean: clean:
@rm -rf $(OBJ) $(MAIN_C:.c=.o) $(LDS_EXTERN) $(DTB) $(OUTPUT_DIR) @rm -rf $(OBJ) $(MAIN_C:.c=.o) $(LDS_EXTERN) $(DTB) $(OUTPUT_DIR)
install: $(OUTPUT_NAME) $(OUTPUT_APPFS) install: $(OUTPUT_NAME) $(OUTPUT_APPFS) $(OUTPUT2_NAME)
@mkdir -p $(INSTALL_DIR) @mkdir -p $(INSTALL_DIR)
@cp -avf $(OUTPUT_NAME) $(INSTALL_DIR) @cp -avf $(OUTPUT_NAME) $(INSTALL_DIR)
@cp -avf $(OUTPUT_NAME) $(ROOTFS_DIR)/rootfs/usr/bin @cp -avf $(OUTPUT_NAME) $(ROOTFS_DIR)/rootfs/usr/bin
@cp -avf $(OUTPUT_APPFS) $(LINUX_BUILD_TOP)/output @cp -avf $(OUTPUT_APPFS) $(LINUX_BUILD_TOP)/output
@cp -avf $(OUTPUT2_NAME) $(INSTALL_DIR)
@cp -avf $(OUTPUT2_NAME) $(ROOTFS_DIR)/rootfs/usr/bin
dasm: $(IMG_NAME) dasm: $(IMG_NAME)
@echo Disassembly $< to $(DASM_NAME)... \ @echo Disassembly $< to $(DASM_NAME)... \

View File

@ -333,6 +333,9 @@ extern BOOL GPIOMap_DetPoweroff(void);
#define GPIO_IRCUT_MEN2 D_GPIO_5 // M_EN2 IRCUT 2 #define GPIO_IRCUT_MEN2 D_GPIO_5 // M_EN2 IRCUT 2
#define PAD_IRCUT_MEN2 PAD_PIN_DGPIO5 #define PAD_IRCUT_MEN2 PAD_PIN_DGPIO5
#define GPIO_USB_MUX_S P_GPIO_2 //USB_MUX_S
#define PAD_USB_MUX_S PAD_PIN_PGPIO2
//----------charge ic ---------------- //----------charge ic ----------------
#define GPIO_CHARGEIC_EN C_GPIO_4 #define GPIO_CHARGEIC_EN C_GPIO_4
#define GPIO_PIR_STATE C_GPIO_7 #define GPIO_PIR_STATE C_GPIO_7
@ -344,6 +347,7 @@ extern BOOL GPIOMap_DetPoweroff(void);
#define GPIO_PARKING P_GPIO_6 #define GPIO_PARKING P_GPIO_6
//-------------------------------------------------------------------- //--------------------------------------------------------------------
// Power device // Power device
//-------------------------------------------------------------------- //--------------------------------------------------------------------

View File

@ -916,7 +916,7 @@
#define DZOOM_FUNC ENABLE #define DZOOM_FUNC ENABLE
#define HUNTING_MCU_I2C DISABLE #define HUNTING_MCU_I2C DISABLE
#define HUNTING_MCU_UART ENABLE #define HUNTING_MCU_UART ENABLE
#define HUNTING_IR_LED_940 ENABLE//DISABLE #define HUNTING_IR_LED_940 DISABLE
#define SF_BASE_VERSION "7MD4RCwD3T2" #define SF_BASE_VERSION "7MD4RCwD3T2"

View File

@ -0,0 +1,23 @@
/*
* app2.c
*
* Created on: 202347
* Author: NVT02970
*/
#include <io/gpio.h>
#include <UIWnd/UIFlow.h>
int main(int argc, char *argv[])
{
gpio_direction_input(C_GPIO(10));
}

View File

@ -242,6 +242,8 @@ SXCMD_ITEM("rawsw %", sf_cmd_raw_switch, "rawsw 0/1")
SXCMD_ITEM("batterysw %", sf_cmd_battery_log_switch, "batterysw 0/1") SXCMD_ITEM("batterysw %", sf_cmd_battery_log_switch, "batterysw 0/1")
SXCMD_ITEM("state %", sf_cmd_get_cam_state, "state") SXCMD_ITEM("state %", sf_cmd_get_cam_state, "state")
SXCMD_ITEM("reset", sf_cmd_reset, "reset") SXCMD_ITEM("reset", sf_cmd_reset, "reset")
SXCMD_ITEM("mcupara", sf_cmd_mcu_power_on_para_get, "get mcu para")
SXCMD_ITEM("setusbmuxs", sf_cmd_usb_mux_s, "set usbmuxs")

View File

@ -354,6 +354,7 @@ int NvtMain(void)
sf_mcu_init(); sf_mcu_init();
sf_get_power_on_mode(); sf_get_power_on_mode();
sf_mcu_wdg_set(30); sf_mcu_wdg_set(30);
sf_usb_mux_s(1);
//sf_mcu_reg_set(SF_MCU_CTRL_MODULE_PIR, 1); //sf_mcu_reg_set(SF_MCU_CTRL_MODULE_PIR, 1);
sf_sd_exist_reg_cb(DrvCARD_DetStrgCard); sf_sd_exist_reg_cb(DrvCARD_DetStrgCard);
/*led init*/ /*led init*/

View File

@ -39,6 +39,7 @@ else
obj-m += \ obj-m += \
sample/fake/ \ sample/fake/ \
net/rtl8189fs/ \ net/rtl8189fs/ \
net/GobiNet/ \
crypto/cryptodev-linux/ \ crypto/cryptodev-linux/ \
msdcnvt/msdcnvt/ \ msdcnvt/msdcnvt/ \
msdcnvt/msdcnvt_adj/ \ msdcnvt/msdcnvt_adj/ \

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,104 @@
MODULE_NAME = drv_gobi_net
# DIRs
VOS_DRIVER_DIR = $(NVT_VOS_DIR)/drivers
KDRV_DIR = $(NVT_HDAL_DIR)/drivers/k_driver
CURR_DRIVER_DIR = $(NVT_DRIVER_DIR)
RTOS_OUTPUT_DIR = $(CURR_DRIVER_DIR)/output
# INCs
VOS_INC_PATH = $(VOS_DRIVER_DIR)/include
KDRV_INC_PATH = $(KDRV_DIR)/include
DRIVER_INC_PATH = $(NVT_DRIVER_DIR)/include
CURR_DRIVER_INC_PATH = $(CURR_DRIVER_DIR)/include
# INC FLAGs
EXTRA_INCLUDE += -I$(VOS_INC_PATH) -I$(KDRV_INC_PATH) -I$(DRIVER_INC_PATH) -I$(CURR_DRIVER_INC_PATH)
.PHONY: modules modules_install clean
###############################################################################
# Linux Makefile #
###############################################################################
ifeq ($(NVT_PRJCFG_CFG),Linux)
C_CFLAGS += -D__LINUX -Werror
EXTRA_CFLAGS += $(C_CFLAGS) $(EXTRA_INCLUDE) -Wno-date-time -I$(src)/include -DDEBUG
KBUILD_EXTRA_SYMBOLS = $(shell find $(VOS_DRIVER_DIR) -name Module.symvers) $(shell find $(KDRV_DIR) -name Module.symvers)
obj-m += $(MODULE_NAME).o
$(MODULE_NAME)-objs := \
GobiUSBNet.o \
QMIDevice.o \
QMI.o
ifeq ($(KERNELRELEASE),)
PWD := $(shell pwd)
KERVER ?= $(NVT_LINUX_VER)
KDIR ?= $(KERNELDIR)
MDIR ?= $(KERNELDIR)/_install_modules/lib/modules/$(KERVER)/extra
MODPATH := $(shell echo $(PWD) | awk -F'source/' '{print $$NF}')
MODNAME := $(shell echo $(obj-m:.o=.ko))
modules:
@$(MAKE) -C $(KDIR) M=$(PWD) modules
modules_install:
@if [ -z $(NVT_MOD_INSTALL) ]; then \
rm -f $(MDIR)/$(MODPATH)/$(MODNAME); \
install -m644 -b -D $(MODNAME) ${MDIR}/$(MODPATH)/$(MODNAME); \
cd $(KDIR)/_install_modules/lib/modules/$(KERVER)/; depmod -b $(KDIR)/_install_modules/ -a $(KERVER); \
else \
mkdir -p $(NVT_MOD_INSTALL)/lib/modules/$(KERVER); \
install -m644 -b -D $(MODNAME) $(NVT_MOD_INSTALL)/lib/modules/$(KERVER)/extra/$(MODPATH)/$(MODNAME); \
fi
clean:
@SRC="`find . -name "*.c" ! -name "*.mod.c"`"; \
if [ "$$SRC" ]; then \
rm -rf .tmp_versions Module.symvers modules.order `find . -type f -name "*.mod.c" -o -name ".*.cmd" -o -name "*.o" -o -name "*.ko" -o -name "modules.order" -o -name *~`; \
else \
rm -rf .tmp_versions Module.symvers modules.order $(MODULE_NAME).o $(MODULE_NAME).mod.o `find . -type f -name "*.mod.c" -o -name ".*.cmd" -o -name "*.ko" -o -name "modules.order" -o -name *~`; \
fi
endif
###############################################################################
# rtos Makefile #
###############################################################################
else ifeq ($(NVT_PRJCFG_CFG),rtos)
OUTPUT_NAME = lib$(MODULE_NAME).a
C_CFLAGS = $(PLATFORM_CFLAGS) $(EXTRA_INCLUDE)
EXTRA_INCLUDE += -I$(KDRV_DIR)/include/comm -I$(KDRV_DIR)/include/plat
SRC = \
GobiUSBNet.c \
QMIDevice.c \
QMIDevice.c
copy = if [ ! -z "$(1)" -a "$(1)" != " " ]; then cp -avf $(1) $(2); fi
OBJ = $(SRC:.c=.o)
ifeq ("$(wildcard *.c */*.c */*/*.c)","")
modules:
@echo "nothing to be done for '$(OUTPUT_NAME)'"
clean:
@echo "nothing to be done for '$(OUTPUT_NAME)'"
else
modules : $(OUTPUT_NAME)
%.o:%.c
@echo Compiling $<
@$(CC) $(C_CFLAGS) -c $< -o $@
$(OUTPUT_NAME): $(OBJ)
@echo Creating library $* ...
@$(AR) rcsD $(OUTPUT_NAME) $(OBJ)
@$(BUILD_DIR)/nvt-tools/nvt-ld-op --arc-sha1 $@
clean:
@rm -f $(OBJ) *.o *.a *.so*
@rm -rf usbnet.h
endif
modules_install:
@mkdir -p $(RTOS_OUTPUT_DIR)
@cp -avf *.a $(RTOS_OUTPUT_DIR)
endif

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,337 @@
/*===========================================================================
FILE:
QMI.h
DESCRIPTION:
Qualcomm QMI driver header
FUNCTIONS:
Generic QMUX functions
ParseQMUX
FillQMUX
Generic QMI functions
GetTLV
ValidQMIMessage
GetQMIMessageID
Get sizes of buffers needed by QMI requests
QMUXHeaderSize
QMICTLGetClientIDReqSize
QMICTLReleaseClientIDReqSize
QMICTLReadyReqSize
QMIWDSSetEventReportReqSize
QMIWDSGetPKGSRVCStatusReqSize
QMIDMSGetMEIDReqSize
QMICTLSyncReqSize
Fill Buffers with QMI requests
QMICTLGetClientIDReq
QMICTLReleaseClientIDReq
QMICTLReadyReq
QMIWDSSetEventReportReq
QMIWDSGetPKGSRVCStatusReq
QMIDMSGetMEIDReq
QMICTLSetDataFormatReq
QMICTLSyncReq
Parse data from QMI responses
QMICTLGetClientIDResp
QMICTLReleaseClientIDResp
QMIWDSEventResp
QMIDMSGetMEIDResp
Copyright (c) 2011, Code Aurora Forum. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of Code Aurora Forum nor
the names of its contributors may be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
===========================================================================*/
#pragma once
/*=========================================================================*/
// Definitions
/*=========================================================================*/
extern int quec_debug;
// DBG macro
#define DBG( format, arg... ) do { \
if (quec_debug == 1)\
{ \
printk( KERN_INFO "GobiNet::%s " format, __FUNCTION__, ## arg ); \
} }while(0)
#if 0
#define VDBG( format, arg... ) do { \
if (debug == 1)\
{ \
printk( KERN_INFO "GobiNet::%s " format, __FUNCTION__, ## arg ); \
} } while(0)
#else
#define VDBG( format, arg... ) do { } while(0)
#endif
#define INFO( format, arg... ) do { \
printk( KERN_INFO "GobiNet::%s " format, __FUNCTION__, ## arg ); \
}while(0)
// QMI Service Types
#define QMICTL 0
#define QMIWDS 1
#define QMIDMS 2
#define QMINAS 3
#define QMIUIM 11
#define QMIWDA 0x1A
#define u8 unsigned char
#define u16 unsigned short
#define u32 unsigned int
#define u64 unsigned long long
#define bool u8
#define true 1
#define false 0
#define ENOMEM 12
#define EFAULT 14
#define EINVAL 22
#ifndef ENOMSG
#define ENOMSG 42
#endif
#define ENODATA 61
#define TLV_TYPE_LINK_PROTO 0x10
/*=========================================================================*/
// Struct sQMUX
//
// Structure that defines a QMUX header
/*=========================================================================*/
typedef struct sQMUX
{
/* T\F, always 1 */
u8 mTF;
/* Size of message */
u16 mLength;
/* Control flag */
u8 mCtrlFlag;
/* Service Type */
u8 mQMIService;
/* Client ID */
u8 mQMIClientID;
}__attribute__((__packed__)) sQMUX;
#if 0
/*=========================================================================*/
// Generic QMUX functions
/*=========================================================================*/
// Remove QMUX headers from a buffer
int ParseQMUX(
u16 * pClientID,
void * pBuffer,
u16 buffSize );
// Fill buffer with QMUX headers
int FillQMUX(
u16 clientID,
void * pBuffer,
u16 buffSize );
/*=========================================================================*/
// Generic QMI functions
/*=========================================================================*/
// Get data buffer of a specified TLV from a QMI message
int GetTLV(
void * pQMIMessage,
u16 messageLen,
u8 type,
void * pOutDataBuf,
u16 bufferLen );
// Check mandatory TLV in a QMI message
int ValidQMIMessage(
void * pQMIMessage,
u16 messageLen );
// Get the message ID of a QMI message
int GetQMIMessageID(
void * pQMIMessage,
u16 messageLen );
/*=========================================================================*/
// Get sizes of buffers needed by QMI requests
/*=========================================================================*/
// Get size of buffer needed for QMUX
u16 QMUXHeaderSize( void );
// Get size of buffer needed for QMUX + QMICTLGetClientIDReq
u16 QMICTLGetClientIDReqSize( void );
// Get size of buffer needed for QMUX + QMICTLReleaseClientIDReq
u16 QMICTLReleaseClientIDReqSize( void );
// Get size of buffer needed for QMUX + QMICTLReadyReq
u16 QMICTLReadyReqSize( void );
// Get size of buffer needed for QMUX + QMIWDSSetEventReportReq
u16 QMIWDSSetEventReportReqSize( void );
// Get size of buffer needed for QMUX + QMIWDSGetPKGSRVCStatusReq
u16 QMIWDSGetPKGSRVCStatusReqSize( void );
u16 QMIWDSSetQMUXBindMuxDataPortSize( void );
// Get size of buffer needed for QMUX + QMIDMSGetMEIDReq
u16 QMIDMSGetMEIDReqSize( void );
// Get size of buffer needed for QMUX + QMIWDASetDataFormatReq
u16 QMIWDASetDataFormatReqSize( int qmap_mode );
// Get size of buffer needed for QMUX + QMICTLSyncReq
u16 QMICTLSyncReqSize( void );
/*=========================================================================*/
// Fill Buffers with QMI requests
/*=========================================================================*/
// Fill buffer with QMI CTL Get Client ID Request
int QMICTLGetClientIDReq(
void * pBuffer,
u16 buffSize,
u8 transactionID,
u8 serviceType );
// Fill buffer with QMI CTL Release Client ID Request
int QMICTLReleaseClientIDReq(
void * pBuffer,
u16 buffSize,
u8 transactionID,
u16 clientID );
// Fill buffer with QMI CTL Get Version Info Request
int QMICTLReadyReq(
void * pBuffer,
u16 buffSize,
u8 transactionID );
// Fill buffer with QMI WDS Set Event Report Request
int QMIWDSSetEventReportReq(
void * pBuffer,
u16 buffSize,
u16 transactionID );
// Fill buffer with QMI WDS Get PKG SRVC Status Request
int QMIWDSGetPKGSRVCStatusReq(
void * pBuffer,
u16 buffSize,
u16 transactionID );
u16 QMIWDSSetQMUXBindMuxDataPortReq(
void * pBuffer,
u16 buffSize,
u8 MuxId,
u16 transactionID );
// Fill buffer with QMI DMS Get Serial Numbers Request
int QMIDMSGetMEIDReq(
void * pBuffer,
u16 buffSize,
u16 transactionID );
// Fill buffer with QMI WDA Set Data Format Request
int QMIWDASetDataFormatReq(
void * pBuffer,
u16 buffSize,
bool bRawIPMode, int qmap_mode, u32 rx_size,
u16 transactionID );
#if 0
int QMIWDASetDataQmapReq(
void * pBuffer,
u16 buffSize,
u16 transactionID );
#endif
int QMICTLSyncReq(
void * pBuffer,
u16 buffSize,
u16 transactionID );
/*=========================================================================*/
// Parse data from QMI responses
/*=========================================================================*/
// Parse the QMI CTL Get Client ID Resp
int QMICTLGetClientIDResp(
void * pBuffer,
u16 buffSize,
u16 * pClientID );
// Verify the QMI CTL Release Client ID Resp is valid
int QMICTLReleaseClientIDResp(
void * pBuffer,
u16 buffSize );
// Parse the QMI WDS Set Event Report Resp/Indication or
// QMI WDS Get PKG SRVC Status Resp/Indication
int QMIWDSEventResp(
void * pBuffer,
u16 buffSize,
u32 * pTXOk,
u32 * pRXOk,
u32 * pTXErr,
u32 * pRXErr,
u32 * pTXOfl,
u32 * pRXOfl,
u64 * pTXBytesOk,
u64 * pRXBytesOk,
bool * pbLinkState,
bool * pbReconfigure );
// Parse the QMI DMS Get Serial Numbers Resp
int QMIDMSGetMEIDResp(
void * pBuffer,
u16 buffSize,
char * pMEID,
int meidSize );
// Parse the QMI DMS Get Serial Numbers Resp
int QMIWDASetDataFormatResp(
void * pBuffer,
u16 buffSize, bool bRawIPMode, int *qmap_enabled, int *rx_size, int *tx_size);
// Pasre the QMI CTL Sync Response
int QMICTLSyncResp(
void *pBuffer,
u16 buffSize );
#endif

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,368 @@
/*===========================================================================
FILE:
QMIDevice.h
DESCRIPTION:
Functions related to the QMI interface device
FUNCTIONS:
Generic functions
IsDeviceValid
PrintHex
GobiSetDownReason
GobiClearDownReason
GobiTestDownReason
Driver level asynchronous read functions
ResubmitIntURB
ReadCallback
IntCallback
StartRead
KillRead
Internal read/write functions
ReadAsync
UpSem
ReadSync
WriteSyncCallback
WriteSync
Internal memory management functions
GetClientID
ReleaseClientID
FindClientMem
AddToReadMemList
PopFromReadMemList
AddToNotifyList
NotifyAndPopNotifyList
AddToURBList
PopFromURBList
Internal userspace wrapper functions
UserspaceunlockedIOCTL
Userspace wrappers
UserspaceOpen
UserspaceIOCTL
UserspaceClose
UserspaceRead
UserspaceWrite
UserspacePoll
Initializer and destructor
RegisterQMIDevice
DeregisterQMIDevice
Driver level client management
QMIReady
QMIWDSCallback
SetupQMIWDSCallback
QMIDMSGetMEID
Copyright (c) 2011, Code Aurora Forum. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of Code Aurora Forum nor
the names of its contributors may be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
===========================================================================*/
//---------------------------------------------------------------------------
// Pragmas
//---------------------------------------------------------------------------
#pragma once
//---------------------------------------------------------------------------
// Include Files
//---------------------------------------------------------------------------
#include "Structs.h"
#include "QMI.h"
/*=========================================================================*/
// Generic functions
/*=========================================================================*/
#ifdef __QUECTEL_INTER__
// Basic test to see if device memory is valid
static bool IsDeviceValid( sGobiUSBNet * pDev );
/*=========================================================================*/
// Driver level asynchronous read functions
/*=========================================================================*/
// Resubmit interrupt URB, re-using same values
static int ResubmitIntURB( struct urb * pIntURB );
// Read callback
// Put the data in storage and notify anyone waiting for data
#if (LINUX_VERSION_CODE > KERNEL_VERSION( 2,6,18 ))
static void ReadCallback( struct urb * pReadURB );
#else
static void ReadCallback(struct urb *pReadURB, struct pt_regs *regs);
#endif
// Inturrupt callback
// Data is available, start a read URB
#if (LINUX_VERSION_CODE > KERNEL_VERSION( 2,6,18 ))
static void IntCallback( struct urb * pIntURB );
#else
static void IntCallback(struct urb *pIntURB, struct pt_regs *regs);
#endif
/*=========================================================================*/
// Internal read/write functions
/*=========================================================================*/
// Start asynchronous read
// Reading client's data store, not device
static int ReadAsync(
sGobiUSBNet * pDev,
u16 clientID,
u16 transactionID,
void (*pCallback)(sGobiUSBNet *, u16, void *),
void * pData );
// Notification function for synchronous read
static void UpSem(
sGobiUSBNet * pDev,
u16 clientID,
void * pData );
// Start synchronous read
// Reading client's data store, not device
static int ReadSync(
sGobiUSBNet * pDev,
void ** ppOutBuffer,
u16 clientID,
u16 transactionID );
// Write callback
#if (LINUX_VERSION_CODE > KERNEL_VERSION( 2,6,18 ))
static void WriteSyncCallback( struct urb * pWriteURB );
#else
static void WriteSyncCallback(struct urb *pWriteURB, struct pt_regs *regs);
#endif
// Start synchronous write
static int WriteSync(
sGobiUSBNet * pDev,
char * pInWriteBuffer,
int size,
u16 clientID );
/*=========================================================================*/
// Internal memory management functions
/*=========================================================================*/
// Create client and allocate memory
static int GetClientID(
sGobiUSBNet * pDev,
u8 serviceType );
// Release client and free memory
static void ReleaseClientID(
sGobiUSBNet * pDev,
u16 clientID );
// Find this client's memory
static sClientMemList * FindClientMem(
sGobiUSBNet * pDev,
u16 clientID );
// Add Data to this client's ReadMem list
static bool AddToReadMemList(
sGobiUSBNet * pDev,
u16 clientID,
u16 transactionID,
void * pData,
u16 dataSize );
// Remove data from this client's ReadMem list if it matches
// the specified transaction ID.
static bool PopFromReadMemList(
sGobiUSBNet * pDev,
u16 clientID,
u16 transactionID,
void ** ppData,
u16 * pDataSize );
// Add Notify entry to this client's notify List
static bool AddToNotifyList(
sGobiUSBNet * pDev,
u16 clientID,
u16 transactionID,
void (* pNotifyFunct)(sGobiUSBNet *, u16, void *),
void * pData );
// Remove first Notify entry from this client's notify list
// and Run function
static bool NotifyAndPopNotifyList(
sGobiUSBNet * pDev,
u16 clientID,
u16 transactionID );
// Add URB to this client's URB list
static bool AddToURBList(
sGobiUSBNet * pDev,
u16 clientID,
struct urb * pURB );
// Remove URB from this client's URB list
static struct urb * PopFromURBList(
sGobiUSBNet * pDev,
u16 clientID );
/*=========================================================================*/
// Internal userspace wrappers
/*=========================================================================*/
// Userspace unlocked ioctl
static long UserspaceunlockedIOCTL(
struct file * pFilp,
unsigned int cmd,
unsigned long arg );
/*=========================================================================*/
// Userspace wrappers
/*=========================================================================*/
// Userspace open
static int UserspaceOpen(
struct inode * pInode,
struct file * pFilp );
#if (LINUX_VERSION_CODE < KERNEL_VERSION( 2,6,36 ))
// Userspace ioctl
static int UserspaceIOCTL(
struct inode * pUnusedInode,
struct file * pFilp,
unsigned int cmd,
unsigned long arg );
#endif
// Userspace close
#define quectel_no_for_each_process
#ifdef quectel_no_for_each_process
static int UserspaceClose(
struct inode * pInode,
struct file * pFilp );
#else
#if (LINUX_VERSION_CODE > KERNEL_VERSION( 2,6,14 ))
static int UserspaceClose(
struct file * pFilp,
fl_owner_t unusedFileTable );
#else
static int UserspaceClose( struct file * pFilp );
#endif
#endif
// Userspace read (synchronous)
static ssize_t UserspaceRead(
struct file * pFilp,
char __user * pBuf,
size_t size,
loff_t * pUnusedFpos );
// Userspace write (synchronous)
static ssize_t UserspaceWrite(
struct file * pFilp,
const char __user * pBuf,
size_t size,
loff_t * pUnusedFpos );
static unsigned int UserspacePoll(
struct file * pFilp,
struct poll_table_struct * pPollTable );
/*=========================================================================*/
// Driver level client management
/*=========================================================================*/
// Check if QMI is ready for use
static bool QMIReady(
sGobiUSBNet * pDev,
u16 timeout );
// QMI WDS callback function
static void QMIWDSCallback(
sGobiUSBNet * pDev,
u16 clientID,
void * pData );
// Fire off reqests and start async read for QMI WDS callback
static int SetupQMIWDSCallback( sGobiUSBNet * pDev );
// Register client, send req and parse MEID response, release client
static int QMIDMSGetMEID( sGobiUSBNet * pDev );
// Register client, send req and parse Data format response, release client
static int QMIWDASetDataFormat( sGobiUSBNet * pDev, int qmap_mode, int *rx_urb_size );
#endif
// Print Hex data, for debug purposes
void QuecPrintHex(
void * pBuffer,
u16 bufSize );
// Sets mDownReason and turns carrier off
void QuecGobiSetDownReason(
sGobiUSBNet * pDev,
u8 reason );
// Clear mDownReason and may turn carrier on
void QuecGobiClearDownReason(
sGobiUSBNet * pDev,
u8 reason );
// Tests mDownReason and returns whether reason is set
bool QuecGobiTestDownReason(
sGobiUSBNet * pDev,
u8 reason );
// Start continuous read "thread"
int QuecStartRead( sGobiUSBNet * pDev );
// Kill continuous read "thread"
void QuecKillRead( sGobiUSBNet * pDev );
/*=========================================================================*/
// Initializer and destructor
/*=========================================================================*/
// QMI Device initialization function
int QuecRegisterQMIDevice( sGobiUSBNet * pDev );
// QMI Device cleanup function
void QuecDeregisterQMIDevice( sGobiUSBNet * pDev );
int QuecQMIWDASetDataFormat( sGobiUSBNet * pDev, int qmap_mode, int *rx_urb_size );
#define PrintHex QuecPrintHex
#define GobiSetDownReason QuecGobiSetDownReason
#define GobiClearDownReason QuecGobiClearDownReason
#define GobiTestDownReason QuecGobiTestDownReason
#define StartRead QuecStartRead
#define KillRead QuecKillRead
#define RegisterQMIDevice QuecRegisterQMIDevice
#define DeregisterQMIDevice QuecDeregisterQMIDevice

View File

@ -0,0 +1,78 @@
Gobi3000 network driver 2011-07-29-1026
This readme covers important information concerning
the Gobi Net driver.
Table of Contents
1. What's new in this release
2. Known issues
3. Known platform issues
-------------------------------------------------------------------------------
1. WHAT'S NEW
This Release (Gobi3000 network driver 2011-07-29-1026)
a. Signal the device to leave low power mode on enumeration
b. Add "txQueueLength" parameter, which will set the Tx Queue Length
c. Send SetControlLineState message during driver/device removal
d. Change to new date-based versioning scheme
Prior Release (Gobi3000 network driver 1.0.60) 06/29/2011
a. Add UserspacePoll() function, to support select()
b. Fix possible deadlock on GobiUSBNetTXTimeout()
c. Fix memory leak on data transmission
Prior Release (Gobi3000 network driver 1.0.50) 05/18/2011
a. Add support for kernels up to 2.6.38
b. Add support for dynamic interface binding
Prior Release (Gobi3000 network driver 1.0.40) 02/28/2011
a. In cases of QMI read errors, discard the error and continue reading.
b. Add "interruptible" parameter, which may be disabled for debugging purposes.
Prior Release (Gobi3000 network driver 1.0.30) 01/05/2011
a. Fix rare kernel PANIC if a process terminates while file handle close
or device removal is in progress.
Prior Release (Gobi3000 network driver 1.0.20) 11/01/2010
a. Fix possible kernel WARNING if device removed before QCWWANDisconnect().
b. Fix multiple memory leaks in error cases.
Prior Release (Gobi3000 network driver 1.0.10) 09/17/2010
a. Initial release
-------------------------------------------------------------------------------
2. KNOWN ISSUES
No known issues.
-------------------------------------------------------------------------------
3. KNOWN PLATFORM ISSUES
a. Enabling autosuspend:
Autosuspend is supported by the Gobi3000 module and its drivers,
but by default it is not enabled by the open source kernel. As such,
the Gobi3000 module will not enter autosuspend unless the
user specifically turns on autosuspend with the command:
echo auto > /sys/bus/usb/devices/.../power/level
b. Ksoftirq using 100% CPU:
There is a known issue with the open source usbnet driver that can
result in infinite software interrupts. The fix for this is to test
(in the usbnet_bh() function) if the usb_device can submit URBs before
attempting to submit the response URB buffers.
c. NetworkManager does not recognize connection after resume:
After resuming from sleep/hibernate, NetworkManager may not recognize new
network connections by the Gobi device. This is a system issue not specific
to the Gobi device, which may result in dhcp not being run and the default
route not being updated. One way to fix this is to simply restart the
NetworkManager service.
-------------------------------------------------------------------------------

View File

@ -0,0 +1,83 @@
Release Notes
[Quectel_WCDMA&LTE_Linux&Android_GobiNet_Driver_V1.5.0]
Date: 2018/04/17
enhancement::
1. support EG20&RG500
2. fix set rx_urb_size as 1520. do not change accroding to MTU
[Quectel_WCDMA&LTE_Linux&Android_GobiNet_Driver_V1.4.3]
Date: 2018/04/16
enhancement::
1. increase QMAP's rx_urb_size to 32KB
[Quectel_WCDMA&LTE_Linux&Android_GobiNet_Driver_V1.4.2]
Date: 2018/04/03
bug fix:
1. fix qmi client can not be released when quectel-CM killed by ¡®kill -9¡¯
[Quectel_WCDMA&LTE_Linux&Android_GobiNet_Driver_V1.4.1]
Date: 2018/02/20
bug fix:
1. fix a compiler error on Kernel lager than 4.11
[Quectel_WCDMA&LTE_Linux&Android_GobiNet_Driver_V1.4.0]
Date: 2018/12/17
bug fix:
1. fix a USB DMA error when built as GobiNet.ko on Kernel lager than 4.15
[Quectel_WCDMA&LTE_Linux&Android_GobiNet_Driver_V1.3.8]
[Quectel_WCDMA&LTE_Linux&Android_GobiNet_Driver_V1.3.7]
Date: 2018/09/25
enhancement:
1. check skb length in tx_fixup functions.
2. when QMAP enabled, set FLAG_RX_ASSEMBLE to advoid 'RX errors' of ifconfig
[Quectel_WCDMA&LTE_Linux&Android_GobiNet_Driver_V1.3.6]
Date: 2018/09/11
enhancement:
1. support EG12 EM12
2. optimization QMAP source code
3. fix compile errors and warnnings on kernel version 4.15
[Quectel_WCDMA&LTE_Linux&Android_GobiNet_Driver_V1.3.5]
Date: 2018/05/12
enhancement:
1. provide two method to enable QMAP function.
1.1 set module parameters 'qmap_mode' to X(1~4) to enable QMAP.
1.2 ifconfig usb0 down, then 'echo X > /sys/class/usbX/qmap_mode' to enable QMAP
for above two method, X(1) used to enable 'IP Aggregation' and X(2~4) to enable 'IP Mux'
2. support bridge mode, also provide two method to enable bridge mode.
2.1 set module parameters 'bridge_mode' to 1 to enable bridge mode.
2.2 'echo 1 > /sys/class/usbX/bridge_mode' to enable bridge mode.
bridge mode setups:
brctl addbr br0; brctl addif br0 eth0; brctl addif usb0; ./quectel-CM; ifconfig br0 up; ifconfig eth0 up
then connect eth0 to PC by ethernet cable. and PC run DHCP tool to obtain network public IP address.
'WCDMA&LTE_QConnectManager_Linux&Android_V1.1.40' and later version is required to use QMAP and bridge mode.
[Quectel_WCDMA&LTE_Linux&Android_GobiNet_Driver_V1.3.4]
Date: 2018/05/07
enhancement:
1. support use 'AT$QCRMCALL=1,1' to setup data call.
when use 'AT$QCRMCALL=1,1', must set module parameters 'qcrmcall_mode' to 1,
and GobiNet Driver will do not tx&rx QMI.
[Quectel_WCDMA&LTE_Linux&Android_GobiNet_Driver_V1.3.3]
Date: 2018/04/04
optimization:
1. optimization QMAP source code
[Quectel_WCDMA&LTE_Linux&Android_GobiNet_Driver_V1.3.2]
Date: 2018/03/23
enhancement:
1. support Qualcomm Mux and Aggregation Protocol (QMAP)
1.1 IP Mux: GobiNet Driver register multiple netcards, one netcards corresponding to one PDP.
and GobiNet Driver will tx/rx multiple IP packets maybe belong to different PDPs in one URB.
1.2 IP Aggregation: GobiNet Driver will rx multiple IP packets in one URB, used to increase throughput theoretically by reducing the number of usb interrupts.
the max rx URB size of MDM9x07 is 4KB, the max rx URB size of MDM9x40&SDX20 is 16KB
[Quectel_WCDMA&LTE_Linux&Android_GobiNet_Driver_V1.3.1]
Date: 2017/11/20
enhancement:
1. support BG96

View File

@ -0,0 +1,458 @@
/*===========================================================================
FILE:
Structs.h
DESCRIPTION:
Declaration of structures used by the Qualcomm Linux USB Network driver
FUNCTIONS:
none
Copyright (c) 2011, Code Aurora Forum. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of Code Aurora Forum nor
the names of its contributors may be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
===========================================================================*/
//---------------------------------------------------------------------------
// Pragmas
//---------------------------------------------------------------------------
#pragma once
//---------------------------------------------------------------------------
// Include Files
//---------------------------------------------------------------------------
#include <linux/etherdevice.h>
#include <linux/ethtool.h>
#include <linux/mii.h>
#include <linux/usb.h>
#include <linux/version.h>
#include <linux/cdev.h>
#include <linux/kthread.h>
#include <linux/poll.h>
#include <linux/completion.h>
#define QUECTEL_WWAN_QMAP 8
#ifdef QUECTEL_WWAN_QMAP
#define QUECTEL_QMAP_MUX_ID 0x81
#endif
#if (LINUX_VERSION_CODE <= KERNEL_VERSION( 2,6,21 ))
static inline void skb_reset_mac_header(struct sk_buff *skb)
{
skb->mac.raw = skb->data;
}
#endif
#if (LINUX_VERSION_CODE <= KERNEL_VERSION( 2,6,22 ))
#define bool u8
#ifndef URB_FREE_BUFFER
#define URB_FREE_BUFFER_BY_SELF //usb_free_urb will not free, should free by self
#define URB_FREE_BUFFER 0x0100 /* Free transfer buffer with the URB */
#endif
/**
* usb_endpoint_type - get the endpoint's transfer type
* @epd: endpoint to be checked
*
* Returns one of USB_ENDPOINT_XFER_{CONTROL, ISOC, BULK, INT} according
* to @epd's transfer type.
*/
static inline int usb_endpoint_type(const struct usb_endpoint_descriptor *epd)
{
return epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK;
}
#endif
#if (LINUX_VERSION_CODE <= KERNEL_VERSION( 2,6,18 ))
/**
* usb_endpoint_dir_in - check if the endpoint has IN direction
* @epd: endpoint to be checked
*
* Returns true if the endpoint is of type IN, otherwise it returns false.
*/
static inline int usb_endpoint_dir_in(const struct usb_endpoint_descriptor *epd)
{
return ((epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN);
}
/**
* usb_endpoint_dir_out - check if the endpoint has OUT direction
* @epd: endpoint to be checked
*
* Returns true if the endpoint is of type OUT, otherwise it returns false.
*/
static inline int usb_endpoint_dir_out(
const struct usb_endpoint_descriptor *epd)
{
return ((epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT);
}
/**
* usb_endpoint_xfer_int - check if the endpoint has interrupt transfer type
* @epd: endpoint to be checked
*
* Returns true if the endpoint is of type interrupt, otherwise it returns
* false.
*/
static inline int usb_endpoint_xfer_int(
const struct usb_endpoint_descriptor *epd)
{
return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
USB_ENDPOINT_XFER_INT);
}
static inline int usb_autopm_set_interface(struct usb_interface *intf)
{ return 0; }
static inline int usb_autopm_get_interface(struct usb_interface *intf)
{ return 0; }
static inline int usb_autopm_get_interface_async(struct usb_interface *intf)
{ return 0; }
static inline void usb_autopm_put_interface(struct usb_interface *intf)
{ }
static inline void usb_autopm_put_interface_async(struct usb_interface *intf)
{ }
static inline void usb_autopm_enable(struct usb_interface *intf)
{ }
static inline void usb_autopm_disable(struct usb_interface *intf)
{ }
static inline void usb_mark_last_busy(struct usb_device *udev)
{ }
#endif
#if (LINUX_VERSION_CODE <= KERNEL_VERSION( 2,6,24 ))
#include "usbnet.h"
#else
#include <linux/usb/usbnet.h>
#endif
#if (LINUX_VERSION_CODE > KERNEL_VERSION( 2,6,25 ))
#include <linux/fdtable.h>
#else
#include <linux/file.h>
#endif
// Used in recursion, defined later below
struct sGobiUSBNet;
/*=========================================================================*/
// Struct sReadMemList
//
// Structure that defines an entry in a Read Memory linked list
/*=========================================================================*/
typedef struct sReadMemList
{
/* Data buffer */
void * mpData;
/* Transaction ID */
u16 mTransactionID;
/* Size of data buffer */
u16 mDataSize;
/* Next entry in linked list */
struct sReadMemList * mpNext;
} sReadMemList;
/*=========================================================================*/
// Struct sNotifyList
//
// Structure that defines an entry in a Notification linked list
/*=========================================================================*/
typedef struct sNotifyList
{
/* Function to be run when data becomes available */
void (* mpNotifyFunct)(struct sGobiUSBNet *, u16, void *);
/* Transaction ID */
u16 mTransactionID;
/* Data to provide as parameter to mpNotifyFunct */
void * mpData;
/* Next entry in linked list */
struct sNotifyList * mpNext;
} sNotifyList;
/*=========================================================================*/
// Struct sURBList
//
// Structure that defines an entry in a URB linked list
/*=========================================================================*/
typedef struct sURBList
{
/* The current URB */
struct urb * mpURB;
/* Next entry in linked list */
struct sURBList * mpNext;
} sURBList;
/*=========================================================================*/
// Struct sClientMemList
//
// Structure that defines an entry in a Client Memory linked list
// Stores data specific to a Service Type and Client ID
/*=========================================================================*/
typedef struct sClientMemList
{
/* Client ID for this Client */
u16 mClientID;
/* Linked list of Read entries */
/* Stores data read from device before sending to client */
sReadMemList * mpList;
/* Linked list of Notification entries */
/* Stores notification functions to be run as data becomes
available or the device is removed */
sNotifyList * mpReadNotifyList;
/* Linked list of URB entries */
/* Stores pointers to outstanding URBs which need canceled
when the client is deregistered or the device is removed */
sURBList * mpURBList;
/* Next entry in linked list */
struct sClientMemList * mpNext;
/* Wait queue object for poll() */
wait_queue_head_t mWaitQueue;
} sClientMemList;
/*=========================================================================*/
// Struct sURBSetupPacket
//
// Structure that defines a USB Setup packet for Control URBs
// Taken from USB CDC specifications
/*=========================================================================*/
typedef struct sURBSetupPacket
{
/* Request type */
u8 mRequestType;
/* Request code */
u8 mRequestCode;
/* Value */
u16 mValue;
/* Index */
u16 mIndex;
/* Length of Control URB */
u16 mLength;
} sURBSetupPacket;
// Common value for sURBSetupPacket.mLength
#define DEFAULT_READ_URB_LENGTH 0x1000
#ifdef CONFIG_PM
#if (LINUX_VERSION_CODE < KERNEL_VERSION( 2,6,29 ))
/*=========================================================================*/
// Struct sAutoPM
//
// Structure used to manage AutoPM thread which determines whether the
// device is in use or may enter autosuspend. Also submits net
// transmissions asynchronously.
/*=========================================================================*/
typedef struct sAutoPM
{
/* Thread for atomic autopm function */
struct task_struct * mpThread;
/* Signal for completion when it's time for the thread to work */
struct completion mThreadDoWork;
/* Time to exit? */
bool mbExit;
/* List of URB's queued to be sent to the device */
sURBList * mpURBList;
/* URB list lock (for adding and removing elements) */
spinlock_t mURBListLock;
/* Length of the URB list */
atomic_t mURBListLen;
/* Active URB */
struct urb * mpActiveURB;
/* Active URB lock (for adding and removing elements) */
spinlock_t mActiveURBLock;
/* Duplicate pointer to USB device interface */
struct usb_interface * mpIntf;
} sAutoPM;
#endif
#endif /* CONFIG_PM */
/*=========================================================================*/
// Struct sQMIDev
//
// Structure that defines the data for the QMI device
/*=========================================================================*/
typedef struct sQMIDev
{
/* Device number */
dev_t mDevNum;
/* Device class */
struct class * mpDevClass;
/* cdev struct */
struct cdev mCdev;
/* is mCdev initialized? */
bool mbCdevIsInitialized;
/* Pointer to read URB */
struct urb * mpReadURB;
//#define READ_QMI_URB_ERROR
#ifdef READ_QMI_URB_ERROR
struct timer_list mReadUrbTimer;
#endif
/* Read setup packet */
sURBSetupPacket * mpReadSetupPacket;
/* Read buffer attached to current read URB */
void * mpReadBuffer;
/* Inturrupt URB */
/* Used to asynchronously notify when read data is available */
struct urb * mpIntURB;
/* Buffer used by Inturrupt URB */
void * mpIntBuffer;
/* Pointer to memory linked list for all clients */
sClientMemList * mpClientMemList;
/* Spinlock for client Memory entries */
spinlock_t mClientMemLock;
/* Transaction ID associated with QMICTL "client" */
atomic_t mQMICTLTransactionID;
} sQMIDev;
/*=========================================================================*/
// Struct sGobiUSBNet
//
// Structure that defines the data associated with the Qualcomm USB device
/*=========================================================================*/
typedef struct sGobiUSBNet
{
atomic_t refcount;
/* Net device structure */
struct usbnet * mpNetDev;
#ifdef QUECTEL_WWAN_QMAP
int m_qmap_mode;
struct net_device *mpQmapNetDev[QUECTEL_WWAN_QMAP];
#ifdef CONFIG_BRIDGE
int m_qmap_bridge_mode[QUECTEL_WWAN_QMAP];
#endif
#endif
#if 1 //def DATA_MODE_RP
bool mbMdm9x07;
bool mbMdm9x06; //for BG96
/* QMI "device" work in IP Mode or ETH Mode */
bool mbRawIPMode;
#ifdef CONFIG_BRIDGE
int m_bridge_mode;
uint m_bridge_ipv4;
unsigned char mHostMAC[6];
#endif
int m_qcrmcall_mode;
#endif
struct completion mQMIReadyCompletion;
bool mbQMIReady;
/* Usb device interface */
struct usb_interface * mpIntf;
/* Pointers to usbnet_open and usbnet_stop functions */
int (* mpUSBNetOpen)(struct net_device *);
int (* mpUSBNetStop)(struct net_device *);
/* Reason(s) why interface is down */
/* Used by Gobi*DownReason */
unsigned long mDownReason;
#define NO_NDIS_CONNECTION 0
#define CDC_CONNECTION_SPEED 1
#define DRIVER_SUSPENDED 2
#define NET_IFACE_STOPPED 3
/* QMI "device" status */
bool mbQMIValid;
bool mbDeregisterQMIDevice;
/* QMI "device" memory */
sQMIDev mQMIDev;
/* Device MEID */
char mMEID[14];
#ifdef CONFIG_PM
#if (LINUX_VERSION_CODE < KERNEL_VERSION( 2,6,29 ))
/* AutoPM thread */
sAutoPM mAutoPM;
#endif
#endif /* CONFIG_PM */
} sGobiUSBNet;
/*=========================================================================*/
// Struct sQMIFilpStorage
//
// Structure that defines the storage each file handle contains
// Relates the file handle to a client
/*=========================================================================*/
typedef struct sQMIFilpStorage
{
/* Client ID */
u16 mClientID;
/* Device pointer */
sGobiUSBNet * mpDev;
} sQMIFilpStorage;

View File

@ -128,7 +128,7 @@ kdrv_ai/nue2/nue2_platform_no_tracer.o/
/493 0 0 0 644 25760 ` /493 0 0 0 644 25760 `
/522 0 0 0 644 792 ` /522 0 0 0 644 792 `
/554 0 0 0 644 6928 ` /554 0 0 0 644 6928 `
/580 0 0 0 644 3100 ` /580 0 0 0 644 3064 `
/605 0 0 0 644 46424 ` /605 0 0 0 644 46424 `
/630 0 0 0 644 33192 ` /630 0 0 0 644 33192 `
/655 0 0 0 644 23192 ` /655 0 0 0 644 23192 `
@ -177,12 +177,12 @@ kdrv_ai/nue2/nue2_platform_no_tracer.o/
/2200 0 0 0 644 6416 ` /2200 0 0 0 644 6416 `
/2245 0 0 0 644 16584 ` /2245 0 0 0 644 16584 `
/2291 0 0 0 644 4468 ` /2291 0 0 0 644 4468 `
/2331 0 0 0 644 2512 ` /2331 0 0 0 644 2472 `
/2370 0 0 0 644 852 ` /2370 0 0 0 644 852 `
/2409 0 0 0 644 64404 ` /2409 0 0 0 644 64404 `
/2451 0 0 0 644 5132 ` /2451 0 0 0 644 5132 `
/2486 0 0 0 644 5724 ` /2486 0 0 0 644 5724 `
/2521 0 0 0 644 3488 ` /2521 0 0 0 644 3452 `
/2555 0 0 0 644 2216 ` /2555 0 0 0 644 2216 `
/2589 0 0 0 644 6332 ` /2589 0 0 0 644 6332 `
/2628 0 0 0 644 30424 ` /2628 0 0 0 644 30424 `
@ -203,7 +203,7 @@ kdrv_ai/nue2/nue2_platform_no_tracer.o/
/3105 0 0 0 644 2096 ` /3105 0 0 0 644 2096 `
/3132 0 0 0 644 4412 ` /3132 0 0 0 644 4412 `
/3160 0 0 0 644 7884 ` /3160 0 0 0 644 7884 `
/3189 0 0 0 644 8732 ` /3189 0 0 0 644 8700 `
/3217 0 0 0 644 6976 ` /3217 0 0 0 644 6976 `
/3245 0 0 0 644 23524 ` /3245 0 0 0 644 23524 `
/3278 0 0 0 644 5320 ` /3278 0 0 0 644 5320 `

View File

@ -7,7 +7,7 @@
version-info = [00 01 00 01]; version-info = [00 01 00 01];
ae_expect_lum { ae_expect_lum {
size = [b0 00 00 00]; size = [b0 00 00 00];
data = [32 00 00 00 40 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 49 00 00 00 53 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00]; data = [32 00 00 00 40 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 49 00 00 00 53 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00];
}; };
ae_la_clamp { ae_la_clamp {
size = [50 01 00 00]; size = [50 01 00 00];
@ -23,7 +23,7 @@
}; };
ae_curve_gen_movie { ae_curve_gen_movie {
size = [10 01 00 00]; size = [10 01 00 00];
data = [f4 01 00 00 01 00 00 00 2c 00 00 00 64 00 00 00 00 00 00 00 00 00 00 00 1a 41 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 35 82 00 00 90 01 00 00 00 00 00 00 00 00 00 00 35 82 00 00 40 06 00 00 00 00 00 00 00 00 00 00 35 82 00 00 00 32 00 00 00 00 00 00 00 00 00 00 80 38 01 00 00 19 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 19 00 00 01 00 00 00 10 00 00 00 00 00 00 00 b8 0b 00 00 b8 0b 00 00 60 09 00 00 e2 04 00 00 d0 07 00 00 d0 07 00 00 dc 05 00 00 dc 05 00 00 b0 04 00 00 b0 04 00 00 00 00 00 00 f6 ec 00 00 00 00 00 00]; data = [f4 01 00 00 01 00 00 00 2c 00 00 00 64 00 00 00 00 00 00 00 00 00 00 00 1a 41 00 00 90 01 00 00 00 00 00 00 00 00 00 00 35 82 00 00 90 01 00 00 00 00 00 00 00 00 00 00 35 82 00 00 40 06 00 00 00 00 00 00 00 00 00 00 35 82 00 00 00 32 00 00 00 00 00 00 00 00 00 00 80 38 01 00 00 19 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 19 00 00 01 00 00 00 10 00 00 00 00 00 00 00 b8 0b 00 00 b8 0b 00 00 60 09 00 00 e2 04 00 00 d0 07 00 00 d0 07 00 00 dc 05 00 00 dc 05 00 00 b0 04 00 00 b0 04 00 00 00 00 00 00 f6 ec 00 00 00 00 00 00];
}; };
ae_meter_window { ae_meter_window {
size = [00 01 00 00]; size = [00 01 00 00];

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

View File

@ -69,12 +69,14 @@ SRC = \
code/source/common/sf_common.c \ code/source/common/sf_common.c \
code/source/common/sf_led.c \ code/source/common/sf_led.c \
code/source/common/sf_battery.c \ code/source/common/sf_battery.c \
code/source/common/sf_base64.c \
code/source/module/sf_tcp.c \ code/source/module/sf_tcp.c \
code/source/module/sf_http.c \ code/source/module/sf_http.c \
code/source/module/sf_4G_auto_operation.c \ code/source/module/sf_4G_auto_operation.c \
code/source/module/sf_4G_usb_uart.c \ code/source/module/sf_4G_usb_uart.c \
code/source/module/sf_sim.c \ code/source/module/sf_sim.c \
code/source/module/sf_hal_ttyusb.c \
code/source/debug/sf_log.c \
OBJ = $(SRC:.c=.o) OBJ = $(SRC:.c=.o)

View File

@ -0,0 +1,23 @@
#ifndef _SF_BASE64_H_
#define _SF_BASE64_H_
#include "sf_type.h"
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
int sf_base64_decode(const char * base64, char * bindata);
char * sf_base64_encode(const char * bindata, char * base64, int binlength, int model);
int URLEncode(const char* str, const int strSize, char* result, const int resultSize);
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
#endif

View File

@ -61,8 +61,12 @@ BOOL sf_cmd_auto_off_time(unsigned char argc, char **argv);
BOOL sf_cmd_battery_log_switch(unsigned char argc, char **argv); BOOL sf_cmd_battery_log_switch(unsigned char argc, char **argv);
BOOL sf_cmd_get_cam_state(unsigned char argc, char **argv); BOOL sf_cmd_get_cam_state(unsigned char argc, char **argv);
BOOL sf_cmd_reset(unsigned char argc, char **argv); BOOL sf_cmd_reset(unsigned char argc, char **argv);
BOOL sf_cmd_mcu_power_on_para_get(unsigned char argc, char **argv);
UINT32 sf_set_pir_sensitivity(UINT8 pirs); UINT32 sf_set_pir_sensitivity(UINT8 pirs);
void sf_usb_mux_s(UINT32 cnt);
BOOL sf_cmd_usb_mux_s(unsigned char argc, char **argv);
#define SF_SD_DISK "A:" #define SF_SD_DISK "A:"
#define SF_SD_ROOT "/mnt/sd/"
#endif #endif

View File

@ -0,0 +1,89 @@
/**************************************************************************
*
* Copyright (c) 2015-2020 by WuYuan Technology, Inc.
*
* This software is copyrighted by and is the property of SiFar
* Technology, Inc.. All rights are reserved by SiFar Technology, Inc..
* This software may only be used in accordance with the corresponding
* license agreement. Any unauthorized use, duplication, distribution,
* or disclosure of this software is expressly forbidden.
*
* This Copyright notice MUST not be removed or modified without prior
* written consent of SiFar Technology, Inc..
*
* SiFar Technology, Inc. reserves the right to modify this software without notice.
*
* Author: jiamin
* Ver: 1.0.0 2020.09.17
* Description: creat
**************************************************************************/
#ifndef _SF_TTYAPI_H_
#define _SF_TTYAPI_H_
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
#include <sf_type.h>
#define SF_TTY_ERROR_OPEN SF_ERR_ID(SF_MOD_TTY, ERROR_AT_OPEN)
#define SF_TTY_ERROR_WRITE SF_ERR_ID(SF_MOD_TTY, ERROR_AT_WRITE)
#define SF_TTY_ERROR_READ SF_ERR_ID(SF_MOD_TTY, ERROR_AT_READ)
#define GPRS_MODULE_TYPE_EG91 "EG91"
#define GPRS_MODULE_TYPE_EG95 "EG95"
#define GPRS_MODULE_TYPE_EG91_V "EG91VX"
#define GPRS_MODULE_TYPE_EG95_V "EG95VX"
#define GPRS_MODULE_TYPE_EG91_NAXD "EG91NAXD"
#define GPRS_MODULE_TYPE_EG95_NAXD "EG95NAXD"
#define A_MODULE_APN "nxtgenphone"
#define V_MODULE_APN "vzwinternet"
#define E_PDP_INDEX 7
#define V_PDP_INDEX 3
#define A_PDP_INDEX 1
typedef struct sf_SERIAL_DATA_FRAME_TYPE_S {
SF_CHAR parity;
SF_CHAR flow_ctrl;
SINT8 databits;
SINT8 stopbits;
SINT32 speed;
}SF_SERIAL_DATA_FRAME_TYPE_S;
SINT32 sf_hal_ttyusb2_init(void);
SINT32 sf_hal_ttyusb2_write(SF_CHAR *sendBuf, SINT32 dataLen);
SINT32 sf_hal_ttyusb2_read(SF_CHAR *recvBuf, SINT32 dataLen);
SINT32 sf_hal_ttyusb2_deinit(void);
SINT32 sf_hal_uart_init(void);
SINT32 sf_hal_uart_write(SF_CHAR *sendBuf, SINT32 dataLen);
SINT32 sf_hal_uart_read(SF_CHAR *recvBuf, SINT32 dataLen);
SINT32 sf_hal_uart_deinit(void);
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
#endif

View File

@ -12,5 +12,8 @@
#include <sf_led.h> #include <sf_led.h>
#include <sf_battery.h> #include <sf_battery.h>
#include <sf_commu_mcu.h> #include <sf_commu_mcu.h>
#include <sf_type.h>
#include <sf_hal_ttyusb.h>
#include <sf_log.h>
#endif #endif

View File

@ -0,0 +1,113 @@
/**************************************************************************
*
* Copyright (c) 2015-2020 by WuYuan Technology, Inc.
*
* This software is copyrighted by and is the property of SiFar
* Technology, Inc.. All rights are reserved by SiFar Technology, Inc..
* This software may only be used in accordance with the corresponding
* license agreement. Any unauthorized use, duplication, distribution,
* or disclosure of this software is expressly forbidden.
*
* This Copyright notice MUST not be removed or modified without prior
* written consent of SiFar Technology, Inc..
*
* WuYuan Technology, Inc. reserves the right to modify this software without notice.
*
* Author: Kola
* Ver: 1.0.0 2021.04.15
* Description: create
**************************************************************************/
#ifndef _SF_LOG_H_
#define _SF_LOG_H_
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/ioctl.h>
#include <pthread.h>
#include "sf_type.h"
#include "sf_inc.h"
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
#define LOG_TMP_MOD_FILE_PATH SF_SD_ROOT"SF_GPS.TXT"
#define LOG_AT_FILE_PATH SF_SD_ROOT"SF_GPS.TXT"
#define WARNING_FILE_PATH SF_SD_ROOT"warning.txt"
#define INFO_FILE_PATH SF_SD_ROOT"info.txt"
#define SF_ENCRYPTION_ENBLE 1
typedef enum SF_LOG_LEVEL_E
{
SF_LOG_LEVEL_ERROR = 0, /**<error conditions */
SF_LOG_LEVEL_WARNING, /**<warning conditions */
SF_LOG_LEVEL_INFO, /**<informational */
SF_LOG_LEVEL_DEBUG, /**<debug-level */
} SF_LOG_LEVEL_e;
#define NONE "\033[m"
#define RED "\033[0;32;31m"
#define LIGHT_RED "\033[1;31m"
#define GREEN "\033[0;32;32m"
#define LIGHT_GREEN "\033[1;32m"
#define BLUE "\033[0;32;34m"
#define LIGHT_BLUE "\033[1;34m"
#define DARY_GRAY "\033[1;30m"
#define CYAN "\033[0;36m"
#define LIGHT_CYAN "\033[1;36m"
#define PURPLE "\033[0;35m"
#define LIGHT_PURPLE "\033[1;35m"
#define BROWN "\033[0;33m"
#define YELLOW "\033[1;33m"
#define LIGHT_GRAY "\033[0;37m"
#define WHITE "\033[1;37m"
//#define MLOGI(format, args...) (printf( LIGHT_GREEN "[INFO]: %s[%d]:"NONE format, __FUNCTION__ , __LINE__, ##args))
//
//#define MLOGD(format, args...) (printf( LIGHT_PURPLE "[DEBUG]: %s[%d]:"NONE format, __FUNCTION__ , __LINE__, ##args))
//
//#define MLOGW(format, args...) (printf( YELLOW "[WARN]: %s[%d]:"NONE format, __FUNCTION__ , __LINE__, ##args))
//
//#define MLOGE(format, args...) (printf( LIGHT_RED "[ERROR]: %s[%d]:"NONE format, __FUNCTION__ , __LINE__, ##args))
#define MLOGE(fmt, args...) sf_log_file(SF_LOG_LEVEL_ERROR, __FUNCTION__, __LINE__, fmt, ##args)
#define MLOGW(fmt, args...) sf_log_file(SF_LOG_LEVEL_WARNING, __FUNCTION__, __LINE__, fmt, ##args)
#define MLOGI(fmt, args...) sf_log_file(SF_LOG_LEVEL_INFO, __FUNCTION__, __LINE__, fmt, ##args)
#define MLOGD(fmt, args...) sf_log_file(SF_LOG_LEVEL_DEBUG, __FUNCTION__, __LINE__, fmt, ##args)
#define SLOGE(fmt, args...) sf_log_file(SF_LOG_LEVEL_ERROR, __FUNCTION__, __LINE__, fmt, ##args)
#define SLOGW(fmt, args...) sf_log_file(SF_LOG_LEVEL_WARNING, __FUNCTION__, __LINE__, fmt, ##args)
#define SLOGI(fmt, args...) sf_log_file(SF_LOG_LEVEL_INFO, __FUNCTION__, __LINE__, fmt, ##args)
#define SLOGD(fmt, args...) sf_log_file(SF_LOG_LEVEL_DEBUG, __FUNCTION__, __LINE__, fmt, ##args)
#define SLOG_DM(fmt, args...) sf_log_module(__FUNCTION__, __LINE__, fmt, ##args)
SINT32 sf_log_Level_set(SF_LOG_LEVEL_e enLevel);
SF_LOG_LEVEL_e sf_log_Level_get(void);
void sf_log_module(const char *pszFunc, U32 u32Line, const char *pszFmt, ...);
void sf_log_file(SF_LOG_LEVEL_e enLevel,const char *pszFunc, U32 u32Line,char *pszFmt, ...);
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
#endif

View File

@ -415,6 +415,7 @@ void sf_calculate_daily_report(UINT8*dailyHour, UINT8*dailyMin);
void sf_set_power_off_flag(UINT8 flag); void sf_set_power_off_flag(UINT8 flag);
UINT8 sf_get_power_off_flag(void); UINT8 sf_get_power_off_flag(void);
int sf_while_flag(void); int sf_while_flag(void);
UINT8 sf_mcu_power_on_para_get(MCUParam_t attrId);
#endif #endif

View File

@ -0,0 +1,52 @@
#ifndef _SF_TYPE_H_
#define _SF_TYPE_H_
#ifndef SF_DATA_TYPE
#define SF_DATA_TYPE
//typedef unsigned long int UINT64;
//typedef unsigned int UINT32;
//typedef unsigned short UINT16;
//typedef unsigned char UINT8;
typedef signed long int SINT64;
typedef signed int SINT32;
typedef signed short SINT16;
typedef signed char SINT8;
typedef unsigned char UCHAR;
typedef unsigned char U8;
typedef unsigned short U16;
typedef unsigned int U32;
typedef unsigned int long ULONG;
typedef unsigned long int U64;
//typedef signed char CHAR;
typedef char S8;
typedef short S16;
typedef int S32;
typedef long SLONG;
typedef signed long int S64;
typedef char SF_CHAR;
typedef unsigned char SF_BOOL;
typedef void SF_VOID;
#define SF_NULL 0L
#define SF_SUCCESS 0
#define SF_FAILURE (-1)
#define SUCCESS 0
#define FAIL 1
#define SF_TRUE 1
#define SF_FALSE 0
#endif
#endif

View File

@ -0,0 +1,145 @@
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include "sf_type.h"
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
static char * base64char = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
int sf_base64_decode(const char * base64, char * bindata)
{
int i, j;
U8 k;
U8 temp[4];
for (i = 0, j = 0; base64[i] != '\0'; i += 4)
{
memset(temp, 0xFF, sizeof(temp));
for (k = 0; k < 64; k++)
{
if (base64char[k] == base64[i])
temp[0] = k;
}
for (k = 0; k < 64; k++)
{
if (base64char[k] == base64[i + 1])
temp[1] = k;
}
for (k = 0; k < 64; k++)
{
if (base64char[k] == base64[i + 2])
temp[2] = k;
}
for (k = 0; k < 64; k++)
{
if (base64char[k] == base64[i + 3])
temp[3] = k;
}
bindata[j++] = ((U8)(((U8)(temp[0] << 2)) & 0xFC)) |
((U8)((U8)(temp[1] >> 4) & 0x03));
if (base64[i + 2] == '=')
break;
bindata[j++] = ((U8)(((U8)(temp[1] << 4)) & 0xF0)) |
((U8)((U8)(temp[2] >> 2) & 0x0F));
if (base64[i + 3] == '=')
break;
bindata[j++] = ((U8)(((U8)(temp[2] << 6)) & 0xF0)) |
((U8)(temp[3] & 0x3F));
}
return j;
}
char * sf_base64_encode(const char * bindata, char * base64, int binlength, int model)
{
int i, j;
unsigned char current;
for (i = 0, j = 0; i < binlength; i += 3)
{
current = (bindata[i] >> 2);
current &= (unsigned char)0x3F;
base64[j++] = base64char[(int)current];
current = ((unsigned char)(bindata[i] << 4)) & ((unsigned char)0x30);
if (i + 1 >= binlength)
{
base64[j++] = base64char[(int)current];
base64[j++] = '=';
base64[j++] = '=';
break;
}
current |= ((unsigned char)(bindata[i + 1] >> 4)) & ((unsigned char)0x0F);
base64[j++] = base64char[(int)current];
current = ((unsigned char)(bindata[i + 1] << 2)) & ((unsigned char)0x3C);
if (i + 2 >= binlength)
{
base64[j++] = base64char[(int)current];
base64[j++] = '=';
break;
}
current |= ((unsigned char)(bindata[i + 2] >> 6)) & ((unsigned char)0x03);
base64[j++] = base64char[(int)current];
current = ((unsigned char)bindata[i + 2]) & ((unsigned char)0x3F);
base64[j++] = base64char[(int)current];
}
if(model)
{
base64[j++] = '\n';
}
base64[j] = '\0';
return base64;
}
int URLEncode(const char* str, const int strSize, char* result, const int resultSize)
{
int i;
int j = 0;//for result index
char ch;
if ((str == 0) || (result == 0) || (strSize <= 0) || (resultSize <= 0)) {
return 0;
}
for (i = 0; (i<strSize) && (j<resultSize); ++i) {
ch = str[i];
if (((ch >= 'A') && (ch<='Z')) ||
((ch >= 'a') && (ch<='z')) ||
((ch >= '0') && (ch<='9'))) {
result[j++] = ch;
}
else if (ch == ' ') {
result[j++] = '+';
}
else if (ch == '.' || ch == '-' || ch == '_' || ch == '*') {
result[j++] = ch;
}
else {
if (j + 3 < resultSize) {
sprintf(result + j, "%%%02X", (unsigned char)ch);
j += 3;
}
else {
return 0;
}
}
}
result[j] = '\0';
return j;
}
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif

View File

@ -1032,6 +1032,15 @@ BOOL sf_cmd_reset(unsigned char argc, char **argv)
return TRUE; return TRUE;
} }
BOOL sf_cmd_mcu_power_on_para_get(unsigned char argc, char **argv)
{
printf("[%s:%d] s\n", __FUNCTION__, __LINE__);
sf_mcu_power_on_para_get(SF_MCU_POWERON);
printf("[%s:%d] e\n", __FUNCTION__, __LINE__);
return TRUE;
}
UINT32 sf_set_pir_sensitivity(UINT8 pirs) UINT32 sf_set_pir_sensitivity(UINT8 pirs)
{ {
@ -1060,4 +1069,28 @@ UINT32 sf_set_pir_sensitivity(UINT8 pirs)
//#SF#2023/03/02#Payton - end //#SF#2023/03/02#Payton - end
void sf_usb_mux_s(UINT32 cnt)
{
static UINT8 cntflag = 1;
printf("[%s:%d] s\n", __FUNCTION__, __LINE__);
if(1 == cntflag)
{
cntflag = 0;
gpio_direction_output(GPIO_USB_MUX_S, 1);
}
gpio_set_value(GPIO_USB_MUX_S, cnt);
printf("[%s:%d] e cnt:%d\n", __FUNCTION__, __LINE__,cnt);
}
BOOL sf_cmd_usb_mux_s(unsigned char argc, char **argv)
{
UINT32 value;
sscanf_s(argv[0],"%d", &value);
printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value);
if(value < SF_ON_OFF_MAX){
sf_usb_mux_s(value);
}
printf("[%s:%d] e\n", __FUNCTION__, __LINE__);
return TRUE;
}

View File

@ -0,0 +1,274 @@
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <termios.h>
#include <sys/stat.h>
#include <sys/vfs.h>
#include <stdarg.h>
#include <sf_type.h>
#include <sf_base64.h>
#include <sf_log.h>
#include "UIInfo/UIInfo.h"
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
#if SF_ENCRYPTION_ENBLE
U16 gDebugMode = 0;
#else
U16 gDebugMode = 1;
#endif
int gsave_logtxt = 0;
static SF_LOG_LEVEL_e enLogLevel = SF_LOG_LEVEL_DEBUG;
/*=========================================================================
* Log *
*=========================================================================*/
static char * base64char = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
static void log_base64_encode(const char * bindata, char * base64, int binlength, int model)
{
int i, j;
unsigned char current;
for (i = 0, j = 0; i < binlength; i += 3)
{
current = (bindata[i] >> 2);
current &= (unsigned char)0x3F;
base64[j++] = base64char[(int)current];
current = ((unsigned char)(bindata[i] << 4)) & ((unsigned char)0x30);
if (i + 1 >= binlength)
{
base64[j++] = base64char[(int)current];
base64[j++] = '=';
base64[j++] = '=';
break;
}
current |= ((unsigned char)(bindata[i + 1] >> 4)) & ((unsigned char)0x0F);
base64[j++] = base64char[(int)current];
current = ((unsigned char)(bindata[i + 1] << 2)) & ((unsigned char)0x3C);
if (i + 2 >= binlength)
{
base64[j++] = base64char[(int)current];
base64[j++] = '=';
break;
}
current |= ((unsigned char)(bindata[i + 2] >> 6)) & ((unsigned char)0x03);
base64[j++] = base64char[(int)current];
current = ((unsigned char)bindata[i + 2]) & ((unsigned char)0x3F);
base64[j++] = base64char[(int)current];
}
if(model)
{
base64[j++] = '\n';
}
base64[j] = '\0';
//return base64;
}
static U16 sf_get_dbgmode(void)
{
return gDebugMode;
}
SINT32 sf_log_Level_set(SF_LOG_LEVEL_e enLevel)
{
enLogLevel = enLevel;
return SF_SUCCESS;
}
SF_LOG_LEVEL_e sf_log_Level_get()
{
return enLogLevel;
}
void sf_log_module(const char *pszFunc, U32 u32Line, const char *pszFmt, ...)
{
if(SysGetFlag(DebugMode) == 0)
return;
FILE* flog;
U16 debugMode = sf_get_dbgmode();
{
va_list args;
pszFmt = (NULL == pszFmt) ? "" : pszFmt;
CHAR timeBuf[128] = { 0 };
CHAR tmpBuf[512] = { 0 };
CHAR allBuf[640] = { 0 };
CHAR enCodeLog[1024] = { 0 };
#ifdef SF_LOG_USE_RTC_TIME
SF_PARA_TIME_S dateTime;
#endif
flog = fopen(LOG_TMP_MOD_FILE_PATH, "at");
if(flog != NULL)
{
fseek(flog, 0L, SEEK_END);
#ifdef SF_LOG_USE_RTC_TIME
sf_sys_rtc_time_get(&dateTime);
sprintf(timeBuf, "[%s-%d]:%04d/%02d/%02d %02d:%02d:%02d ", pszFunc, u32Line, dateTime.Year, dateTime.Mon, dateTime.Day,
dateTime.Hour, dateTime.Min, dateTime.Sec);
#else
time_t timep;
struct tm *p;
time(&timep);
p = gmtime(&timep);
sprintf((char*)timeBuf, "%04d/%02d/%02d %02d:%02d:%02d ", p->tm_year + 1900, p->tm_mon + 1, p->tm_mday,
p->tm_hour, p->tm_min, p->tm_sec);
#endif
va_start(args, pszFmt);
vsprintf((char*)tmpBuf, pszFmt, args);
if(debugMode == 0)
{
sprintf((char*)allBuf, "%s%s", timeBuf, tmpBuf);
log_base64_encode((char*)allBuf, (char*)enCodeLog, strlen((char*)allBuf),1);
fprintf(flog, "%s\n", enCodeLog);
}
else
{
fprintf(flog, "%s%s\n", timeBuf, tmpBuf);
}
fclose(flog);
}
else
{
MLOGE("LOG file[%s] open fail!\n",LOG_TMP_MOD_FILE_PATH);
}
fprintf(stdout, "[%s:%d]:",pszFunc, u32Line);
va_start(args, pszFmt);
vfprintf(stdout, pszFmt, args);
va_end(args);
}
return;
}
void sf_log_file(SF_LOG_LEVEL_e enLevel,const char *pszFunc, U32 u32Line,char *pszFmt, ...)
{
SF_LOG_LEVEL_e enDstLevel;
FILE* flog = NULL;
U16 debugMode = sf_get_dbgmode();
enDstLevel = sf_log_Level_get();
if(enLevel <= enDstLevel)
{
va_list args;
pszFmt = (NULL == pszFmt) ? "" : pszFmt;
if(enLevel <= SF_LOG_LEVEL_DEBUG)
{
CHAR tmpBuf[2048] = { 0 };
CHAR enCodeLog[2048] = { 0 };
if(SysGetFlag(DebugMode) == 1) {
flog = fopen(LOG_AT_FILE_PATH, "at");
}
else if(enLevel == SF_LOG_LEVEL_ERROR) {
flog = fopen(LOG_AT_FILE_PATH, "at");
}
else if(enLevel == SF_LOG_LEVEL_INFO) {
flog = fopen(INFO_FILE_PATH, "at");
}
if(flog != NULL)
{
fseek(flog, 0L, SEEK_END);
if(enLevel != SF_LOG_LEVEL_WARNING)
{
time_t timep;
struct tm *p;
time(&timep);
p = gmtime(&timep);
sprintf((char*)tmpBuf,"[%04d/%02d/%02d %02d:%02d:%02d] [%s-%d]:",p->tm_year + 1900, p->tm_mon + 1, p->tm_mday,
p->tm_hour, p->tm_min, p->tm_sec,pszFunc, u32Line);
if(debugMode == 1)
{
log_base64_encode((char*)tmpBuf, (char*)enCodeLog, strlen((char*)tmpBuf),1);
fprintf(flog, "%s", enCodeLog);
va_start(args, pszFmt);
vsprintf((char*)tmpBuf, pszFmt, args);
log_base64_encode((char*)tmpBuf, (char*)enCodeLog, strlen((char*)tmpBuf),1);
fprintf(flog, "%s", enCodeLog);
va_end(args);
}
else
{
fprintf(flog, "%s", tmpBuf);
va_start(args, pszFmt);
vsprintf((char*)tmpBuf, pszFmt, args);
fprintf(flog, "%s", tmpBuf);
va_end(args);
}
}
else
{
va_start(args, pszFmt);
vsprintf((char*)tmpBuf, pszFmt, args);
fprintf(flog, "%s", tmpBuf);
va_end(args);
}
fclose(flog);
}
}
if(enLevel == SF_LOG_LEVEL_ERROR)
{
fprintf(stdout,LIGHT_RED "[SF ERR][%s:%d]"NONE,pszFunc, u32Line);
}
else if(enLevel == SF_LOG_LEVEL_WARNING)
{
fprintf(stdout,YELLOW "[SF WARN][%s:%d]"NONE,pszFunc, u32Line);
}
else if(enLevel == SF_LOG_LEVEL_INFO)
{
fprintf(stdout,LIGHT_GREEN "[SF INFO][%s:%d]"NONE,pszFunc, u32Line);
}
else if(enLevel == SF_LOG_LEVEL_DEBUG)
{
fprintf(stdout,LIGHT_PURPLE "[SF DBG][%s:%d]"NONE,pszFunc, u32Line);
}
va_start(args, pszFmt);
vfprintf(stdout, pszFmt, args);
va_end(args);
}
return;
}
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif

View File

@ -1887,3 +1887,4 @@ int sf_while_flag(void)
} }
} }

View File

@ -0,0 +1,415 @@
/**************************************************************************
*
* Copyright (c) 2009-2018 by SiFar Technology, Inc.
*
* This software is copyrighted by and is the property of SiFar
* Technology, Inc.. All rights are reserved by SiFar Technology, Inc..
* This software may only be used in accordance with the corresponding
* license agreement. Any unauthorized use, duplication, distribution,
* or disclosure of this software is expressly forbidden.
*
* This Copyright notice MUST not be removed or modified without prior
* written consent of SiFar Technology, Inc..
*
* SiFar Technology, Inc. reserves the right to modify this software without notice.
*
* Author: jiamin
*
* Ver: 1.0.0 2020/9/10
*
**************************************************************************/
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <termios.h>
#include <sf_inc.h>
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
static SINT32 TtyUSB2Fd = -1;
static SINT32 UartFd = -1;
static SINT32 hal_ttyusb_open(SF_CHAR* deviceName)
{
SINT16 ret = -1;
SINT32 fd = -1;
fd = open(deviceName, O_RDWR|O_NOCTTY|O_NONBLOCK);
if (-1 == fd)
{
return SF_FAILURE;
}
ret = fcntl(fd, F_SETFL, 0);
if(ret < 0)
{
MLOGE("fcntl failed!\n");
return SF_FAILURE;
}
return fd;
}
static SINT32 hal_ttyusb_config(SINT32 fd, SF_SERIAL_DATA_FRAME_TYPE_S *pSerialAttr)
{
UINT32 i;
SINT32 speed_arr[] = {B115200, B460800};
SINT32 name_arr[] = {115200, 460800};
struct termios options;
if(tcgetattr( fd,&options) != 0)
{
printf("SetupSerial 1");
return SF_FAILURE;
}
//cfmakeraw(&options);
for (i= 0; i < sizeof(speed_arr) / sizeof(int); i++)
{
if(pSerialAttr->speed == name_arr[i])
{
cfsetispeed(&options, speed_arr[i]);
cfsetospeed(&options, speed_arr[i]);
}
}
#if 1
//options.c_cflag |= CLOCAL;
//options.c_cflag |= CREAD;
switch(pSerialAttr->flow_ctrl)
{
case 'n':
case 'N'://不使用流控制
options.c_cflag &= ~(600);//CRTSCTS;
break;
case 'h':
case 'H'://使用硬件流控制
options.c_cflag |= 600;//CRTSCTS;
break;
case 'S':
case 's'://使用软件流控制
options.c_cflag |= IXON | IXOFF | IXANY;
break;
}
//设置数据位
options.c_cflag &= ~CSIZE; //屏蔽其他标志位
switch (pSerialAttr->databits)
{
case 5:
options.c_cflag |= CS5;
break;
case 6:
options.c_cflag |= CS6;
break;
case 7:
options.c_cflag |= CS7;
break;
case 8:
options.c_cflag |= CS8;
break;
default:
fprintf(stderr,"Unsupported data size/n");
return SF_FAILURE;
}
//设置校验位
switch (pSerialAttr->parity)
{
case 'n':
case 'N': //无奇偶校验位
options.c_cflag &= ~PARENB;
options.c_iflag &= ~INPCK;
break;
case 'o':
case 'O'://设置为奇校验
options.c_cflag |= (PARODD | PARENB);
options.c_iflag |= INPCK;
break;
case 'e':
case 'E'://设置为偶校验
options.c_cflag |= PARENB;
options.c_cflag &= ~PARODD;
options.c_iflag |= INPCK;
break;
case 's':
case 'S': //设置为空格
options.c_cflag &= ~PARENB;
options.c_cflag &= ~CSTOPB;
break;
default:
fprintf(stderr,"Unsupported parity/n");
return SF_FAILURE;
}
// 设置停止位
switch (pSerialAttr->stopbits)
{
case 1:
options.c_cflag &= ~CSTOPB;
break;
case 2:
options.c_cflag |= CSTOPB;
break;
default:
fprintf(stderr,"Unsupported stop bits/n");
return SF_FAILURE;
}
//修改输出模式,原始数据输出
options.c_oflag &= ~OPOST;
//激活配置 (将修改后的termios数据设置到串口中)
if (tcsetattr(fd,TCSANOW,&options) != 0)
{
printf("com set error!/n");
return SF_FAILURE;
}
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG );
options.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON);
//设置等待时间和最小接收字符
options.c_cc[VTIME] = 0;
options.c_cc[VMIN] = 1;
//如果发生数据溢出,接收数据,但是不再读取
tcflush(fd,TCIFLUSH);
#endif
//激活配置 (将修改后的termios数据设置到串口中)
if (tcsetattr(fd,TCSANOW,&options) != 0)
{
printf("com set error!/n");
return SF_FAILURE;
}
return SF_SUCCESS;
}
static SINT32 hal_ttyusb_write(SINT32 fd, SF_CHAR *sendBuf, SINT32 dataLen)
{
SINT32 len = 0;
len = write(fd,sendBuf,dataLen);
if (len == dataLen )
{
return SF_SUCCESS;
}
else
{
tcflush(fd,TCOFLUSH);
MLOGE("write fail!\n");
return SF_FAILURE;
}
}
#if 0
static SINT32 hal_ttyusb_read(SINT32 fd, SF_CHAR *recvBuf, SINT32 waitTime)
{
//SF_PDT_PARAM_CFG_S *sfParam = sf_customer_param_get();
SINT32 retv = 0;
if(waitTime > 0)
sf_sleep_ms(waitTime);
retv = read(fd, recvBuf, SF_TTYUSB_RECV_MAX); /*read data*/
if(retv == -1)
{
MLOGE("read bad1"); /*check read is ok*/
return SF_FAILURE;
}
return SF_SUCCESS;
}
#else
static SINT32 hal_ttyusb_read(SINT32 fd, SF_CHAR *recvBuf, SINT32 waitTime)
{
//SF_PDT_PARAM_CFG_S *sfParam = sf_customer_param_get();
SINT32 s32ret = 0;
fd_set read_fds;
struct timeval TimeoutVal;
if(waitTime > 0)
usleep(waitTime * 1000);
while(waitTime--){
FD_ZERO(&read_fds);
FD_SET(fd, &read_fds);
TimeoutVal.tv_sec = 0;
TimeoutVal.tv_usec = 10000;
s32ret = select(fd + 1, &read_fds, NULL, NULL, &TimeoutVal);
if (s32ret > 0) {
if (FD_ISSET(fd, &read_fds)) {
s32ret = read(fd, recvBuf, 580);
if (s32ret > 0) {
break;
}
}
FD_CLR(fd, &read_fds);
}
else if (s32ret < 0) {
//MLOGE(" select failed\n");
continue;
}
else if (0 == s32ret) {
//MLOGW("FIFO select timeout [%d]\n",waitTime);
continue;
}
}
return SF_SUCCESS;
}
#endif
static SINT32 hal_ttyusb_create(SF_CHAR *ttyusbName,SF_SERIAL_DATA_FRAME_TYPE_S *pSerialAttr,SINT32 *pttyfd)
{
SINT32 ret = SF_FAILURE;
SINT8 i = 0;
while(i < 2)
{
if(SF_FAILURE < (*pttyfd = hal_ttyusb_open(ttyusbName)))
break;
i++;
usleep(100000);
}
if(*pttyfd <= 0)
return SF_FAILURE;
ret = hal_ttyusb_config(*pttyfd,pSerialAttr);
if(SF_FAILURE == ret)
{
MLOGE("config [%s] Fail!\n",ttyusbName);
return SF_FAILURE;
}
return ret;
}
static SINT32 hal_ttyusb_destory(SINT32 fd)
{
int ret = 0;
int count = 0;
while ((ret = close(fd)) < 0)
{
usleep(100000);
count++;
if(count > 10)
{
MLOGE("Close USB File Failed.\n");
break;
}
}
return ret;
}
SINT32 sf_hal_ttyusb2_init(void)
{
SINT32 ret = SF_FAILURE;
if(TtyUSB2Fd > 0)
{
MLOGE("[/dev/ttyUSB2] has already inited !!!\n");
return SF_FAILURE;
}
SF_SERIAL_DATA_FRAME_TYPE_S stserialtype = {0};
stserialtype.parity = 'N';
stserialtype.flow_ctrl = 'N';
stserialtype.speed = 460800;
stserialtype.databits = 8;
stserialtype.stopbits = 1;
ret = hal_ttyusb_create("/dev/ttyUSB2",&stserialtype,&TtyUSB2Fd);
return ret;
}
SINT32 sf_hal_ttyusb2_write(SF_CHAR *sendBuf, SINT32 dataLen)
{
return hal_ttyusb_write(TtyUSB2Fd,sendBuf,dataLen);
}
SINT32 sf_hal_ttyusb2_read(SF_CHAR *recvBuf, SINT32 dataLen)
{
return hal_ttyusb_read(TtyUSB2Fd,recvBuf,dataLen);
}
SINT32 sf_hal_ttyusb2_deinit(void)
{
if(TtyUSB2Fd < 0)
{
MLOGE("[/dev/ttyUSB2] has already deinited !!!\n");
return SF_FAILURE;
}
return hal_ttyusb_destory(TtyUSB2Fd);
}
SINT32 sf_hal_uart_init(void)
{
SINT32 ret = SF_FAILURE;
if(UartFd > 0)
{
MLOGE("[/dev/ttyS2] has already inited !!!\n");
return SF_FAILURE;
}
SF_SERIAL_DATA_FRAME_TYPE_S stserialtype = {0};
stserialtype.parity = 'N';
stserialtype.flow_ctrl = 'N';
stserialtype.speed = 115200;
stserialtype.databits = 8;
stserialtype.stopbits = 1;
ret = hal_ttyusb_create("/dev/ttyS2",&stserialtype,&UartFd);
return ret;
}
SINT32 sf_hal_uart_write(SF_CHAR *sendBuf, SINT32 dataLen)
{
return hal_ttyusb_write(UartFd,sendBuf,dataLen);
}
SINT32 sf_hal_uart_read(SF_CHAR *recvBuf, SINT32 dataLen)
{
return hal_ttyusb_read(UartFd,recvBuf,dataLen);
}
SINT32 sf_hal_uart_deinit(void)
{
if(UartFd < 0)
{
MLOGE("[/dev/ttyUSB2] has already deinited !!!\n");
return SF_FAILURE;
}
return hal_ttyusb_destory(UartFd);
}
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif

View File

@ -1,6 +1,6 @@
; Source Insight Project File List ; Source Insight Project File List
; Project Name: na51089_linux_sdk ; Project Name: na51089_linux_sdk
; Generated by Source Insight 4.00.0107 at 2023/3/28 16:08:21 ; Generated by Source Insight 4.00.0107 at 2023/4/7 16:06:09
; Version=4.00.0107 ; Version=4.00.0107
; ;
; Each line should contain either a file name, a wildcard, or a sub-directory name. ; Each line should contain either a file name, a wildcard, or a sub-directory name.
@ -196,6 +196,7 @@ application\source\cardv\SrcCode\PrjCfg_HUNTING_S530.h
application\source\cardv\SrcCode\PrjInc.h application\source\cardv\SrcCode\PrjInc.h
application\source\cardv\SrcCode\ProjectInfo.h application\source\cardv\SrcCode\ProjectInfo.h
application\source\cardv\SrcCode\Startup\bin_info.c application\source\cardv\SrcCode\Startup\bin_info.c
application\source\cardv\SrcCode\Startup\sifar_app.c
application\source\cardv\SrcCode\Startup\startup.c application\source\cardv\SrcCode\Startup\startup.c
application\source\cardv\SrcCode\Startup\startup.h application\source\cardv\SrcCode\Startup\startup.h
application\source\cardv\SrcCode\System\app-main.c application\source\cardv\SrcCode\System\app-main.c
@ -5002,30 +5003,37 @@ lib\source\pcm_anr\Makefile
lib\source\playback\Makefile lib\source\playback\Makefile
lib\source\PStore\Makefile lib\source\PStore\Makefile
lib\source\QRCode\Makefile lib\source\QRCode\Makefile
lib\source\sifar\code\include\sf_base64.h
lib\source\sifar\code\include\sf_battery.h lib\source\sifar\code\include\sf_battery.h
lib\source\sifar\code\include\sf_common.h lib\source\sifar\code\include\sf_common.h
lib\source\sifar\code\include\sf_commu_mcu.h lib\source\sifar\code\include\sf_commu_mcu.h
lib\source\sifar\code\include\sf_dbg.h lib\source\sifar\code\include\sf_dbg.h
lib\source\sifar\code\include\sf_gps.h lib\source\sifar\code\include\sf_gps.h
lib\source\sifar\code\include\sf_hal_ttyusb.h
lib\source\sifar\code\include\sf_http.h lib\source\sifar\code\include\sf_http.h
lib\source\sifar\code\include\sf_inc.h lib\source\sifar\code\include\sf_inc.h
lib\source\sifar\code\include\sf_led.h lib\source\sifar\code\include\sf_led.h
lib\source\sifar\code\include\sf_log.h
lib\source\sifar\code\include\sf_mcu.h lib\source\sifar\code\include\sf_mcu.h
lib\source\sifar\code\include\sf_pc_tool.h lib\source\sifar\code\include\sf_pc_tool.h
lib\source\sifar\code\include\sf_sd_common.h lib\source\sifar\code\include\sf_sd_common.h
lib\source\sifar\code\include\sf_sim.h lib\source\sifar\code\include\sf_sim.h
lib\source\sifar\code\include\sf_tcp.h lib\source\sifar\code\include\sf_tcp.h
lib\source\sifar\code\include\sf_type.h
lib\source\sifar\code\source\common\sf_base64.c
lib\source\sifar\code\source\common\sf_battery.c lib\source\sifar\code\source\common\sf_battery.c
lib\source\sifar\code\source\common\sf_common.c lib\source\sifar\code\source\common\sf_common.c
lib\source\sifar\code\source\common\sf_led.c lib\source\sifar\code\source\common\sf_led.c
lib\source\sifar\code\source\common\sf_pc_tool.c lib\source\sifar\code\source\common\sf_pc_tool.c
lib\source\sifar\code\source\common\sf_sd_common.c lib\source\sifar\code\source\common\sf_sd_common.c
lib\source\sifar\code\source\debug\sf_dbg.c lib\source\sifar\code\source\debug\sf_dbg.c
lib\source\sifar\code\source\debug\sf_log.c
lib\source\sifar\code\source\mcu\sf_commu_mcu.c lib\source\sifar\code\source\mcu\sf_commu_mcu.c
lib\source\sifar\code\source\mcu\sf_mcu_client.c lib\source\sifar\code\source\mcu\sf_mcu_client.c
lib\source\sifar\code\source\module\sf_4G_auto_operation.c lib\source\sifar\code\source\module\sf_4G_auto_operation.c
lib\source\sifar\code\source\module\sf_4G_usb_uart.c lib\source\sifar\code\source\module\sf_4G_usb_uart.c
lib\source\sifar\code\source\module\sf_gps.c lib\source\sifar\code\source\module\sf_gps.c
lib\source\sifar\code\source\module\sf_hal_ttyusb.c
lib\source\sifar\code\source\module\sf_http.c lib\source\sifar\code\source\module\sf_http.c
lib\source\sifar\code\source\module\sf_sim.c lib\source\sifar\code\source\module\sf_sim.c
lib\source\sifar\code\source\module\sf_tcp.c lib\source\sifar\code\source\module\sf_tcp.c

View File

@ -28,7 +28,7 @@ linux/debug_no_tracer.o/
/285 0 0 0 644 17776 ` /285 0 0 0 644 17776 `
/316 0 0 0 644 4612 ` /316 0 0 0 644 4612 `
/352 0 0 0 644 4648 ` /352 0 0 0 644 4648 `
/384 0 0 0 644 6724 ` /384 0 0 0 644 6716 `
/413 0 0 0 644 16652 ` /413 0 0 0 644 16652 `
/441 0 0 0 644 4668 ` /441 0 0 0 644 4668 `
/467 0 0 0 644 5484 ` /467 0 0 0 644 5484 `

View File

@ -48,6 +48,7 @@ echo sen1=${SENSOR1}
MV_KO_LIST=(\ MV_KO_LIST=(\
/lib/modules/$KERVER/extra/mcu/drv_sf_i2c_mcu.ko \ /lib/modules/$KERVER/extra/mcu/drv_sf_i2c_mcu.ko \
/lib/modules/$KERVER/extra/net/GobiNet/drv_gobi_net.ko \
/lib/modules/$KERVER/extra/crypto/cryptodev-linux/cryptodev.ko \ /lib/modules/$KERVER/extra/crypto/cryptodev-linux/cryptodev.ko \
/lib/modules/$KERVER/vos/kwrap/kwrap.ko \ /lib/modules/$KERVER/vos/kwrap/kwrap.ko \
/lib/modules/$KERVER/hdal/comm/nvtmem/nvtmem.ko \ /lib/modules/$KERVER/hdal/comm/nvtmem/nvtmem.ko \
@ -93,6 +94,14 @@ MV_KO_LIST=(\
/lib/modules/$KERVER/kernel/drivers/iio/adc/nvt_adc.ko \ /lib/modules/$KERVER/kernel/drivers/iio/adc/nvt_adc.ko \
/lib/modules/$KERVER/hdal/comm/uvcp/nvt_uvcp.ko \ /lib/modules/$KERVER/hdal/comm/uvcp/nvt_uvcp.ko \
/lib/modules/$KERVER/hdal/comm/usb2dev/nvt_usb2dev.ko \ /lib/modules/$KERVER/hdal/comm/usb2dev/nvt_usb2dev.ko \
/lib/modules/$KERVER/kernel/drivers/usb/serial/option.ko \
/lib/modules/$KERVER/kernel/drivers/usb/serial/usb_wwan.ko \
/lib/modules/$KERVER/kernel/drivers/usb/serial/usbserial.ko \
/lib/modules/$KERVER/kernel/drivers/net/usb/usbnet.ko \
/lib/modules/$KERVER/kernel/drivers/net/usb/cdc_ether.ko \
/lib/modules/$KERVER/kernel/drivers/net/usb/qmi_wwan.ko \
/lib/modules/$KERVER/kernel/drivers/usb/ehci-hcd.ko \
/lib/modules/$KERVER/kernel/drivers/net/mii.ko \
) )
if [ -d ${ROOTFS_DIR}/rootfs/etc/lib ]; then if [ -d ${ROOTFS_DIR}/rootfs/etc/lib ]; then

View File

@ -200,5 +200,5 @@
pgpio11{gpio_config = <P_GPIO(11) 1>;}; /*led*/ pgpio11{gpio_config = <P_GPIO(11) 1>;}; /*led*/
/* pgpio7{gpio_config = <P_GPIO(7) 0>;}; */ /* pgpio7{gpio_config = <P_GPIO(7) 0>;}; */
pgpio2{gpio_config = <P_GPIO(2) 0>;};/*USB_MUX_S : set 0 to host, set 1 to 4G*/ pgpio2{gpio_config = <P_GPIO(2) 1>;};/*USB_MUX_S : set 0 to host, set 1 to 4G*/
}; };

View File

@ -1020,11 +1020,12 @@ void flow_preview_uninit_module(void)
} }
} }
#if 1//(AE_PRESET_FUNC == ENABLE) #if 1 //for pre set ae
static UINT32 ae_adc_tbl[57][3] = { static UINT32 ae_adc_tbl[57][3] = {
/* {980, 120, 1000}, #if 0 //for 200K RSS photodie
{980, 120, 1000},
{970, 250, 1000},//{970, 300, 1000}, {970, 250, 1000},//{970, 300, 1000},
{960, 300, 1000},//{960, 500, 1000}, {960, 300, 1000},//{960, 500, 1000},
{945, 400, 1000}, {945, 400, 1000},
@ -1081,16 +1082,16 @@ static UINT32 ae_adc_tbl[57][3] = {
{5, 33333, 2000},//10740}, {5, 33333, 2000},//10740},
{2, 33333, 2000},//128000}, {2, 33333, 2000},//128000},
{0, 33333, 6000},//128000}, {0, 33333, 6000},//128000},
*/ #else // 1K RSS
{980, 120, 1000}, {980, 120, 1000},
{970, 250, 1000},//{970, 300, 1000}, {970, 250, 1000},
{960, 250, 1000},//{960, 500, 1000}, {960, 250, 1000},
{945, 250, 1000}, {945, 250, 1000},
{930, 250, 1000}, {930, 250, 1000},
{910, 250, 1000}, {910, 250, 1000},
{900, 250, 1000}, {900, 250, 1000},
{885, 250, 1000}, {885, 250, 1000},
{870, 300, 1000},//{870, 2000, 1000}, {870, 300, 1000},
{850, 300, 1000}, {850, 300, 1000},
{840, 300, 1000}, {840, 300, 1000},
{832, 300, 1000}, {832, 300, 1000},
@ -1104,7 +1105,7 @@ static UINT32 ae_adc_tbl[57][3] = {
{723, 400, 1000}, {723, 400, 1000},
{671, 400, 1000}, {671, 400, 1000},
{641, 500, 1000}, {641, 500, 1000},
{600, 500, 1000},// night {600, 500, 1000},
{538, 500, 1000}, {538, 500, 1000},
{503, 500, 1000}, {503, 500, 1000},
{484, 500, 1000}, {484, 500, 1000},
@ -1114,32 +1115,32 @@ static UINT32 ae_adc_tbl[57][3] = {
{353, 800, 1000}, {353, 800, 1000},
{330, 800, 1000}, {330, 800, 1000},
{324, 800, 1000}, {324, 800, 1000},
{314, 800, 1000},//6890 {314, 800, 1000},
{306, 900, 1000}, {306, 900, 1000},
{277, 1000, 1000},//6610 {277, 1000, 1000},
{257, 1200, 1000},//7280 {257, 1200, 1000},
{109, 2700, 1000},//8130 {109, 2700, 1000},
{84, 4201, 1000},//10260 {84, 4201, 1000},
{76, 4201, 1000}, {76, 4201, 1000},// night
{60, 5801, 1000}, {60, 5801, 1000},
{49, 5801, 1000}, {49, 5801, 1000},
{36, 5801, 1000},//25070 {36, 5801, 1000},
{31, 7332, 1000}, {31, 7332, 1000},
{26, 7332, 1000},//33740}, {26, 7332, 1000},
{19, 8333, 1000},//45740}, {19, 8333, 1000},
{17, 8333, 1000},//48740}, {17, 8333, 1000},
{15, 8333, 1000},//54740}, {15, 8333, 1000},
{13, 8333, 1000},//58740}, {13, 8333, 1000},
{12, 8333, 1000},//61040}, {12, 8333, 1000},
{11, 8333, 1000},//68040}, {11, 8333, 1000},
{10, 8333, 1000},//69920},// {10, 8333, 1000},
{9, 8333, 1000},//74920}, {9, 8333, 1000},
{8, 16666, 1000},//77740}, {8, 16666, 1000},
{6, 16666, 2000},//83740}, {6, 16666, 2000},
{5, 16666, 2000},//10740}, {5, 16666, 2000},
{2, 33333, 2000},//128000}, {2, 33333, 2000},
{0, 33333, 6000},//128000}, {0, 33333, 6000},
#endif
}; };
@ -1170,52 +1171,29 @@ void ae_adc_get_exp_photo(UINT16 adc_value, UINT32 *exptime, UINT32 *isogain)
ev0 = (exptime0 * isogain0); ev0 = (exptime0 * isogain0);
ev1 = (exptime1 * isogain1); ev1 = (exptime1 * isogain1);
//adc_ev = ((ev1 - ev0) * (ae_adc_tbl[idx1][0]-adc_value))/(ae_adc_tbl[idx1][0]-ae_adc_tbl[idx0][0]) + ev0;
adc_ev = ((ev1 - ev0) * (adc_value - ae_adc_tbl[idx1][0]))/(ae_adc_tbl[idx0][0] - ae_adc_tbl[idx1][0]) + ev0; adc_ev = ((ev1 - ev0) * (adc_value - ae_adc_tbl[idx1][0]))/(ae_adc_tbl[idx0][0] - ae_adc_tbl[idx1][0]) + ev0;
*exptime = exptime0; *exptime = exptime0;
*isogain = (adc_ev / exptime0); *isogain = (adc_ev / exptime0);
} }
DBG_ERR("idx = %d, %d, adc = %d, fast open preset exp = %d, %d\r\n", idx0, idx1, adc_value, *exptime, *isogain); DBG_WRN("idx = %d, %d, adc = %d, fast open preset exp = %d, %d\r\n", idx0, idx1, adc_value, *exptime, *isogain);
} }
//static void get_ae_preset(UINT32 *p_exp_time, UINT32 *p_gain_ratio) void get_preset_param(void)
//UINT32 g_presetgain;
void get_preset_param(void)
{ {
static BOOL get_preset_flag=FALSE; static BOOL get_preset_flag=FALSE;
//HD_RESULT hd_ret;
//UINT16 adc_value;
UINT32 adc_expt, adc_gain; UINT32 adc_expt, adc_gain;
//ISPT_TOTAL_GAIN total_gain = {0};
if(get_preset_flag==FALSE) if(get_preset_flag==FALSE)
{ {
//adc_value= sf_mcu_irshutter_get_adc();
ae_adc_get_exp_photo(IRSHTTER, &adc_expt, &adc_gain); ae_adc_get_exp_photo(IRSHTTER, &adc_expt, &adc_gain);
preset_param.expt= adc_expt; preset_param.expt= adc_expt;
preset_param.gain= adc_gain; preset_param.gain= adc_gain;
//g_presetgain = adc_gain/10; DBG_WRN("adc_value = %d, adc_exp =========== %d, %d\r\n", IRSHTTER, (unsigned int)adc_expt, (unsigned int)adc_gain);
DBG_ERR("adc_value = %d, adc_exp =========== %d, %d\r\n", IRSHTTER, (unsigned int)adc_expt, (unsigned int)adc_gain); get_preset_flag=TRUE;
/*
if ((hd_ret = vendor_isp_init()) != HD_OK) {
DBG_ERR("vendor_isp_init fail(%d)\n", hd_ret);
}
total_gain.id = 0;
total_gain.gain = adc_gain/10;
vendor_isp_set_common(ISPT_ITEM_TOTAL_GAIN, &total_gain);
if ((hd_ret = vendor_isp_uninit()) != HD_OK) {
DBG_ERR("vendor_isp_uninit fail(%d)\n", hd_ret);
}*/
get_preset_flag=TRUE;
} }
} }
@ -1225,7 +1203,7 @@ void setet_preset_param(void)
ae_status_info.id = 0; ae_status_info.id = 0;
vendor_isp_get_ae(AET_ITEM_STATUS, &ae_status_info); vendor_isp_get_ae(AET_ITEM_STATUS, &ae_status_info);
DBG_ERR(">> aet status exp %d iso %d\r\n",ae_status_info.status_info.expotime[0],ae_status_info.status_info.iso_gain[0]); DBG_WRN(">> aet status exp %d iso %d\r\n",ae_status_info.status_info.expotime[0],ae_status_info.status_info.iso_gain[0]);
preset_param.expt= ae_status_info.status_info.expotime[0]; preset_param.expt= ae_status_info.status_info.expotime[0];
preset_param.gain= ae_status_info.status_info.iso_gain[0]; preset_param.gain= ae_status_info.status_info.iso_gain[0];
} }

View File

@ -946,7 +946,7 @@
#define MOVIE_AI_DEMO DISABLE #define MOVIE_AI_DEMO DISABLE
#define HUNTING_MCU_I2C DISABLE #define HUNTING_MCU_I2C DISABLE
#define HUNTING_MCU_UART ENABLE #define HUNTING_MCU_UART ENABLE
#define HUNTING_IR_LED_940 ENABLE//DISABLE #define HUNTING_IR_LED_940 DISABLE
#define SF_BASE_VERSION "7MD4RCwD3T2" #define SF_BASE_VERSION "7MD4RCwD3T2"
/******************************************************************************************* /*******************************************************************************************

View File

@ -728,6 +728,7 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg)
*/ */
MovieFast_SetRecInfoByUISetting(); MovieFast_SetRecInfoByUISetting();
Set_NIGHTMODE(0, 1); Set_NIGHTMODE(0, 1);
Set_AEMODE(0);
#if (_PACKAGE_DISPLAY_) #if (_PACKAGE_DISPLAY_)
gMovie_Disp_Info.vout_ctrl = GxVideo_GetDeviceCtrl(DOUT1,DISPLAY_DEVCTRL_CTRLPATH); gMovie_Disp_Info.vout_ctrl = GxVideo_GetDeviceCtrl(DOUT1,DISPLAY_DEVCTRL_CTRLPATH);
@ -818,6 +819,7 @@ THREAD_RETTYPE MovieFast_InitMovieModeThread(void *arg)
MovieFast_InstallID(); MovieFast_InstallID();
vos_util_delay_ms(300); vos_util_delay_ms(300);
Set_AEMODE(1); Set_AEMODE(1);
vos_util_delay_ms(300);
if ((g_moviefast_tsk_id = vos_task_create(MovieFast_CmdTsk, 0, "MovieFastTsk", PRI_MOVIEFAST_CMDTSK, STKSIZE_MOVIEFAST_CMDTSK)) == 0) { if ((g_moviefast_tsk_id = vos_task_create(MovieFast_CmdTsk, 0, "MovieFastTsk", PRI_MOVIEFAST_CMDTSK, STKSIZE_MOVIEFAST_CMDTSK)) == 0) {
DBG_ERR("MovieFastTsk create failed.\r\n"); DBG_ERR("MovieFastTsk create failed.\r\n");

View File

@ -64,6 +64,8 @@
#define PRI_PHOTOFAST_CMDTSK 11 #define PRI_PHOTOFAST_CMDTSK 11
#define STKSIZE_PHOTOFAST_CMDTSK 4096 #define STKSIZE_PHOTOFAST_CMDTSK 4096
#define FASTCAPTURE_AE_DEBUG 1
//global variable //global variable
static _FDB_SN_FASTBOOT g_fdb_sn_fastboot={ static _FDB_SN_FASTBOOT g_fdb_sn_fastboot={
FALSE, FALSE,
@ -1334,7 +1336,7 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg)
PhotoFast_SliceEncode2_Open(vprc_path, max_cnt); PhotoFast_SliceEncode2_Open(vprc_path, max_cnt);
#endif #endif
#if (FASTCAPTURE_AE_DEBUG == 1)
if (g_bFrmCnt == 0){ if (g_bFrmCnt == 0){
// Set_NIGHTMODE(0); // Set_NIGHTMODE(0);
// nvt_cmdsys_runcmd("vcap info"); // nvt_cmdsys_runcmd("vcap info");
@ -1344,10 +1346,9 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg)
isp_dbg_set_dbg_mode(0, 0x0003000 ); isp_dbg_set_dbg_mode(0, 0x0003000 );
nvt_cmdsys_runcmd("ae set_speed 0 128 600 700 100 "); nvt_cmdsys_runcmd("ae set_speed 0 128 600 700 100 ");
} }
#endif
while(g_bPreViewPullFlag) { while(g_bPreViewPullFlag) {
if (g_bFrmCnt == 7){; if (g_bFrmCnt == 4){;
//DBG_ERR(">>>>>>>>>>>>>g_bFrmCnt 2\r\n");
Set_AEMODE(1); Set_AEMODE(1);
//setet_preset_param(); //setet_preset_param();
} }
@ -1375,7 +1376,7 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg)
// vos_perf_list_mark("yuv", __LINE__, 0); // vos_perf_list_mark("yuv", __LINE__, 0);
//} //}
if(++g_bFrmCnt >= 11){//PHOTOFAST_CAP_FRAME_CNT){ if(++g_bFrmCnt >= 7){//PHOTOFAST_CAP_FRAME_CNT){
start_cap = TRUE; start_cap = TRUE;
//Set_AEMODE(1); //Set_AEMODE(1);
} }
@ -1451,7 +1452,7 @@ THREAD_RETTYPE PhotoFast_FlowPreviewThread(void *arg)
if (g_bPreViewPullFlag == FALSE) { if (g_bPreViewPullFlag == FALSE) {
// DrvGPIO_IRLed_Turn_Onoff(0); // DrvGPIO_IRLed_Turn_Onoff(0);
Set_AEMODE(0);
g_bFrmCnt = 0; g_bFrmCnt = 0;
PhotoFast_PhotoClose(); PhotoFast_PhotoClose();
@ -1568,9 +1569,6 @@ static void PhotoFast_ShutDown(void)
#if 1 #if 1
void Set_NIGHTMODE(UINT32 id, UINT8 isSnapVideo) void Set_NIGHTMODE(UINT32 id, UINT8 isSnapVideo)
{ {
//AET_MANUAL ae_manual = {0};
//AWBT_STATUS awb_status = {0};
#if HUNTING_CAMERA_MCU == ENABLE #if HUNTING_CAMERA_MCU == ENABLE
IQT_NIGHT_MODE night_mode = {0}; IQT_NIGHT_MODE night_mode = {0};
@ -1582,11 +1580,10 @@ void Set_NIGHTMODE(UINT32 id, UINT8 isSnapVideo)
if ((hd_ret = vendor_isp_init()) != HD_OK) { if ((hd_ret = vendor_isp_init()) != HD_OK) {
DBG_ERR("vendor_isp_init() fail(%d)\r\n", hd_ret); DBG_ERR("vendor_isp_init() fail(%d)\r\n", hd_ret);
} }
DBG_ERR("????????????????nght mode\r\n");
DrvGOIO_Turn_Onoff_IRCUT(0); DrvGOIO_Turn_Onoff_IRCUT(0);
//DrvGPIO_IRLed_Turn_Onoff(1); //DrvGPIO_IRLed_Turn_Onoff(1);
printf("[%s:%d]s NightMode:%d FlashLed:%d\n",__FUNCTION__,__LINE__,((2 == SysGetFlag(NightMode)) ? 2 : 1), SysGetFlag(FlashLed)); // printf("[%s:%d]s NightMode:%d FlashLed:%d\n",__FUNCTION__,__LINE__,((2 == SysGetFlag(NightMode)) ? 2 : 1), SysGetFlag(FlashLed));
sf_ir_led_set(((2 == SysGetFlag(NightMode)) ? 2 : 1),SysGetFlag(FlashLed), SysGetFlag(NightMode),isSnapVideo); sf_ir_led_set(((2 == SysGetFlag(NightMode)) ? 2 : 1),SysGetFlag(FlashLed), SysGetFlag(NightMode),isSnapVideo);
awb_manual.id = 0; awb_manual.id = 0;
awb_manual.manual.en = 1; awb_manual.manual.en = 1;
@ -1650,6 +1647,8 @@ if (id == 1)
ae_manual.manual.mode = 2; ae_manual.manual.mode = 2;
else else
ae_manual.manual.mode = 0; ae_manual.manual.mode = 0;
DBG_ERR(">> >>>>>>>>>aet manual mode %d\r\n",ae_manual.manual.mode);
vendor_isp_set_ae(AET_ITEM_MANUAL, &ae_manual); vendor_isp_set_ae(AET_ITEM_MANUAL, &ae_manual);
/*if(sf_is_night_mode(0) ==FALSE) /*if(sf_is_night_mode(0) ==FALSE)

View File

@ -1487,7 +1487,7 @@ if (ae_preset_flag == FALSE){
i2c_valid[id] = TRUE; i2c_valid[id] = TRUE;
if ((!is_fastboot[id]) || (fastboot_i2c_id[id] != sen_i2c[id].id) || (fastboot_i2c_addr[id] != sen_i2c[id].addr)) { if ((!is_fastboot[id]) || (fastboot_i2c_id[id] != sen_i2c[id].id) || (fastboot_i2c_addr[id] != sen_i2c[id].addr)) {
rt = sen_i2c_init_driver(id, &sen_i2c[id]); rt = sen_i2c_init_driver(id, &sen_i2c[id]);
if (rt != E_OK) { if (rt != E_OK) {
i2c_valid[id] = FALSE; i2c_valid[id] = FALSE;

View File

@ -7,7 +7,7 @@
version-info = [00 01 00 01]; version-info = [00 01 00 01];
ae_expect_lum { ae_expect_lum {
size = [b0 00 00 00]; size = [b0 00 00 00];
data = [32 00 00 00 40 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 49 00 00 00 53 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00]; data = [32 00 00 00 40 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 41 00 00 00 49 00 00 00 53 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00];
}; };
ae_la_clamp { ae_la_clamp {
size = [50 01 00 00]; size = [50 01 00 00];
@ -23,7 +23,7 @@
}; };
ae_curve_gen_movie { ae_curve_gen_movie {
size = [10 01 00 00]; size = [10 01 00 00];
data = [f4 01 00 00 01 00 00 00 2c 00 00 00 64 00 00 00 00 00 00 00 00 00 00 00 1a 41 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 35 82 00 00 90 01 00 00 00 00 00 00 00 00 00 00 35 82 00 00 40 06 00 00 00 00 00 00 00 00 00 00 35 82 00 00 00 32 00 00 00 00 00 00 00 00 00 00 80 38 01 00 00 19 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 19 00 00 01 00 00 00 10 00 00 00 00 00 00 00 b8 0b 00 00 b8 0b 00 00 60 09 00 00 e2 04 00 00 d0 07 00 00 d0 07 00 00 dc 05 00 00 dc 05 00 00 b0 04 00 00 b0 04 00 00 00 00 00 00 f6 ec 00 00 00 00 00 00]; data = [f4 01 00 00 01 00 00 00 2c 00 00 00 64 00 00 00 00 00 00 00 00 00 00 00 1a 41 00 00 90 01 00 00 00 00 00 00 00 00 00 00 35 82 00 00 90 01 00 00 00 00 00 00 00 00 00 00 35 82 00 00 40 06 00 00 00 00 00 00 00 00 00 00 35 82 00 00 00 32 00 00 00 00 00 00 00 00 00 00 80 38 01 00 00 19 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 20 4e 00 00 c8 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 19 00 00 01 00 00 00 10 00 00 00 00 00 00 00 b8 0b 00 00 b8 0b 00 00 60 09 00 00 e2 04 00 00 d0 07 00 00 d0 07 00 00 dc 05 00 00 dc 05 00 00 b0 04 00 00 b0 04 00 00 00 00 00 00 f6 ec 00 00 00 00 00 00];
}; };
ae_meter_window { ae_meter_window {
size = [00 01 00 00]; size = [00 01 00 00];

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,90 @@
/*
* Novatek Ltd. NVT9856x ISP part of dts
*/
&iq {
os05b10_iq_0_vid {
version-info = [00 03 00 01];
iq_ob {
size = [58 01 00 00];
data = [00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00];
};
iq_nr {
size = [f4 12 00 00];
data = [01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 00 01 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 02 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 01 00 00 00 02 00 00 00 03 00 00 00 05 00 00 00 06 00 00 00 09 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 00 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 07 00 00 00 00 00 00 00 02 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 05 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 00 00 00 00 0c 00 00 00 80 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 ff 00 00 00 00 00 00 00 00 00 20 00 00 00 f7 00 00 00 84 01 00 00 73 03 00 00 e3 0b 00 00 c6 02 00 00 b9 03 00 00 1a 05 00 00 69 08 00 00 41 0f 00 00 00 00 80 00 02 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 00 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 07 00 00 00 02 00 00 00 04 00 00 00 04 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 05 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 08 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 00 00 00 00 03 00 00 00 06 00 00 00 09 00 00 00 09 00 00 00 0c 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 08 00 00 00 10 00 00 00 08 00 00 00 10 00 00 00 00 00 00 00 0e 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 02 00 00 00 03 00 00 00 05 00 00 00 06 00 00 00 09 00 00 00 00 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 00 00 00 00 03 00 00 00 06 00 00 00 09 00 00 00 09 00 00 00 0c 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 0
4 00 00 00 04 00 00 00 04 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 08 00 00 00 10 00 00 00 08 00 00 00 10 00 00 00 00 00 00 00 0c 00 00 00 01 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 03 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 09 00 00 00 00 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00 08 00 00 00 09 00 00 00 0a 00 00 00 0b 00 00 00 0c 00 00 00 0d 00 00 00 0e 00 00 00 0f 00 00 00 10 00 00 00 11 00 00 00 11 00 00 00 12 00 00 00 13 00 00 00 00 00 00 00 03 00 00 00 06 00 00 00 09 00 00 00 09 00 00 00 0c 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 08 00 00 00 10 00 00 00 08 00 00 00 10 00 00 00 00 00 00 00 0f 00 00 00 02 00 00 00 01 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 05 00 00 00 07 00 00 00 09 00 00 00 0a 00 00 00 0e 00 00 00 01 00 00 00 07 00 00 00 0c 00 00 00 11 00 00 00 13 00 00 00 13 00 00 00 0d 00 00 00 0f 00 00 00 10 00 00 00 12 00 00 00 13 00 00 00 14 00 00 00 16 00 00 00 17 00 00 00 18 00 00 00 19 00 00 00 1a 00 00 00 00 00 00 00 0f 00 00 00 16 00 00 00 1b 00 00 00 1f 00 00 00 2c 00 00 00 00 00 00 00 0a 00 00 00 0c 00 00 00 0e 00 00 00 10 00 00 00 12 00 00 00 14 00 00 00 16 00 00 00 17 00 00 00 19 00 00 00 1a 00 00 00 1b 00 00 00 1d 00 00 00 1e 00 00 00 1f 00 00 00 20 00 00 00 21 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 0a 00 00 00 18 00 00 00 10 00 00 00 18 00 00 00 00 00 00 00 0f 00 00 00 02 00 00 00 02 00 00 00 00 01 ff 00 00 00 00 00 00 00 00 00 20 00 00 00 96 03 00 00 35 06 00 00 3d 09 00 00 41 0f 00 00 20 00 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 08 00 00 00 0c 00 00 00 0e 00 00 00 11 00 00 00 18 00 00 00 0d 00 00 00 1b 00 00 00 21 00 00 00 25 00 00 00 29 00 00 00 2d 00 00 00 30 00 00 00 33 00 00 00 35 00 00 00 38 00 00 00 3a 00 00 00 3c 00 00 00 3e 00 00 00 40 00 00 00 42 00 00 00 44 00 00 00 46 00 00 00 00 00 00 00 1e 00 00 00 2a 00 00 00 34 00 00 00 3c 00 00 00 55 00 00 00 00 00 00 00 12 00 00 00 19 00 00 00 1f 00 00 00 24 00 00 00 28 00 00 00 2c 00 00 00 2f 00 00 00 32 00 00 00 36 00 00 00 38 00 00 00 3b 00 00 00 3e 00 00 00 40 00 00 00 43 00 00 00 45 00 00 00 48 00 00 00 0f 00 00 00 00 00 00 00 40 00 00 00 0a 00 00 00 30 00 00 00 10 00 00 00 1d 00 00 00 00 00 00 00 0f 00 00 00 02 00 00 00 01 00 00 00 00 01 ff 00 00 00 00 00 00 00 00 00 20 00 00 00 96 03 00 00 35 06 00 00 3d 09 00 00 41 0f 00 00 20 00 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 08 00 00 00 0c 00 00 00 0e 00 00 00 11 00 00 00 18 00 00 00 00 00 00 00 0e 00 00 00 14 00 00 00 18 00 00 00 1c 00 00 00 20 00 00 00 23 00 00 00 26 00 00 00 28 00 00 00 2b 00 00 00 2d 00 00 00 2f 00 00 00 31 00 00 00 33 00 00 00 35 00 00 00 37 00 00 00 39 00 00 00 00 00 00 00 26 00 00 00 36 00 00 00 42 00 00 00 4d 00 00 00 6c 00 00 00 01 00 00 00 47 00 00 00 35 00 00 00 3e 00 00 00 31 00 00 00 37 00 00 00 3c 00 00 00 41 00 00 00 46 00 00 00 4a 00 00 00 4e 00 00 00 51 00 00 00 55 00 00 00 58 00 00 00 5c 00 00 00 5f 00 00 00 62 00 00 00 0f 00 00 00 00 00 00 00 20 00 00 00 0a 00 00 00 30 00 00 00 10 00 00 00 30 00 00 00 00 00 00 00 0f 00 00 00 02 00 00 00 01 00 00 00 00 01 ff 00 00 00 00 00 00 00 00 00 20 00 00 00 96 03 00 00 35 06 00 00 3d 09 00 00 41 0f 00 00 20 00 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 0d 00 00 00 12 00 00 00 16 00 00 00 1a 00 00 00 25 00 00 00 00 00 00 00 17 00 00 00 20 00 00 00 28 00 00 00 2e 00 00 00 33 00 00 00 38 00 00 00 3d 00 00 00 41 00 00 00 45 00 00 00 49 00 00 00 4c 00 00 00 50 00 00 00 53 00 00 00 56 00 00 00 59 00 00 00 5
c 00 00 00 00 00 00 00 55 00 00 00 79 00 00 00 94 00 00 00 ab 00 00 00 f2 00 00 00 00 00 00 00 21 00 00 00 2f 00 00 00 3a 00 00 00 43 00 00 00 4b 00 00 00 52 00 00 00 58 00 00 00 5f 00 00 00 64 00 00 00 6a 00 00 00 6f 00 00 00 74 00 00 00 79 00 00 00 7d 00 00 00 82 00 00 00 86 00 00 00 0f 00 00 00 00 00 00 00 40 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 12 00 00 00 03 00 00 00 02 00 00 00 00 01 ff 00 01 00 00 00 00 00 00 00 20 00 00 00 96 03 00 00 35 06 00 00 3d 09 00 00 41 0f 00 00 20 00 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 0d 00 00 00 12 00 00 00 16 00 00 00 1a 00 00 00 25 00 00 00 00 00 00 00 17 00 00 00 20 00 00 00 28 00 00 00 2e 00 00 00 33 00 00 00 38 00 00 00 3d 00 00 00 41 00 00 00 45 00 00 00 49 00 00 00 4c 00 00 00 50 00 00 00 53 00 00 00 56 00 00 00 59 00 00 00 5c 00 00 00 00 00 00 00 79 00 00 00 ab 00 00 00 d2 00 00 00 f2 00 00 00 57 01 00 00 00 00 00 00 3a 00 00 00 52 00 00 00 65 00 00 00 74 00 00 00 82 00 00 00 8f 00 00 00 9a 00 00 00 a5 00 00 00 af 00 00 00 b8 00 00 00 c1 00 00 00 ca 00 00 00 d2 00 00 00 da 00 00 00 e2 00 00 00 e9 00 00 00 0f 00 00 00 00 00 00 00 40 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 16 00 00 00 03 00 00 00 02 00 00 00 00 01 ff 00 01 00 00 00 00 00 00 00 20 00 00 00 96 03 00 00 35 06 00 00 3d 09 00 00 41 0f 00 00 20 00 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 00 00 80 00 00 00 00 00 0d 00 00 00 12 00 00 00 16 00 00 00 1a 00 00 00 25 00 00 00 00 00 00 00 17 00 00 00 20 00 00 00 28 00 00 00 2e 00 00 00 33 00 00 00 38 00 00 00 3d 00 00 00 41 00 00 00 45 00 00 00 49 00 00 00 4c 00 00 00 50 00 00 00 53 00 00 00 56 00 00 00 59 00 00 00 5c 00 00 00 00 00 00 00 70 00 00 00 9f 00 00 00 c3 00 00 00 e1 00 00 00 3f 01 00 00 00 00 00 00 54 00 00 00 76 00 00 00 91 00 00 00 a8 00 00 00 bb 00 00 00 cd 00 00 00 de 00 00 00 ed 00 00 00 fb 00 00 00 09 01 00 00 16 01 00 00 22 01 00 00 2e 01 00 00 3a 01 00 00 45 01 00 00 50 01 00 00 0f 00 00 00 00 00 00 00 40 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 16 00 00 00 03 00 00 00 03 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 c6 02 00 00 0c 04 00 00 af 06 00 00 3d 09 00 00 41 0f 00 00 09 00 80 00 00 00 00 00 10 00 00 00 16 00 00 00 1c 00 00 00 20 00 00 00 2d 00 00 00 00 00 00 00 12 00 00 00 18 00 00 00 20 00 00 00 25 00 00 00 2a 00 00 00 2e 00 00 00 31 00 00 00 35 00 00 00 38 00 00 00 3b 00 00 00 3e 00 00 00 41 00 00 00 43 00 00 00 46 00 00 00 48 00 00 00 4b 00 00 00 00 00 00 00 1a 01 00 00 8f 01 00 00 e9 01 00 00 34 02 00 00 1e 03 00 00 00 00 00 00 40 00 00 00 5a 00 00 00 6e 00 00 00 80 00 00 00 8f 00 00 00 9c 00 00 00 a9 00 00 00 b5 00 00 00 c0 00 00 00 ca 00 00 00 d4 00 00 00 dd 00 00 00 e6 00 00 00 ef 00 00 00 f7 00 00 00 00 01 00 00 00 00 00 00 20 00 00 00 20 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 18 00 00 00 02 00 00 00 03 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 14 02 00 00 03 03 00 00 f8 04 00 00 34 07 00 00 e3 0b 00 00 14 02 00 00 03 03 00 00 f8 04 00 00 34 07 00 00 e3 0b 00 00 09 00 80 00 00 00 00 00 11 00 00 00 18 00 00 00 1e 00 00 00 23 00 00 00 31 00 00 00 00 00 00 00 30 00 00 00 43 00 00 00 53 00 00 00 60 00 00 00 6b 00 00 00 75 00 00 00 7e 00 00 00 87 00 00 00 90 00 00 00 97 00 00 00 9f 00 00 00 a6 00 00 00 ad 00 00 00 b3 00 00 00 b9 00 00 00 c0 00 00 00 00 00 00 00 8a 00 00 00 c6 00 00 00 f3 00 00 00 17 01 00 00 8c 01 00 00 00 00 00 00 32 00 00 00 47 00 00 00 57 00 00 00 65 00 00 00 71 00 00 00 7c 00 00 00 86 00 00 00 8f 00 00 00 98 00 00 00 a0 00 00 00 a8 00 00 00 af 00 00 00 b7 00 00 00 be 00 00 00 c4 00 00 00 cb 00 00 00 00 00 00 00 20 00 00 00 20 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 00 00 00 00 12 00 00 00 02 00 00 00 02 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 09 00 80 00 00 00 00 00 11 00 00 00 18 00 00 00 1e 00 00 00 23 00 00 00 31 00 00 00 00 00 00 00 30 00 00 00 4
3 00 00 00 53 00 00 00 60 00 00 00 6b 00 00 00 75 00 00 00 7e 00 00 00 87 00 00 00 90 00 00 00 97 00 00 00 9f 00 00 00 a6 00 00 00 ad 00 00 00 b3 00 00 00 b9 00 00 00 c0 00 00 00 00 00 00 00 8a 00 00 00 c6 00 00 00 f3 00 00 00 17 01 00 00 8c 01 00 00 00 00 00 00 32 00 00 00 47 00 00 00 57 00 00 00 65 00 00 00 71 00 00 00 7c 00 00 00 86 00 00 00 8f 00 00 00 98 00 00 00 a0 00 00 00 a8 00 00 00 af 00 00 00 b7 00 00 00 be 00 00 00 c4 00 00 00 cb 00 00 00 00 00 00 00 20 00 00 00 20 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 00 00 00 00 12 00 00 00 02 00 00 00 02 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 09 00 80 00 00 00 00 00 11 00 00 00 18 00 00 00 1e 00 00 00 23 00 00 00 31 00 00 00 00 00 00 00 30 00 00 00 43 00 00 00 53 00 00 00 60 00 00 00 6b 00 00 00 75 00 00 00 7e 00 00 00 87 00 00 00 90 00 00 00 97 00 00 00 9f 00 00 00 a6 00 00 00 ad 00 00 00 b3 00 00 00 b9 00 00 00 c0 00 00 00 00 00 00 00 8a 00 00 00 c6 00 00 00 f3 00 00 00 17 01 00 00 8c 01 00 00 00 00 00 00 32 00 00 00 47 00 00 00 57 00 00 00 65 00 00 00 71 00 00 00 7c 00 00 00 86 00 00 00 8f 00 00 00 98 00 00 00 a0 00 00 00 a8 00 00 00 af 00 00 00 b7 00 00 00 be 00 00 00 c4 00 00 00 cb 00 00 00 00 00 00 00 20 00 00 00 20 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 00 00 00 00 12 00 00 00 02 00 00 00 02 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 9a 01 00 00 53 02 00 00 d6 03 00 00 90 05 00 00 2e 09 00 00 09 00 80 00 00 00 00 00 11 00 00 00 18 00 00 00 1e 00 00 00 23 00 00 00 31 00 00 00 00 00 00 00 30 00 00 00 43 00 00 00 53 00 00 00 60 00 00 00 6b 00 00 00 75 00 00 00 7e 00 00 00 87 00 00 00 90 00 00 00 97 00 00 00 9f 00 00 00 a6 00 00 00 ad 00 00 00 b3 00 00 00 b9 00 00 00 c0 00 00 00 00 00 00 00 8a 00 00 00 c6 00 00 00 f3 00 00 00 17 01 00 00 8c 01 00 00 00 00 00 00 32 00 00 00 47 00 00 00 57 00 00 00 65 00 00 00 71 00 00 00 7c 00 00 00 86 00 00 00 8f 00 00 00 98 00 00 00 a0 00 00 00 a8 00 00 00 af 00 00 00 b7 00 00 00 be 00 00 00 c4 00 00 00 cb 00 00 00 00 00 00 00 20 00 00 00 20 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 00 00 00 00 12 00 00 00 02 00 00 00 02 00 00 00];
};
iq_cfa {
size = [54 05 00 00];
data = [00 00 00 00 28 00 00 00 a0 00 00 00 a0 00 00 00 40 00 00 00 0f 00 00 00 0f 00 00 00 07 00 00 00 04 00 00 00 03 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 a0 00 00 00 a0 00 00 00 40 00 00 00 0f 00 00 00 0f 00 00 00 07 00 00 00 04 00 00 00 03 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 a0 00 00 00 a0 00 00 00 40 00 00 00 0f 00 00 00 0f 00 00 00 07 00 00 00 04 00 00 00 03 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 a0 00 00 00 a0 00 00 00 40 00 00 00 0f 00 00 00 0f 00 00 00 07 00 00 00 04 00 00 00 03 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 a0 00 00 00 a0 00 00 00 40 00 00 00 0f 00 00 00 0f 00 00 00 07 00 00 00 04 00 00 00 03 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 a0 00 00 00 a0 00 00 00 40 00 00 00 0f 00 00 00 0f 00 00 00 07 00 00 00 04 00 00 00 03 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 a0 00 00 00 a0 00 00 00 20 00 00 00 0f 00 00 00 0f 00 00 00 07 00 00 00 04 00 00 00 03 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 a0 00 00 00 a0 00 00 00 00 00 00 00 0f 00 00 00 0f 00 00 00 07 00 00 00 04 00 00 00 03 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 a0 00 00 00 a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 a0 00 00 00 a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 a0 00 00 00 a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 a0 00 00 00 a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 a0 00 00 00 a0 00 00 00 20 00 00 00 08 00 00 00 08 00 00 00 03 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 a0 00 00 00 a0 00 00 00 40 00 00 00 0f 00 00 00 0f 00 00 00 07 00 00 00 04 00 00 00 03 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 a0 00 00 00 a0 00 00 00 40 00 00 00 0f 00 00 00 0f 00 00 00 07 00 00 00 04 00 00 00 03 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 a0 00 00 00 a0 00 00 00 40 00 00 00 0f 00 00 00 0f 00 00 00 07 00 00 00 04 00 00 00 03 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 a0 00 00 00 a0 00 00 00 40 00 00 00 0f 00 00 00 0f 00 00 00 07 00 00 00 04 00 00 00 03 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0
0 00 00 00];
};
iq_va {
size = [e8 00 00 00];
data = [00 00 00 00 c2 01 00 00 c2 01 00 00 64 00 00 00 64 00 00 00 c8 00 00 00 c8 00 00 00 64 00 00 00 64 00 00 00 bc 02 00 00 c8 00 00 00 64 00 00 00 64 00 00 00 c8 00 00 00 bc 02 00 00 64 00 00 00 64 00 00 00 bc 02 00 00 bc 02 00 00 64 00 00 00 64 00 00 00 02 ff 00 00 03 02 00 ff 00 03 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 06 00 08 00 00 00];
};
iq_gamma {
size = [94 0e 00 00];
data = [00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 10 00 00 00 18 00 00 00 1c 00 00 00 20 00 00 00 24 00 00 00 26 00 00 00 28 00 00 00 29 00 00 00 2a 00 00 00 2b 00 00 00 2c 00 00 00 2d 00 00 00 2e 00 00 00 2f 00 00 00 30 00 00 00 31 00 00 00 32 00 00 00 33 00 00 00 34 00 00 00 35 00 00 00 36 00 00 00 37 00 00 00 38 00 00 00 39 00 00 00 3a 00 00 00 3b 00 00 00 3c 00 00 00 3d 00 00 00 3e 00 00 00 3f 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 90 00 00 00 a0 00 00 00 b0 00 00 00 c0 00 00 00 d0 00 00 00 e0 00 00 00 f0 00 00 00 00 01 00 00 10 01 00 00 20 01 00 00 30 01 00 00 40 01 00 00 50 01 00 00 60 01 00 00 70 01 00 00 80 01 00 00 a0 01 00 00 c0 01 00 00 e0 01 00 00 00 02 00 00 20 02 00 00 40 02 00 00 60 02 00 00 80 02 00 00 a0 02 00 00 c0 02 00 00 e0 02 00 00 00 03 00 00 40 03 00 00 80 03 00 00 c0 03 00 00 00 04 00 00 80 04 00 00 00 05 00 00 80 05 00 00 00 06 00 00 80 06 00 00 00 07 00 00 80 07 00 00 00 08 00 00 80 08 00 00 00 09 00 00 80 09 00 00 00 0a 00 00 80 0a 00 00 00 0b 00 00 80 0b 00 00 00 0c 00 00 80 0c 00 00 00 0d 00 00 80 0d 00 00 00 0e 00 00 80 0e 00 00 00 0f 00 00 80 0f 00 00 ff 0f 00 00 00 00 00 00 08 00 00 00 10 00 00 00 18 00 00 00 1c 00 00 00 20 00 00 00 24 00 00 00 26 00 00 00 28 00 00 00 29 00 00 00 2a 00 00 00 2b 00 00 00 2c 00 00 00 2d 00 00 00 2e 00 00 00 2f 00 00 00 30 00 00 00 31 00 00 00 32 00 00 00 33 00 00 00 34 00 00 00 35 00 00 00 36 00 00 00 37 00 00 00 38 00 00 00 39 00 00 00 3a 00 00 00 3b 00 00 00 3c 00 00 00 3d 00 00 00 3e 00 00 00 3f 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 90 00 00 00 a0 00 00 00 b0 00 00 00 c0 00 00 00 d0 00 00 00 e0 00 00 00 f0 00 00 00 00 01 00 00 10 01 00 00 20 01 00 00 30 01 00 00 40 01 00 00 50 01 00 00 60 01 00 00 70 01 00 00 80 01 00 00 a0 01 00 00 c0 01 00 00 e0 01 00 00 00 02 00 00 20 02 00 00 40 02 00 00 60 02 00 00 80 02 00 00 a0 02 00 00 c0 02 00 00 e0 02 00 00 00 03 00 00 40 03 00 00 80 03 00 00 c0 03 00 00 00 04 00 00 80 04 00 00 00 05 00 00 80 05 00 00 00 06 00 00 80 06 00 00 00 07 00 00 80 07 00 00 00 08 00 00 80 08 00 00 00 09 00 00 80 09 00 00 00 0a 00 00 80 0a 00 00 00 0b 00 00 80 0b 00 00 00 0c 00 00 80 0c 00 00 00 0d 00 00 80 0d 00 00 00 0e 00 00 80 0e 00 00 00 0f 00 00 80 0f 00 00 ff 0f 00 00 19 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 90 00 00 00 a0 00 00 00 b0 00 00 00 c0 00 00 00 d0 00 00 00 e0 00 00 00 f0 00 00 00 00 01 00 00 10 01 00 00 20 01 00 00 30 01 00 00 40 01 00 00 50 01 00 00 60 01 00 00 70 01 00 00 80 01 00 00 a0 01 00 00 c0 01 00 00 e0 01 00 00 00 02 00 00 20 02 00 00 40 02 00 00 60 02 00 00 80 02 00 00 a0 02 00 00 c0 02 00 00 e0 02 00 00 00 03 00 00 40 03 00 00 80 03 00 00 c0 03 00 00 00 04 00 00 80 04 00 00 00 05 00 00 80 05 00 00 00 06 00 00 80 06 00 00 00 07 00 00 80 07 00 00 00 08 00 00 80 08 00 00 00 09 00 00 80 09 00 00 00 0a 00 00 80 0a 00 00 00 0b 00 00 80 0b 00 00 00 0c 00 00 80 0c 00 00 00 0d 00 00 8
0 0d 00 00 00 0e 00 00 80 0e 00 00 00 0f 00 00 80 0f 00 00 ff 0f 00 00 32 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 90 00 00 00 a0 00 00 00 b0 00 00 00 c0 00 00 00 d0 00 00 00 e0 00 00 00 f0 00 00 00 00 01 00 00 10 01 00 00 20 01 00 00 30 01 00 00 40 01 00 00 50 01 00 00 60 01 00 00 70 01 00 00 80 01 00 00 a0 01 00 00 c0 01 00 00 e0 01 00 00 00 02 00 00 20 02 00 00 40 02 00 00 60 02 00 00 80 02 00 00 a0 02 00 00 c0 02 00 00 e0 02 00 00 00 03 00 00 40 03 00 00 80 03 00 00 c0 03 00 00 00 04 00 00 80 04 00 00 00 05 00 00 80 05 00 00 00 06 00 00 80 06 00 00 00 07 00 00 80 07 00 00 00 08 00 00 80 08 00 00 00 09 00 00 80 09 00 00 00 0a 00 00 80 0a 00 00 00 0b 00 00 80 0b 00 00 00 0c 00 00 80 0c 00 00 00 0d 00 00 80 0d 00 00 00 0e 00 00 80 0e 00 00 00 0f 00 00 80 0f 00 00 ff 0f 00 00 4b 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 90 00 00 00 a0 00 00 00 b0 00 00 00 c0 00 00 00 d0 00 00 00 e0 00 00 00 f0 00 00 00 00 01 00 00 10 01 00 00 20 01 00 00 30 01 00 00 40 01 00 00 50 01 00 00 60 01 00 00 70 01 00 00 80 01 00 00 a0 01 00 00 c0 01 00 00 e0 01 00 00 00 02 00 00 20 02 00 00 40 02 00 00 60 02 00 00 80 02 00 00 a0 02 00 00 c0 02 00 00 e0 02 00 00 00 03 00 00 40 03 00 00 80 03 00 00 c0 03 00 00 00 04 00 00 80 04 00 00 00 05 00 00 80 05 00 00 00 06 00 00 80 06 00 00 00 07 00 00 80 07 00 00 00 08 00 00 80 08 00 00 00 09 00 00 80 09 00 00 00 0a 00 00 80 0a 00 00 00 0b 00 00 80 0b 00 00 00 0c 00 00 80 0c 00 00 00 0d 00 00 80 0d 00 00 00 0e 00 00 80 0e 00 00 00 0f 00 00 80 0f 00 00 ff 0f 00 00 64 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 90 00 00 00 a0 00 00 00 b0 00 00 00 c0 00 00 00 d0 00 00 00 e0 00 00 00 f0 00 00 00 00 01 00 00 10 01 00 00 20 01 00 00 30 01 00 00 40 01 00 00 50 01 00 00 60 01 00 00 70 01 00 00 80 01 00 00 a0 01 00 00 c0 01 00 00 e0 01 00 00 00 02 00 00 20 02 00 00 40 02 00 00 60 02 00 00 80 02 00 00 a0 02 00 00 c0 02 00 00 e0 02 00 00 00 03 00 00 40 03 00 00 80 03 00 00 c0 03 00 00 00 04 00 00 80 04 00 00 00 05 00 00 80 05 00 00 00 06 00 00 80 06 00 00 00 07 00 00 80 07 00 00 00 08 00 00 80 08 00 00 00 09 00 00 80 09 00 00 00 0a 00 00 80 0a 00 00 00 0b 00 00 80 0b 00 00 00 0c 00 00 80 0c 00 00 00 0d 00 00 80 0d 00 00 00 0e 00 00 80 0e 00 00 00 0f 00 00 80 0f 00 00 ff 0f 00 00 00 00 00 00 25 00 00 00 49 00 00 00 6b 00 00 00 8b 00 00 00 a9 00 00 00 c6 00 00 00 e1 00 00 00 f1 00 00 00 01 01 00 00 11 01 00 00 21 01 00 00 30 01 00 00 3e 01 00 00 4d 01 00 00 5b 01 00 00 68 01 00 00 75 01 00 00 82 01 00 00 8f 01 00 00 9b 01 00 00 a6 01 00 00 b1 01 00 00 bc 01 00 00 c7 01 00 00 d1 01 00 00 db 01 00 00 e4 01 00 00 ed 01 00 00 f6 01 00 00 fe 01 00 00 06 02 00 00 0d 02 00 00 14 02 00 00 1b 02 00 00 22 02 00 00 29 02 00 00 30 02 00 00 36 02 00 00 3d 02 00 00 44 02 00 00 4b 02 00 00 52 02 00 00 59 02 00 00 5f 02 00 00 66 02 00 00 6d 02 00 00 73 02 00 00 7a 02 00 00 80 02 00 00 87 02 00 00 8d 02 00 00 93 02 00 00 9a 02 00 00 a0 02 00 00 a6 02 00 00 ac 02 00 00 b3 02 00 00 b9 02 00 00 bf 02 00 00 c5 02 00 00 cb 02 00 00 d1 02 00 00 d7 02 00 00 dd 02 00 00 e3 02 00 00 e8 02 00 00 ee 02 00 00 f4 02 00 00 fa 02 00 00 ff 02 00 00 04 03 00 00 09 03 00 00 0e 03 00 00 13 03 00 00 18 03 00 00 1d 03 00 00 21 03 00 00 26 03 00 00 2b 03 00 00 30 03 00 00 35 03 00 00 3a 03 00 00 3e 03 00 00 43 03 00 00 48 03 00 00 4d 03 00 00 51 03 00 00 56 03 00 00 5b 03 00 00 5f 03 00 00 64 03 00 00 68 03 00 00 6d 03 00 00 72 03 00 00 76 03 00 00 7b 03 00 00 7f 03 00 00 84 03 00 00 88 03 00 00 8c 03 00 00 91 03 00 00 95 03 00 00 99 03 00 00 9e 03 00 00 a2 03 00 00 a6 03 00 00 ab 03 00 00 af 03 00 00 b3 03 00 00 b7 03 00 00 bb 03 00 00 bf 03 00 00 c4 03 00 00 c8 03 00 00 cc 03 00 00 d0 03 00 00 d4 03 00 00 d8 03 00 00 dc 03 00 00 e0 03 00 00 e4 03 00 00 e8 03 00 00 eb 03 00 00 ef 03 00 00 f3 03 00 00 f7 03 00 00 fb 03 00 00 ff 03 00 00 07 00 00 00 00 00 00 00 29 00 00 00 53 00 00 00 7e 00 00 00 a5 00 00 00 c6 00 00 00 e5 00 00 00 0
0 01 00 00 19 01 00 00 2e 01 00 00 41 01 00 00 51 01 00 00 5e 01 00 00 69 01 00 00 76 01 00 00 84 01 00 00 91 01 00 00 9d 01 00 00 aa 01 00 00 b6 01 00 00 c2 01 00 00 cd 01 00 00 d8 01 00 00 e3 01 00 00 ed 01 00 00 f8 01 00 00 01 02 00 00 0b 02 00 00 14 02 00 00 1d 02 00 00 25 02 00 00 2e 02 00 00 36 02 00 00 3e 02 00 00 47 02 00 00 4f 02 00 00 58 02 00 00 60 02 00 00 69 02 00 00 71 02 00 00 79 02 00 00 81 02 00 00 8a 02 00 00 92 02 00 00 9a 02 00 00 a2 02 00 00 aa 02 00 00 b2 02 00 00 ba 02 00 00 c2 02 00 00 c9 02 00 00 d0 02 00 00 d7 02 00 00 de 02 00 00 e4 02 00 00 eb 02 00 00 f2 02 00 00 f8 02 00 00 fe 02 00 00 05 03 00 00 0b 03 00 00 11 03 00 00 17 03 00 00 1c 03 00 00 22 03 00 00 28 03 00 00 2e 03 00 00 33 03 00 00 38 03 00 00 3d 03 00 00 42 03 00 00 47 03 00 00 4c 03 00 00 51 03 00 00 55 03 00 00 5a 03 00 00 5e 03 00 00 63 03 00 00 67 03 00 00 6b 03 00 00 6f 03 00 00 73 03 00 00 77 03 00 00 7b 03 00 00 7f 03 00 00 83 03 00 00 87 03 00 00 8a 03 00 00 8e 03 00 00 92 03 00 00 95 03 00 00 99 03 00 00 9c 03 00 00 9f 03 00 00 a3 03 00 00 a6 03 00 00 a9 03 00 00 ac 03 00 00 af 03 00 00 b2 03 00 00 b5 03 00 00 b9 03 00 00 bb 03 00 00 be 03 00 00 c1 03 00 00 c4 03 00 00 c7 03 00 00 ca 03 00 00 cd 03 00 00 cf 03 00 00 d2 03 00 00 d5 03 00 00 d7 03 00 00 da 03 00 00 dc 03 00 00 df 03 00 00 e2 03 00 00 e4 03 00 00 e7 03 00 00 e9 03 00 00 ec 03 00 00 ee 03 00 00 f1 03 00 00 f3 03 00 00 f5 03 00 00 f8 03 00 00 fa 03 00 00 fd 03 00 00 ff 03 00 00 05 00 00 00 00 00 00 00 2b 00 00 00 50 00 00 00 6a 00 00 00 86 00 00 00 a2 00 00 00 bd 00 00 00 d5 00 00 00 ec 00 00 00 00 01 00 00 11 01 00 00 21 01 00 00 2e 01 00 00 3e 01 00 00 4d 01 00 00 5b 01 00 00 6a 01 00 00 78 01 00 00 86 01 00 00 93 01 00 00 a0 01 00 00 ad 01 00 00 ba 01 00 00 c6 01 00 00 d3 01 00 00 df 01 00 00 ea 01 00 00 f6 01 00 00 01 02 00 00 0c 02 00 00 17 02 00 00 22 02 00 00 2c 02 00 00 36 02 00 00 40 02 00 00 4a 02 00 00 54 02 00 00 5d 02 00 00 66 02 00 00 70 02 00 00 78 02 00 00 81 02 00 00 8a 02 00 00 92 02 00 00 9a 02 00 00 a2 02 00 00 aa 02 00 00 b2 02 00 00 ba 02 00 00 c1 02 00 00 c9 02 00 00 d0 02 00 00 d7 02 00 00 de 02 00 00 e5 02 00 00 eb 02 00 00 f2 02 00 00 f8 02 00 00 fe 02 00 00 04 03 00 00 0b 03 00 00 10 03 00 00 16 03 00 00 1c 03 00 00 22 03 00 00 27 03 00 00 2c 03 00 00 32 03 00 00 37 03 00 00 3c 03 00 00 41 03 00 00 46 03 00 00 4b 03 00 00 4f 03 00 00 54 03 00 00 59 03 00 00 5d 03 00 00 61 03 00 00 66 03 00 00 6a 03 00 00 6e 03 00 00 72 03 00 00 76 03 00 00 7a 03 00 00 7e 03 00 00 82 03 00 00 86 03 00 00 89 03 00 00 8d 03 00 00 91 03 00 00 94 03 00 00 98 03 00 00 9b 03 00 00 9e 03 00 00 a2 03 00 00 a5 03 00 00 a8 03 00 00 ab 03 00 00 af 03 00 00 b2 03 00 00 b5 03 00 00 b8 03 00 00 bb 03 00 00 be 03 00 00 c1 03 00 00 c3 03 00 00 c6 03 00 00 c9 03 00 00 cc 03 00 00 cf 03 00 00 d1 03 00 00 d4 03 00 00 d7 03 00 00 d9 03 00 00 dc 03 00 00 df 03 00 00 e1 03 00 00 e4 03 00 00 e6 03 00 00 e9 03 00 00 eb 03 00 00 ee 03 00 00 f0 03 00 00 f3 03 00 00 f5 03 00 00 f8 03 00 00 fa 03 00 00 fd 03 00 00 ff 03 00 00];
};
iq_ccm {
size = [40 02 00 00];
data = [00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ee 19 00 00 47 01 a9 ff 10 00 a7 ff 9a 01 c0 ff 0b 00 82 ff 73 01 82 84 80 80 80 86 8b 82 7e 7e 7e 80 80 80 80 80 80 80 80 80 80 80 80 84 00 00 ed ff ff ff f2 ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 0f 00 00 00 17 00 00 00 24 00 00 00 30 00 00 00 1a 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f5 ff ff ff d8 0e 00 00 38 01 be ff 09 00 8f ff 80 01 f1 ff 08 00 6b ff 8c 01 84 82 80 80 80 86 86 84 80 7e 80 80 80 80 80 80 80 80 80 80 80 80 80 86 00 00 eb ff ff ff f5 ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 0e 00 00 00 13 00 00 00 1f 00 00 00 2c 00 00 00 0b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f3 ff ff ff a0 0b 00 00 38 01 cd ff fb ff 66 ff b0 01 eb ff 25 00 ca fe 11 02 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00];
};
iq_color {
size = [ec 06 00 00];
data = [00 00 00 00 80 80 40 10 00 00 00 00 00 00 00 00 00 00 00 00 00 14 0f 0a 05 00 00 00 00 00 00 00 00 00 05 0a 0f 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 96 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 87 aa 58 33 12 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 7c ff b7 7e 4f 28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 6e 40 20 10 04 00 00 00 00 00 00 00 00 00 00 00 6e 40 20 10 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 00 00 00 64 00 00 00 73 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 82 40 20 10 08 00 00 00 00 00 00 00 00 00 00 00 00 40 20 10 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 50 00 00 00 64 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 8c 60 40 20 10 08 00 00 00 00 00 00 00 00 00 00 00 60 40 20 10 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 50 00 00 00 64 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 6e c8 78 46 20 10 00 00 00 00 00 00 00 00 00 00 00 c8 78 46 20 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 46 00 00 00 5a 00 00 00 6e 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 78 b4 6e 40 20 10 00 00 00 00 00 00 00 00 00 00 00 b4 6e 40 20 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 50 00 00 00 64 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 0
0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00];
};
iq_contrast {
size = [b0 00 00 00];
data = [00 00 00 00 80 00 00 00 00 00 00 00 00 00 80 1e 1e 1e 1e 1e 1e 1e 1e 1e 87 25 25 25 25 25 25 25 25 25 87 28 28 28 28 28 28 28 28 28 87 28 28 28 28 28 28 28 28 28 7e 28 28 28 28 28 28 28 28 28 7e 28 28 28 28 28 28 28 28 28 af 28 28 28 28 28 28 28 28 28 be 00 00 00 00 00 00 00 00 00 80 05 05 05 05 05 05 05 05 05 80 0a 0a 0a 0a 0a 0a 0a 0a 0a 80 0a 0a 0a 0a 0a 0a 0a 0a 0a 80 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00];
};
iq_edge {
size = [e0 05 00 00];
data = [01 00 00 00 00 00 00 00 80 00 00 00 31 00 00 00 64 78 8c a0 b4 c8 e0 ff ff e0 c0 aa 9a 90 88 80 1e 30 3c 46 52 55 55 55 58 58 55 4f 49 3f 3f 3c 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 40 00 00 00 80 00 00 00 80 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 08 00 00 00 28 00 00 00 f0 00 00 00 00 01 00 00 40 50 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 7e 00 00 00 62 00 00 00 10 00 00 00 09 00 00 00 04 00 00 00 0e 00 00 00 2a 00 00 00 46 00 00 00 54 00 00 00 70 00 00 00 28 6c 00 00 00 01 00 00 b4 00 00 00 00 00 00 00 7e 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 78 00 00 00 78 00 00 00 10 00 00 00 09 00 00 00 04 00 00 00 0a 00 00 00 2a 00 00 00 70 00 00 00 7e 00 00 00 92 00 00 00 28 5a 00 00 00 01 00 00 b4 00 00 00 00 00 00 00 7e 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 82 00 00 00 73 00 00 00 02 00 00 00 0f 00 00 00 0c 00 00 00 02 00 00 00 2a 00 00 00 54 00 00 00 70 00 00 00 9a 00 00 00 28 60 00 00 00 02 00 00 b4 00 00 00 00 00 00 00 7e 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 82 00 00 00 73 00 00 00 00 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 54 00 00 00 62 00 00 00 66 00 00 00 dc 00 00 00 28 60 00 00 00 01 00 00 b4 00 00 00 00 00 00 00 7e 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 7e 00 00 00 54 00 00 00 00 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 54 00 00 00 62 00 00 00 70 00 00 00 f0 00 00 00 18 60 00 00 00 01 00 00 b4 00 00 00 00 00 00 00 7e 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 01 00 00 00 7e 00 00 00 46 00 00 00 00 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 5a 00 00 00 5e 01 00 00 88 01 00 00 96 01 00 00 18 60 00 00 00 01 00 00 b4 00 00 00 00 00 00 00 7e 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 02 00 00 00 7e 00 00 00 d2 00 00 00 00 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 c4 00 00 00 ee 00 00 00 0a 01 00 00 96 01 00 00 14 6a 00 00 00 01 00 00 b4 00 00 00 1c 00 00 00 80 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 01 00 00 00 02 00 00 00 d2 00 00 00 fc 00 00 00 00 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 46 00 00 00 18 01 00 00 42 01 00 00 5e 01 00 00 14 80 00 00 80 00 00 00 b4 00 00 00 2a 00 00 00 80 00 00 00 00 00 00 00 02 00 00 00 0e 00 00 00 00 02 00 00 01 00 00 00 02 00 00 00 5a 00 00 00 5a 00 00 00 09 00 00 00 06 00 00 00 04 00 00 00 04 00 00 00 18 01 00 00 5e 01 00 00 7a 01 00 00 8f 01 00 00 20 50 00 00 00 01 00 00 00 01 00 00 0f 00 00 00 80 00 00 00 01 00 00 00 02 00 00 00 0a 00 00 00 00 02 00 00 01 00 00 00 03 00 00 00 5a 00 00 00 5a 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 02 00 00 00 18 01 00 00 5e 01 00 00 85 01 00 00 8f 01 00 00 20 50 00 00 00 01 00 00 00 01 00 00 19 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 0a 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 5a 00 00 00 5a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 18 01 00 00 bc 01 00 00 53 02 00 00 5b 02 00 00 20 46 00 00 00 01 00 00 00 01 00 00 19 00 00 00 80 00 00 00 05 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 6e 00 00 00 6e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 21 01 00 00 be 01 00 00 58 02 00 00 6c 02 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 05 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 60 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 88 00 00 00 a8 00 00 00 33 01 00 00 43 01 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 60 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 88 00 00 00 a8 00 00 00 33 01 00 00 43 01 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 60 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 8
8 00 00 00 a8 00 00 00 33 01 00 00 43 01 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00 60 00 00 00 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 88 00 00 00 a8 00 00 00 33 01 00 00 43 01 00 00 20 46 00 00 00 01 00 00 00 01 00 00 00 00 00 00 80 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 05 00 00 00];
};
iq_3dnr {
size = [64 1f 00 00];
data = [01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0f 00 00 00 40 00 00 00 40 00 00 00 00 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 c8 00 00 00 c8 00 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 05 00 00 00 05 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 08 00 00 00 80 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 b4 00 00 00 e6 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 80 00 00 00 40 00 00 00 00 01 00 00 00 01 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 08 00 00 00 10 00 00 00 40 00 00 00 40 00 00 00 10 00 00 00 08 00 00 00 00 00 00 00 06 00 00 00 0c 00 00 00 18 00 00 00 28 00 00 00 4c 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 40 00 00 00 00 00 00 00 06 00 00 00 0c 00 00 00 18 00 00 00 28 00 00 00 4c 00 00 00 60 00 00 00 70 00 00 00 80 00 00 00 40 00 00 00 04 01 00 00 00 00 00 00 08 00 00 00 50 00 00 00 50 00 00 00 00 00 00 00 b4 00 00 00 b4 00 00 00 b4 00 00 00 f4 01 00 00 f4 01 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 b4 00 00 00 08 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 8c 00 00 00 8c 00 00 00 8c 00 00 00 8c 00 00 00 0f 00 00 00 0e 00 00 00 0e 00 00 00 0f 00 00 00 0d 00 00 00 0d 00 00 00 0d 00 00 00 0d 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 be 00 00 00 be 00 00 00 be 00 00 00 be 00 00 00 35 00 00 00 35 00 00 00 30 00 00 00 30 00 00 00 2b 00 00 00 2b 00 00 00 2b 00 00 00 2b 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 04 00 00 00 01 01 01 00 01 00 00 00 00 00 00 02 02 00 02 00 00 00 00 00 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 08 00 00 00 2c 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 0a 00 00 00 14 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0d 00 00 00 1b 00 00 00 29 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0d 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 00 00 00 00 08 00 00 00 64 00 00 00 64 00 00 00 00 00 00 00 2c 01 00 00 2c 01 00 00 2c 01 00 00 f4 01 00 00 f4 01 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 9d 00 00 00 08 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 c8 00 00 00 8c 00 00 00 8c 00 00 00 8c 00 00 00 8c 00 00 00 12 00 00 00 11 00 00 00 11 00 00 00 12 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 82 00 00 00 82 00 00 00 82 00 00 00 82 00 00 00 78 00 00 00 78 00 00 00 78 00 00 00 78 00 00 00 2d 00 00 00 2d 00 00 00 28 00 00 00 28 00 00 00 23 00 00 00 23 00 00 00 23 00 00 00 23 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 04 00 00 00 01 01 01 00 01 00 00 00 02 0a 14 18 0c 08 14 08 02 00 00 00 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 10 00 00 00 2c 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 0f 00 00 00 1e 00 00 00 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 4
0 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0d 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 00 00 00 00 08 00 00 00 96 00 00 00 96 00 00 00 00 00 00 00 2c 01 00 00 2c 01 00 00 2c 01 00 00 58 02 00 00 58 02 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 b4 00 00 00 08 00 00 00 18 01 00 00 18 01 00 00 18 01 00 00 18 01 00 00 dc 00 00 00 dc 00 00 00 dc 00 00 00 dc 00 00 00 16 00 00 00 15 00 00 00 15 00 00 00 16 00 00 00 14 00 00 00 14 00 00 00 14 00 00 00 14 00 00 00 c8 00 00 00 be 00 00 00 be 00 00 00 be 00 00 00 b4 00 00 00 b4 00 00 00 b4 00 00 00 b4 00 00 00 44 00 00 00 44 00 00 00 3f 00 00 00 3f 00 00 00 3a 00 00 00 3a 00 00 00 3a 00 00 00 3a 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 03 03 00 01 00 00 00 05 1e 32 22 18 0c 14 08 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 f4 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 02 00 00 00 64 00 00 00 3c 00 00 00 14 00 00 00 03 00 00 00 01 00 00 00 00 00 00 00 0c 00 00 00 16 00 00 00 25 00 00 00 37 00 00 00 4b 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 02 00 00 01 00 00 00 08 00 00 00 c8 00 00 00 c8 00 00 00 00 00 00 00 f4 01 00 00 f4 01 00 00 f4 01 00 00 84 03 00 00 84 03 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 cb 00 00 00 08 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 1a 00 00 00 19 00 00 00 19 00 00 00 1a 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 04 01 00 00 04 01 00 00 04 01 00 00 04 01 00 00 5f 00 00 00 5f 00 00 00 5a 00 00 00 5a 00 00 00 55 00 00 00 55 00 00 00 55 00 00 00 55 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 14 64 96 32 28 1e 14 08 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 f4 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 64 00 00 00 64 00 00 00 50 00 00 00 20 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 08 00 00 00 50 00 00 00 64 00 00 00 18 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 09 00 00 00 19 00 00 00 28 00 00 00 3c 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 50 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 02 00 00 00 08 00 00 00 a0 00 00 00 a0 00 00 00 00 00 00 00 90 01 00 00 90 01 00 00 90 01 00 00 84 03 00 00 84 03 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 98 00 00 00 08 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 1e 00 00 00 1d 00 00 00 1d 00 00 00 1e 00 00 00 1c 00 00 00 1c 00 00 00 1c 00 00 00 1c 00 00 00 18 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 04 01 00 00 04 01 00 00 04 01 00 00 04 01 00 00 3c 00 00 00 3c 00 00 00 37 00 00 00 37 00 00 00 32 00 00 00 32 00 00 00 32 00 00 00 32 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 64 a0 c8 80 32 1e 20 08 02 00 00 00 18 00 00 00 10 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 f4 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 64 00 00 00 64 00 00 00 50 00 00 00 20 00 00 00 10 00 00 00 1
0 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 50 00 00 00 64 00 00 00 18 00 00 00 08 00 00 00 03 00 00 00 00 00 00 00 0a 00 00 00 15 00 00 00 25 00 00 00 34 00 00 00 4a 00 00 00 60 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0d 00 00 00 20 00 00 00 30 00 00 00 3e 00 00 00 48 00 00 00 57 00 00 00 70 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 02 00 00 00 08 00 00 00 c8 00 00 00 c8 00 00 00 00 00 00 00 7c 01 00 00 7c 01 00 00 7c 01 00 00 20 03 00 00 20 03 00 00 03 00 00 00 03 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 d8 00 00 00 08 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 1c 00 00 00 1b 00 00 00 1b 00 00 00 1c 00 00 00 1a 00 00 00 1a 00 00 00 1a 00 00 00 1a 00 00 00 4a 01 00 00 40 01 00 00 40 01 00 00 40 01 00 00 36 01 00 00 36 01 00 00 36 01 00 00 36 01 00 00 66 00 00 00 66 00 00 00 61 00 00 00 61 00 00 00 5c 00 00 00 5c 00 00 00 5c 00 00 00 5c 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 64 b4 c8 80 3c 32 20 08 02 00 00 00 20 00 00 00 20 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 f4 01 00 00 c8 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 64 00 00 00 64 00 00 00 40 00 00 00 20 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 03 00 00 00 64 00 00 00 82 00 00 00 1e 00 00 00 08 00 00 00 04 00 00 00 00 00 00 00 07 00 00 00 10 00 00 00 19 00 00 00 21 00 00 00 29 00 00 00 2f 00 00 00 38 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0d 00 00 00 15 00 00 00 1e 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 2c 01 00 00 2c 01 00 00 00 00 00 00 f4 01 00 00 f4 01 00 00 f4 01 00 00 e8 03 00 00 e8 03 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 c3 00 00 00 08 00 00 00 5e 01 00 00 5e 01 00 00 5e 01 00 00 5e 01 00 00 22 01 00 00 22 01 00 00 22 01 00 00 22 01 00 00 28 00 00 00 27 00 00 00 27 00 00 00 28 00 00 00 26 00 00 00 26 00 00 00 26 00 00 00 26 00 00 00 90 01 00 00 86 01 00 00 86 01 00 00 86 01 00 00 7c 01 00 00 7c 01 00 00 7c 01 00 00 7c 01 00 00 8a 00 00 00 8a 00 00 00 85 00 00 00 85 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 80 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 3c 64 82 40 0c 04 40 0c 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 20 03 00 00 2c 01 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 0c 00 00 00 50 00 00 00 78 00 00 00 40 00 00 00 10 00 00 00 08 00 00 00 00 00 00 00 06 00 00 00 0f 00 00 00 19 00 00 00 28 00 00 00 3b 00 00 00 45 00 00 00 4b 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 0b 00 00 00 13 00 00 00 1c 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 40 00 00 00 20 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 2c 01 00 00 2c 01 00 00 00 00 00 00 f4 01 00 00 f4 01 00 00 f4 01 00 00 e8 03 00 00 e8 03 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 c3 00 00 00 08 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 28 00 00 00 27 00 00 00 27 00 00 00 28 00 00 00 26 00 00 00 26 00 00 00 26 00 00 00 26 00 00 00 90 01 00 00 86 01 00 00 86 01 00 00 86 01 00 00 7c 01 00 00 7c 01 00 00 7c 01 00 00 7c 01 00 00 62 00 00 00 62 00 00 00 5d 00 00 00 5d 00 00 00 58 00 00 00 58 00 00 00 58 00 00 00 58 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 3c 64 82 40 0c 04 40 0c 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 4
0 00 00 00 20 00 00 00 e8 03 00 00 e8 03 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 0c 00 00 00 50 00 00 00 78 00 00 00 80 00 00 00 10 00 00 00 08 00 00 00 00 00 00 00 0d 00 00 00 1b 00 00 00 2c 00 00 00 38 00 00 00 3f 00 00 00 45 00 00 00 4b 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 0b 00 00 00 13 00 00 00 1c 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 40 00 00 00 20 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 96 00 00 00 96 00 00 00 00 00 00 00 dc 00 00 00 dc 00 00 00 dc 00 00 00 20 03 00 00 20 03 00 00 03 00 00 00 03 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 80 00 00 00 07 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 21 00 00 00 20 00 00 00 20 00 00 00 21 00 00 00 1f 00 00 00 1f 00 00 00 1f 00 00 00 1f 00 00 00 ea 01 00 00 e0 01 00 00 e0 01 00 00 e0 01 00 00 d6 01 00 00 d6 01 00 00 d6 01 00 00 d6 01 00 00 49 00 00 00 49 00 00 00 44 00 00 00 44 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 46 69 8c 1e 08 04 14 08 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 e8 03 00 00 e8 03 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 3c 00 00 00 6e 00 00 00 64 00 00 00 20 00 00 00 10 00 00 00 00 00 00 00 09 00 00 00 11 00 00 00 17 00 00 00 1f 00 00 00 27 00 00 00 2d 00 00 00 36 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 0b 00 00 00 13 00 00 00 1c 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 96 00 00 00 96 00 00 00 00 00 00 00 dc 00 00 00 dc 00 00 00 dc 00 00 00 84 03 00 00 84 03 00 00 02 00 00 00 02 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 80 00 00 00 07 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 2c 00 00 00 2b 00 00 00 2b 00 00 00 2c 00 00 00 2a 00 00 00 2a 00 00 00 2a 00 00 00 2a 00 00 00 80 02 00 00 76 02 00 00 76 02 00 00 76 02 00 00 6c 02 00 00 6c 02 00 00 6c 02 00 00 6c 02 00 00 49 00 00 00 49 00 00 00 44 00 00 00 44 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 08 00 00 00 10 00 00 00 04 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 64 6e 8c 32 08 04 14 08 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00 20 00 00 00 40 00 00 00 20 00 00 00 e8 03 00 00 e8 03 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 3c 00 00 00 6e 00 00 00 64 00 00 00 20 00 00 00 10 00 00 00 00 00 00 00 07 00 00 00 0c 00 00 00 15 00 00 00 1e 00 00 00 26 00 00 00 2c 00 00 00 34 00 00 00 64 00 00 00 30 00 00 00 00 00 00 00 08 00 00 00 11 00 00 00 1a 00 00 00 21 00 00 00 27 00 00 00 2f 00 00 00 3a 00 00 00 64 00 00 00 30 00 00 00 02 01 00 00 03 00 00 00 08 00 00 00 96 00 00 00 96 00 00 00 00 00 00 00 dc 00 00 00 dc 00 00 00 dc 00 00 00 84 03 00 00 84 03 00 00 02 00 00 00 02 00 00 00 01 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 06 00 00 00 07 00 00 00 07 00 00 00 08 00 00 00 80 00 00 00 07 00 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 4a 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 0e 01 00 00 2f 00 00 00 2e 00 00 00 2e 00 00 00 2f 00 00 00 2d 00 00 00 2d 00 00 00 2d 00 00 00 2d 00 00 00 81 02 00 00 77 02 00 00 77 02 00 00 77 02 00 00 6d 02 00 00 6d 02 00 00 6d 02 00 00 6d 02 00 00 49 00 00 00 49 00 00 00 44 00 00 00 44 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 3f 00 00 00 08 00 00 00 10 00 00 00 0
4 00 00 00 10 00 00 00 14 00 00 00 06 00 00 00 01 01 01 00 01 00 00 00 b4 78 a0 50 08 04 14 08 02 00 00 00 10 00 00 00 20 00 00 00 30 00 00 00 40 00 00 00 40 00 00 00 20 00 00 00 e8 03 00 00 e8 03 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 3c 00 00 00 6e 00 00 00 64 00 00 00 20 00 00 00 10 00 00 00 00 00 00 00 07 00 00 00 0c 00 00 00 15 00 00 00 1e 00 00 00 26 00 00 00 2c 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 0b 00 00 00 13 00 00 00 1c 00 00 00 23 00 00 00 29 00 00 00 31 00 00 00 3c 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 c8 00 00 00 c8 00 00 00 00 00 00 00 90 01 00 00 90 01 00 00 90 01 00 00 58 02 00 00 58 02 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 05 00 00 00 05 00 00 00 05 00 00 00 0f 00 00 00 0f 00 00 00 0f 00 00 00 0f 00 00 00 af 00 00 00 03 00 00 00 00 04 00 00 4c 04 00 00 b0 04 00 00 14 05 00 00 14 05 00 00 14 05 00 00 14 05 00 00 14 05 00 00 19 00 00 00 32 00 00 00 32 00 00 00 32 00 00 00 23 00 00 00 23 00 00 00 14 00 00 00 14 00 00 00 50 00 00 00 6e 00 00 00 6e 00 00 00 6e 00 00 00 8c 00 00 00 96 00 00 00 a0 00 00 00 a0 00 00 00 3c 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 44 00 00 00 50 00 00 00 50 00 00 00 5a 00 00 00 10 00 00 00 14 00 00 00 03 00 00 00 b4 00 00 00 c8 00 00 00 04 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 8c 00 00 00 96 00 00 00 a0 00 00 00 aa 00 00 00 80 00 00 00 40 00 00 00 b8 0b 00 00 70 17 00 00 10 00 00 00 10 00 00 00 20 00 00 00 20 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 40 00 00 00 80 00 00 00 ff 00 00 00 10 00 00 00 06 00 00 00 00 00 00 00 06 00 00 00 0d 00 00 00 15 00 00 00 1c 00 00 00 26 00 00 00 2f 00 00 00 3a 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 02 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 0b 00 00 00 96 00 00 00 03 00 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 18 00 00 00 18 00 00 00 17 00 00 00 15 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 08 00 00 00 10 00 00 00 14 00 00 00 b4 00 00 00 e6 00 00 00 02 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 6e 00 00 00 78 00 00 00 82 00 00 00 80 00 00 00 40 00 00 00 b0 04 00 00 d0 07 00 00 14 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 14 00 00 00 18 00 00 00 18 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 20 00 00 00 80 00 00 00 ff 00 00 00 20 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 02 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 0b 00 00 00 96 00 00 00 03 00 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 18 00 00 00 18 00 00 00 17 00 00 00 15 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5
a 00 00 00 5a 00 00 00 5a 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 08 00 00 00 10 00 00 00 14 00 00 00 b4 00 00 00 e6 00 00 00 02 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 6e 00 00 00 78 00 00 00 82 00 00 00 80 00 00 00 40 00 00 00 b0 04 00 00 d0 07 00 00 14 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 14 00 00 00 18 00 00 00 18 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 20 00 00 00 80 00 00 00 ff 00 00 00 20 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 02 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 0b 00 00 00 96 00 00 00 03 00 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 18 00 00 00 18 00 00 00 17 00 00 00 15 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 08 00 00 00 10 00 00 00 14 00 00 00 b4 00 00 00 e6 00 00 00 02 00 00 00 01 01 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 6e 00 00 00 78 00 00 00 82 00 00 00 80 00 00 00 40 00 00 00 b0 04 00 00 d0 07 00 00 14 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 14 00 00 00 18 00 00 00 18 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 20 00 00 00 80 00 00 00 ff 00 00 00 20 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00 00 00 00 00 0f 00 00 00 80 00 00 00 80 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 02 00 00 04 00 00 00 04 00 00 00 03 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 04 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 0a 00 00 00 0a 00 00 00 0a 00 00 00 0b 00 00 00 0b 00 00 00 96 00 00 00 03 00 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 00 02 00 00 18 00 00 00 18 00 00 00 17 00 00 00 15 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 16 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 5a 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 3c 00 00 00 08 00 00 00 10 00 00 00 14 00 00 00 b4 00 00 00 e6 00 00 00 02 00 00 00 01 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 6e 00 00 00 78 00 00 00 82 00 00 00 80 00 00 00 40 00 00 00 b0 04 00 00 d0 07 00 00 14 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 14 00 00 00 18 00 00 00 18 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 20 00 00 00 80 00 00 00 ff 00 00 00 20 00 00 00 02 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 40 00 00 00 20 00 00 00 00 00 00 00 06 00 00 00 0b 00 00 00 0b 00 00 00 13 00 00 00 18 00 00 00 21 00 00 00 34 00 00 00 40 00 00 00 20 00 00 00 04 01 00 00];
};
iq_wdr {
size = [e4 02 00 00];
data = [01 00 00 00 00 00 00 00 20 00 00 00 12 00 00 00 80 00 00 00 05 00 00 00 03 00 00 00 00 00 00 00 01 00 00 00 03 00 00 00 07 00 00 00 0f 00 00 00 17 00 00 00 1f 00 00 00 23 00 00 00 27 00 00 00 29 00 00 00 2a 00 00 00 2b 00 00 00 2c 00 00 00 2d 00 00 00 2e 00 00 00 2f 00 00 00 30 00 00 00 31 00 00 00 32 00 00 00 33 00 00 00 34 00 00 00 35 00 00 00 36 00 00 00 37 00 00 00 38 00 00 00 39 00 00 00 3a 00 00 00 3b 00 00 00 3c 00 00 00 3d 00 00 00 3e 00 00 00 3f 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 03 00 00 00 03 00 00 00 02 00 00 00 02 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 0f 00 00 e6 0f 00 00 a6 0f 00 00 29 0f 00 00 cf 0e 00 00 64 0e 00 00 e8 0d 00 00 5e 0d 00 00 14 0d 00 00 c7 0c 00 00 78 0c 00 00 27 0c 00 00 d5 0b 00 00 81 0b 00 00 2e 0b 00 00 da 0a 00 00 86 0a 00 00 33 0a 00 00 e1 09 00 00 90 09 00 00 41 09 00 00 f3 08 00 00 a7 08 00 00 5e 08 00 00 16 08 00 00 d1 07 00 00 8e 07 00 00 4d 07 00 00 0f 07 00 00 d3 06 00 00 99 06 00 00 62 06 00 00 fb 05 00 00 9c 05 00 00 46 05 00 00 f8 04 00 00 b0 04 00 00 70 04 00 00 35 04 00 00 00 04 00 00 a4 03 00 00 57 03 00 00 e4 02 00 00 94 02 00 00 5b 02 00 00 31 02 00 00 12 02 00 00 fb 01 00 00 e9 01 00 00 dc 01 00 00 d1 01 00 00 c8 01 00 00 c1 01 00 00 bb 01 00 00 b7 01 00 00 b3 01 00 00 b0 01 00 00 ad 01 00 00 ab 01 00 00 a9 01 00 00 a7 01 00 00 a6 01 00 00 a4 01 00 00 a3 01 00 00 a2 01 00 00 20 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 30 00 00 00 00 00 00 00 ff 00 00 00 30 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00 40 00 00 00 00 00 00 00 ff 00 00 00];
};
iq_shdr {
size = [ec 01 00 00];
data = [00 00 00 00 00 00 00 00 01 00 00 00 00 0c 09 00 c0 00 06 00 02 00 00 00 00 0c 09 00 c0 00 06 00 00 01 00 02 04 08 0a 0c 0e 10 0e 0c 0a 08 06 04 02 00 00 00 00 00 00 00 08 00 02 04 06 08 0a 0c 0e 10 12 14 16 18 1a 1c 1e 20 22 24 26 28 2a 2c 2e 30 32 34 36 38 3a 3c 3e 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 00 00 00 43 03 e9 04 06 06 de 06 8b 07 1c 08 98 08 05 09 67 09 be 09 0e 0a 57 0a 9b 0a d9 0a 14 0b 4b 0b 7f 0b b0 0b de 0b 0a 0c 34 0c 5c 0c 83 0c a8 0c cb 0c ed 0c 0d 0d 2d 0d 4b 0d 69 0d 85 0d a1 0d bc 0d d6 0d ef 0d 08 0e 20 0e 37 0e 4e 0e 64 0e 79 0e 8e 0e a3 0e b7 0e cb 0e de 0e f1 0e 03 0f 15 0f 27 0f 38 0f 49 0f 5a 0f 6a 0f 7a 0f 8a 0f 9a 0f a9 0f b8 0f c7 0f d5 0f e4 0f f2 0f ff 0f 00 01 04 05 06 07 08 08 00 00 01 02 03 00 e0 00 04 05 06 07 08 08 00 00 01 02 03 00 e0 00 04 05 06 07 08 08 00 00 01 02 03 00 e0 00 04 05 06 07 08 08 00 00 01 02 03 00 e0 00 04 05 06 07 08 08 00 00 01 02 03 00 e0 00 04 05 06 07 08 08 00 00 01 02 03 00 e0 00 04 05 06 07 08 08 00 00 01 02 03 00 e0 00 04 05 06 07 08 08 00 00 01 02 03 00 e0 00 04 05 06 07 08 08 00 00 01 02 03 00 e0 00 04 05 06 07 08 08 00 00 01 02 03 00 e0 00 04 05 06 07 08 08 00 00 01 02 03 00 e0 00 04 05 06 07 08 08 00 00 01 02 03 00 e0 00 04 05 06 07 08 08 00 00 01 02 03 00 e0 00 04 05 06 07 08 08 00 00 01 02 03 00 e0 00 04 05 06 07 08 08 00 00 01 02 03 00 e0 00 04 05 06 07 08 08 00 00 01 02 03 00 e0 00 04 05 06 07 08 08 00 00 01 02 03 00 00 00];
};
iq_rgbir {
size = [28 00 00 00];
data = [00 00 00 00 cc 00 00 00 cc 00 00 00 e6 00 00 00 00 01 00 00 cc 00 00 00 cc 00 00 00 e6 00 00 00 dc 00 00 00 f0 00 00 00];
};
iq_companding {
size = [18 01 00 00];
data = [00 02 00 00 00 03 00 00 00 0a 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 ff 0f 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 04 00 00 00 05 00 00 00 06 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 08 00 00 00 0a 00 00 00 0b 00 00 00 0c 00 00 00 0d 00 00 00 0e 00 00 00 0f 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 00 00 00 00 00 02 00 00 00 04 00 00 00 06 00 00 00 08 00 00 00 0a 00 00 00 0c 00 00 00 0c 00 00 00 0c 00 00 00 0c 00 00 00 0c 00 00 00 0c 00 00 03 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00 07 00 00 00 08 00 00 00 09 00 00 00 09 00 00 00 09 00 00 00 09 00 00 00 09 00 00 00 09 00 00 00];
};
iq_rgbir_enh {
size = [18 01 00 00];
data = [01 00 00 00 00 00 00 00 32 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 10 00 00 00 50 00 00 00 20 00 00 00 20 00 00 00 20 00 00 00 20 00 00 00 20 00 00 00 20 00 00 00 20 00 00 00 20 00 00 00 20 00 00 00 20 00 00 00 20 00 00 00 20 00 00 00 20 00 00 00 20 00 00 00 20 00 00 00 20 00 00 00 98 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 50 00 00 00 ff 00 00 00 a0 00 00 00 a0 00 00 00 a0 00 00 00 a0 00 00 00 a0 00 00 00 a0 00 00 00 a0 00 00 00 a0 00 00 00 a0 00 00 00 a0 00 00 00 a0 00 00 00 a0 00 00 00 a0 00 00 00 a0 00 00 00 a0 00 00 00 a0 00 00 00];
};
iq_post_sharpen {
size = [4c 02 00 00];
data = [01 00 00 00 00 00 00 00 19 32 32 32 30 2f 2c 27 26 25 24 23 23 23 23 23 23 23 02 af fa 00 5e 01 50 50 50 80 ff 00 40 80 80 00 69 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 02 ff 96 00 fa 00 50 50 50 80 ff 00 40 80 80 00 69 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 02 ff 96 00 fa 00 50 50 50 80 ff 00 40 80 80 00 69 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 02 ff 96 00 fa 00 50 50 50 80 ff 00 40 80 80 00 69 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 02 ff c8 00 2c 01 50 50 50 80 ff 00 40 80 80 00 69 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 02 ff fa 00 5e 01 50 50 50 80 ff 00 40 80 80 00 69 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 02 ff 2c 01 90 01 50 50 50 80 ff 00 40 80 80 00 69 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 02 ff 5e 01 c2 01 50 50 50 80 ff 00 40 80 80 00 48 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 02 ff 37 01 f4 01 50 50 50 80 ff 00 40 80 80 00 5a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 02 ff b0 00 5e 01 50 50 50 80 ff 00 40 80 80 00 5a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 02 ff b0 00 5e 01 50 50 50 80 ff 0f 40 80 80 00 32 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 02 ff 51 00 5e 01 50 50 50 80 ff 0f 40 80 80 00 69 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 02 ff fa 00 5e 01 50 50 50 80 ff 00 40 80 80 00 69 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 02 ff fa 00 5e 01 50 50 50 80 ff 00 40 80 80 00 69 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 02 ff fa 00 5e 01 50 50 50 80 ff 00 40 80 80 00 69 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 02 ff fa 00 5e 01 50 50 50 80 ff 00 40 80 80 00 69 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 02 ff fa 00 5e 01 50 50 50 80 ff 00 40 80 80 00 00 00];
};
iq_ycurve {
size = [08 02 00 00];
data = [00 00 00 00 00 00 00 00 02 00 00 00 04 00 00 00 06 00 00 00 08 00 00 00 0a 00 00 00 0c 00 00 00 0e 00 00 00 10 00 00 00 12 00 00 00 14 00 00 00 16 00 00 00 18 00 00 00 1a 00 00 00 1c 00 00 00 1e 00 00 00 20 00 00 00 22 00 00 00 24 00 00 00 26 00 00 00 28 00 00 00 2a 00 00 00 2c 00 00 00 2e 00 00 00 30 00 00 00 32 00 00 00 34 00 00 00 36 00 00 00 38 00 00 00 3a 00 00 00 3c 00 00 00 3e 00 00 00 40 00 00 00 42 00 00 00 44 00 00 00 46 00 00 00 48 00 00 00 4a 00 00 00 4c 00 00 00 4e 00 00 00 50 00 00 00 52 00 00 00 54 00 00 00 56 00 00 00 58 00 00 00 5a 00 00 00 5c 00 00 00 5d 00 00 00 5f 00 00 00 61 00 00 00 64 00 00 00 66 00 00 00 68 00 00 00 6a 00 00 00 6c 00 00 00 6e 00 00 00 70 00 00 00 72 00 00 00 74 00 00 00 76 00 00 00 78 00 00 00 7a 00 00 00 7c 00 00 00 7e 00 00 00 80 00 00 00 82 00 00 00 84 00 00 00 86 00 00 00 88 00 00 00 8a 00 00 00 8c 00 00 00 8e 00 00 00 90 00 00 00 92 00 00 00 94 00 00 00 96 00 00 00 98 00 00 00 9a 00 00 00 9c 00 00 00 9e 00 00 00 a0 00 00 00 a2 00 00 00 a4 00 00 00 a6 00 00 00 a8 00 00 00 aa 00 00 00 ac 00 00 00 ae 00 00 00 b0 00 00 00 b2 00 00 00 b4 00 00 00 b6 00 00 00 b8 00 00 00 ba 00 00 00 bc 00 00 00 be 00 00 00 c0 00 00 00 c2 00 00 00 c4 00 00 00 c6 00 00 00 c8 00 00 00 ca 00 00 00 cc 00 00 00 ce 00 00 00 d0 00 00 00 d2 00 00 00 d4 00 00 00 d6 00 00 00 d8 00 00 00 da 00 00 00 dc 00 00 00 de 00 00 00 e0 00 00 00 e2 00 00 00 e4 00 00 00 e6 00 00 00 e8 00 00 00 ea 00 00 00 ec 00 00 00 ee 00 00 00 f0 00 00 00 f2 00 00 00 f4 00 00 00 f6 00 00 00 f8 00 00 00 fa 00 00 00 fc 00 00 00 fe 00 00 00 ff 00 00 00];
};
};
};