1.修改0331IQ;2.修改usb相关;增加sifarapp框架
This commit is contained in:
parent
7423f34db3
commit
302629f168
|
@ -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
|
||||||
|
|
|
@ -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)... \
|
||||||
|
|
|
@ -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
|
||||||
//--------------------------------------------------------------------
|
//--------------------------------------------------------------------
|
||||||
|
|
|
@ -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"
|
||||||
|
|
||||||
|
|
||||||
|
|
23
code/application/source/cardv/SrcCode/Startup/sifar_app.c
Executable file
23
code/application/source/cardv/SrcCode/Startup/sifar_app.c
Executable file
|
@ -0,0 +1,23 @@
|
||||||
|
/*
|
||||||
|
* app2.c
|
||||||
|
*
|
||||||
|
* Created on: 2023年4月7日
|
||||||
|
* Author: NVT02970
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <io/gpio.h>
|
||||||
|
#include <UIWnd/UIFlow.h>
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
gpio_direction_input(C_GPIO(10));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
BIN
code/application/source/cardv/SrcCode/Startup/sifar_app.o
Normal file
BIN
code/application/source/cardv/SrcCode/Startup/sifar_app.o
Normal file
Binary file not shown.
|
@ -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")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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*/
|
||||||
|
|
|
@ -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/ \
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
2263
code/driver/source/net/GobiNet/GobiUSBNet.c
Normal file
2263
code/driver/source/net/GobiNet/GobiUSBNet.c
Normal file
File diff suppressed because it is too large
Load Diff
104
code/driver/source/net/GobiNet/Makefile
Executable file
104
code/driver/source/net/GobiNet/Makefile
Executable 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
|
1509
code/driver/source/net/GobiNet/QMI.c
Normal file
1509
code/driver/source/net/GobiNet/QMI.c
Normal file
File diff suppressed because it is too large
Load Diff
337
code/driver/source/net/GobiNet/QMI.h
Normal file
337
code/driver/source/net/GobiNet/QMI.h
Normal 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
|
4204
code/driver/source/net/GobiNet/QMIDevice.c
Normal file
4204
code/driver/source/net/GobiNet/QMIDevice.c
Normal file
File diff suppressed because it is too large
Load Diff
368
code/driver/source/net/GobiNet/QMIDevice.h
Normal file
368
code/driver/source/net/GobiNet/QMIDevice.h
Normal 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
|
78
code/driver/source/net/GobiNet/Readme.txt
Normal file
78
code/driver/source/net/GobiNet/Readme.txt
Normal 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.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
83
code/driver/source/net/GobiNet/ReleaseNote.txt
Normal file
83
code/driver/source/net/GobiNet/ReleaseNote.txt
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
Release Notes
|
||||||
|
|
||||||
|
[Quectel_WCDMA<E_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<E_Linux&Android_GobiNet_Driver_V1.4.3]
|
||||||
|
Date: 2018/04/16
|
||||||
|
enhancement::
|
||||||
|
1. increase QMAP's rx_urb_size to 32KB
|
||||||
|
|
||||||
|
[Quectel_WCDMA<E_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<E_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<E_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<E_Linux&Android_GobiNet_Driver_V1.3.8]
|
||||||
|
[Quectel_WCDMA<E_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<E_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<E_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<E_QConnectManager_Linux&Android_V1.1.40' and later version is required to use QMAP and bridge mode.
|
||||||
|
|
||||||
|
[Quectel_WCDMA<E_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<E_Linux&Android_GobiNet_Driver_V1.3.3]
|
||||||
|
Date: 2018/04/04
|
||||||
|
optimization:
|
||||||
|
1. optimization QMAP source code
|
||||||
|
|
||||||
|
[Quectel_WCDMA<E_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<E_Linux&Android_GobiNet_Driver_V1.3.1]
|
||||||
|
Date: 2017/11/20
|
||||||
|
enhancement:
|
||||||
|
1. support BG96
|
458
code/driver/source/net/GobiNet/Structs.h
Normal file
458
code/driver/source/net/GobiNet/Structs.h
Normal 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;
|
||||||
|
|
|
@ -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 `
|
||||||
|
|
|
@ -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
BIN
code/hdal/vendor/output/libvendor_ai2_pub.a
vendored
BIN
code/hdal/vendor/output/libvendor_ai2_pub.a
vendored
Binary file not shown.
BIN
code/hdal/vendor/output/libvendor_ai2_pub2.a
vendored
BIN
code/hdal/vendor/output/libvendor_ai2_pub2.a
vendored
Binary file not shown.
|
@ -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)
|
||||||
|
|
||||||
|
|
23
code/lib/source/sifar/code/include/sf_base64.h
Executable file
23
code/lib/source/sifar/code/include/sf_base64.h
Executable 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
|
||||||
|
|
|
@ -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
|
||||||
|
|
89
code/lib/source/sifar/code/include/sf_hal_ttyusb.h
Executable file
89
code/lib/source/sifar/code/include/sf_hal_ttyusb.h
Executable 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
|
|
@ -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
|
||||||
|
|
113
code/lib/source/sifar/code/include/sf_log.h
Executable file
113
code/lib/source/sifar/code/include/sf_log.h
Executable 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
|
|
@ -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
|
||||||
|
|
||||||
|
|
52
code/lib/source/sifar/code/include/sf_type.h
Executable file
52
code/lib/source/sifar/code/include/sf_type.h
Executable 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
|
145
code/lib/source/sifar/code/source/common/sf_base64.c
Executable file
145
code/lib/source/sifar/code/source/common/sf_base64.c
Executable 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
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
274
code/lib/source/sifar/code/source/debug/sf_log.c
Executable file
274
code/lib/source/sifar/code/source/debug/sf_log.c
Executable 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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1887,3 +1887,4 @@ int sf_while_flag(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
415
code/lib/source/sifar/code/source/module/sf_hal_ttyusb.c
Executable file
415
code/lib/source/sifar/code/source/module/sf_hal_ttyusb.c
Executable 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
|
|
@ -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
|
||||||
|
|
|
@ -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 `
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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*/
|
||||||
};
|
};
|
||||||
|
|
|
@ -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];
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"
|
||||||
|
|
||||||
/*******************************************************************************************
|
/*******************************************************************************************
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
90
rtos/code/hdal/vendor/isp/configs/dtsi/os05b10_iq_0_vid.dtsi
vendored
Executable file
90
rtos/code/hdal/vendor/isp/configs/dtsi/os05b10_iq_0_vid.dtsi
vendored
Executable 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];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
Loading…
Reference in New Issue
Block a user