Commit 7fb56744 authored by Andrey Filippov's avatar Andrey Filippov

made all build for NC393, created project setup files

parent 99b601c4
......@@ -10,3 +10,6 @@ generated*
sysroots
bitbake-logs
/temp/
*.o
*.cgi
bitbake-logs
# Runs 'make', 'make install', and 'make clean' in specified subdirectories
SUBDIRS := src
INSTALLDIRS = $(SUBDIRS:%=install-%)
CLEANDIRS = $(SUBDIRS:%=clean-%)
#TARGETDIR=$(DESTDIR)/www/pages
all: $(SUBDIRS)
@echo "make all top"
$(SUBDIRS):
$(MAKE) -C $@
install: $(INSTALLDIRS)
@echo "make install top"
$(INSTALLDIRS):
$(MAKE) -C $(@:install-%=%) install
clean: $(CLEANDIRS)
@echo "make clean top"
$(CLEANDIRS):
$(MAKE) -C $(@:clean-%=%) clean
.PHONY: all install clean $(SUBDIRS) $(INSTALLDIRS) $(CLEANDIRS)
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="0.620646593">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="0.620646593" moduleId="org.eclipse.cdt.core.settings" name="Default">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration buildProperties="" description="" id="0.620646593" name="Default" parent="org.eclipse.cdt.build.core.prefbase.cfg">
<folderInfo id="0.620646593." name="/" resourcePath="">
<toolChain id="org.eclipse.cdt.build.core.prefbase.toolchain.557561080" name="No ToolChain" resourceTypeBasedDiscovery="false" superClass="org.eclipse.cdt.build.core.prefbase.toolchain">
<targetPlatform id="org.eclipse.cdt.build.core.prefbase.toolchain.557561080.1179806978" name=""/>
<builder arguments="apps-autoexposure" command="${workspace_loc:/elphel-apps-autoexposure/run_bitbake.sh}" enableCleanBuild="false" id="org.eclipse.cdt.build.core.settings.default.builder.980973581" incrementalBuildTarget="-c compile -f -v" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder"/>
<tool id="org.eclipse.cdt.build.core.settings.holder.libs.1583282397" name="holder for library settings" superClass="org.eclipse.cdt.build.core.settings.holder.libs"/>
<tool id="org.eclipse.cdt.build.core.settings.holder.2062638946" name="Assembly" superClass="org.eclipse.cdt.build.core.settings.holder">
<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.1861036184" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/elphel-apps-autoexposure/sysroots/elphel393/usr/include-uapi}&quot;"/>
</option>
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1710770814" languageId="org.eclipse.cdt.core.assembly" languageName="Assembly" sourceContentType="org.eclipse.cdt.core.asmSource" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
<tool id="org.eclipse.cdt.build.core.settings.holder.1331138377" name="GNU C++" superClass="org.eclipse.cdt.build.core.settings.holder">
<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.1361589385" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/elphel-apps-autoexposure/sysroots/elphel393/usr/include-uapi}&quot;"/>
</option>
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.2147334973" languageId="org.eclipse.cdt.core.g++" languageName="GNU C++" sourceContentType="org.eclipse.cdt.core.cxxSource,org.eclipse.cdt.core.cxxHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
<tool id="org.eclipse.cdt.build.core.settings.holder.742268475" name="GNU C" superClass="org.eclipse.cdt.build.core.settings.holder">
<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.1141477229" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/elphel-apps-autoexposure/sysroots/elphel393/usr/include-uapi}&quot;"/>
</option>
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.690069173" languageId="org.eclipse.cdt.core.gcc" languageName="GNU C" sourceContentType="org.eclipse.cdt.core.cSource,org.eclipse.cdt.core.cHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
<tool id="org.eclipse.cdt.build.core.settings.holder.852951772" name="LLVM bytecode assembly" superClass="org.eclipse.cdt.build.core.settings.holder">
<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.1374134933" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/elphel-apps-autoexposure/sysroots/elphel393/usr/include-uapi}&quot;"/>
</option>
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.5811484" languageId="org.eclipse.cdt.managedbuilder.llvm.ui.llvmAssembly" languageName="LLVM bytecode assembly" sourceContentType="org.eclipse.cdt.managedbuilder.llvm.ui.llvmAssemblySource" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
<tool id="org.eclipse.cdt.build.core.settings.holder.303574460" name="UPC" superClass="org.eclipse.cdt.build.core.settings.holder">
<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.1549363418" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/elphel-apps-autoexposure/sysroots/elphel393/usr/include-uapi}&quot;"/>
</option>
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1280000950" languageId="org.eclipse.cdt.core.parser.upc.upc" languageName="UPC" sourceContentType="org.eclipse.cdt.core.parser.upc.upcSource" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
</toolChain>
</folderInfo>
<sourceEntries>
<entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="src"/>
<entry excluding="elphel393-tcbootstrap/|elphel393/lib/|elphel393/usr/include-uapi/asm-generic/auxvec.h|elphel393/usr/include-uapi/asm-generic/fcntl.h|elphel393/usr/include-uapi/asm-generic/int-l64.h|elphel393/usr/include-uapi/asm-generic/ipcbuf.h|elphel393/usr/include-uapi/asm-generic/kvm_para.h|elphel393/usr/include-uapi/asm-generic/mman-common.h|elphel393/usr/include-uapi/asm-generic/mman.h|elphel393/usr/include-uapi/asm-generic/msgbuf.h|elphel393/usr/include-uapi/asm-generic/param.h|elphel393/usr/include-uapi/asm-generic/poll.h|elphel393/usr/include-uapi/asm-generic/resource.h|elphel393/usr/include-uapi/asm-generic/sembuf.h|elphel393/usr/include-uapi/asm-generic/setup.h|elphel393/usr/include-uapi/asm-generic/shmbuf.h|elphel393/usr/include-uapi/asm-generic/shmparam.h|elphel393/usr/include-uapi/asm-generic/siginfo.h|elphel393/usr/include-uapi/asm-generic/signal-defs.h|elphel393/usr/include-uapi/asm-generic/signal.h|elphel393/usr/include-uapi/asm-generic/stat.h|elphel393/usr/include-uapi/asm-generic/statfs.h|elphel393/usr/include-uapi/asm-generic/swab.h|elphel393/usr/include-uapi/asm-generic/termbits.h|elphel393/usr/include-uapi/asm-generic/termios.h|elphel393/usr/include-uapi/asm-generic/types.h|elphel393/usr/include-uapi/asm-generic/ucontext.h|elphel393/usr/include-uapi/asm-generic/unistd.h|elphel393/usr/include-uapi/asm/auxvec.h|elphel393/usr/include-uapi/asm/fcntl.h|elphel393/usr/include-uapi/asm/hwcap.h|elphel393/usr/include-uapi/asm/ipcbuf.h|elphel393/usr/include-uapi/asm/kvm.h|elphel393/usr/include-uapi/asm/kvm_para.h|elphel393/usr/include-uapi/asm/mman.h|elphel393/usr/include-uapi/asm/msgbuf.h|elphel393/usr/include-uapi/asm/param.h|elphel393/usr/include-uapi/asm/perf_regs.h|elphel393/usr/include-uapi/asm/poll.h|elphel393/usr/include-uapi/asm/ptrace.h|elphel393/usr/include-uapi/asm/resource.h|elphel393/usr/include-uapi/asm/sembuf.h|elphel393/usr/include-uapi/asm/setup.h|elphel393/usr/include-uapi/asm/shmbuf.h|elphel393/usr/include-uapi/asm/siginfo.h|elphel393/usr/include-uapi/asm/signal.h|elphel393/usr/include-uapi/asm/stat.h|elphel393/usr/include-uapi/asm/statfs.h|elphel393/usr/include-uapi/asm/termbits.h|elphel393/usr/include-uapi/asm/termios.h|elphel393/usr/include-uapi/asm/unistd.h|elphel393/usr/include-uapi/drm/|elphel393/usr/include-uapi/elphel/exifa.h|elphel393/usr/include-uapi/linux/acct.h|elphel393/usr/include-uapi/linux/adb.h|elphel393/usr/include-uapi/linux/adfs_fs.h|elphel393/usr/include-uapi/linux/affs_hardblocks.h|elphel393/usr/include-uapi/linux/agpgart.h|elphel393/usr/include-uapi/linux/aio_abi.h|elphel393/usr/include-uapi/linux/am437x-vpfe.h|elphel393/usr/include-uapi/linux/android/|elphel393/usr/include-uapi/linux/apm_bios.h|elphel393/usr/include-uapi/linux/arcfb.h|elphel393/usr/include-uapi/linux/atalk.h|elphel393/usr/include-uapi/linux/atm.h|elphel393/usr/include-uapi/linux/atm_eni.h|elphel393/usr/include-uapi/linux/atm_he.h|elphel393/usr/include-uapi/linux/atm_idt77105.h|elphel393/usr/include-uapi/linux/atm_nicstar.h|elphel393/usr/include-uapi/linux/atm_tcp.h|elphel393/usr/include-uapi/linux/atm_zatm.h|elphel393/usr/include-uapi/linux/atmapi.h|elphel393/usr/include-uapi/linux/atmarp.h|elphel393/usr/include-uapi/linux/atmbr2684.h|elphel393/usr/include-uapi/linux/atmclip.h|elphel393/usr/include-uapi/linux/atmdev.h|elphel393/usr/include-uapi/linux/atmioc.h|elphel393/usr/include-uapi/linux/atmlec.h|elphel393/usr/include-uapi/linux/atmmpc.h|elphel393/usr/include-uapi/linux/atmppp.h|elphel393/usr/include-uapi/linux/atmsap.h|elphel393/usr/include-uapi/linux/atmsvc.h|elphel393/usr/include-uapi/linux/audit.h|elphel393/usr/include-uapi/linux/auto_fs.h|elphel393/usr/include-uapi/linux/auto_fs4.h|elphel393/usr/include-uapi/linux/auxvec.h|elphel393/usr/include-uapi/linux/ax25.h|elphel393/usr/include-uapi/linux/b1lli.h|elphel393/usr/include-uapi/linux/baycom.h|elphel393/usr/include-uapi/linux/bcm933xx_hcs.h|elphel393/usr/include-uapi/linux/bfs_fs.h|elphel393/usr/include-uapi/linux/binfmts.h|elphel393/usr/include-uapi/linux/blkpg.h|elphel393/usr/include-uapi/linux/blktrace_api.h|elphel393/usr/include-uapi/linux/bpf.h|elphel393/usr/include-uapi/linux/bpf_common.h|elphel393/usr/include-uapi/linux/bpqether.h|elphel393/usr/include-uapi/linux/bsg.h|elphel393/usr/include-uapi/linux/btrfs.h|elphel393/usr/include-uapi/linux/byteorder/big_endian.h|elphel393/usr/include-uapi/linux/caif/|elphel393/usr/include-uapi/linux/can.h|elphel393/usr/include-uapi/linux/can/|elphel393/usr/include-uapi/linux/capability.h|elphel393/usr/include-uapi/linux/capi.h|elphel393/usr/include-uapi/linux/cciss_defs.h|elphel393/usr/include-uapi/linux/cciss_ioctl.h|elphel393/usr/include-uapi/linux/cdrom.h|elphel393/usr/include-uapi/linux/cgroupstats.h|elphel393/usr/include-uapi/linux/chio.h|elphel393/usr/include-uapi/linux/cm4000_cs.h|elphel393/usr/include-uapi/linux/cn_proc.h|elphel393/usr/include-uapi/linux/coda.h|elphel393/usr/include-uapi/linux/coda_psdev.h|elphel393/usr/include-uapi/linux/coff.h|elphel393/usr/include-uapi/linux/connector.h|elphel393/usr/include-uapi/linux/const.h|elphel393/usr/include-uapi/linux/cramfs_fs.h|elphel393/usr/include-uapi/linux/cuda.h|elphel393/usr/include-uapi/linux/cyclades.h|elphel393/usr/include-uapi/linux/cycx_cfm.h|elphel393/usr/include-uapi/linux/dcbnl.h|elphel393/usr/include-uapi/linux/dccp.h|elphel393/usr/include-uapi/linux/dlm.h|elphel393/usr/include-uapi/linux/dlm_device.h|elphel393/usr/include-uapi/linux/dlm_netlink.h|elphel393/usr/include-uapi/linux/dlm_plock.h|elphel393/usr/include-uapi/linux/dlmconstants.h|elphel393/usr/include-uapi/linux/dm-ioctl.h|elphel393/usr/include-uapi/linux/dm-log-userspace.h|elphel393/usr/include-uapi/linux/dn.h|elphel393/usr/include-uapi/linux/dqblk_xfs.h|elphel393/usr/include-uapi/linux/dvb/|elphel393/usr/include-uapi/linux/edd.h|elphel393/usr/include-uapi/linux/efs_fs_sb.h|elphel393/usr/include-uapi/linux/elf-em.h|elphel393/usr/include-uapi/linux/elf-fdpic.h|elphel393/usr/include-uapi/linux/elf.h|elphel393/usr/include-uapi/linux/elfcore.h|elphel393/usr/include-uapi/linux/errqueue.h|elphel393/usr/include-uapi/linux/ethtool.h|elphel393/usr/include-uapi/linux/eventpoll.h|elphel393/usr/include-uapi/linux/fadvise.h|elphel393/usr/include-uapi/linux/falloc.h|elphel393/usr/include-uapi/linux/fanotify.h|elphel393/usr/include-uapi/linux/fb.h|elphel393/usr/include-uapi/linux/fcntl.h|elphel393/usr/include-uapi/linux/fd.h|elphel393/usr/include-uapi/linux/fdreg.h|elphel393/usr/include-uapi/linux/fib_rules.h|elphel393/usr/include-uapi/linux/fiemap.h|elphel393/usr/include-uapi/linux/filter.h|elphel393/usr/include-uapi/linux/firewire-cdev.h|elphel393/usr/include-uapi/linux/firewire-constants.h|elphel393/usr/include-uapi/linux/flat.h|elphel393/usr/include-uapi/linux/fou.h|elphel393/usr/include-uapi/linux/fs.h|elphel393/usr/include-uapi/linux/fsl_hypervisor.h|elphel393/usr/include-uapi/linux/fuse.h|elphel393/usr/include-uapi/linux/futex.h|elphel393/usr/include-uapi/linux/gameport.h|elphel393/usr/include-uapi/linux/gen_stats.h|elphel393/usr/include-uapi/linux/genetlink.h|elphel393/usr/include-uapi/linux/gfs2_ondisk.h|elphel393/usr/include-uapi/linux/gigaset_dev.h|elphel393/usr/include-uapi/linux/hdlc.h|elphel393/usr/include-uapi/linux/hdlc/|elphel393/usr/include-uapi/linux/hdlcdrv.h|elphel393/usr/include-uapi/linux/hdreg.h|elphel393/usr/include-uapi/linux/hid.h|elphel393/usr/include-uapi/linux/hiddev.h|elphel393/usr/include-uapi/linux/hidraw.h|elphel393/usr/include-uapi/linux/hpet.h|elphel393/usr/include-uapi/linux/hsi/|elphel393/usr/include-uapi/linux/hsr_netlink.h|elphel393/usr/include-uapi/linux/hw_breakpoint.h|elphel393/usr/include-uapi/linux/hyperv.h|elphel393/usr/include-uapi/linux/hysdn_if.h|elphel393/usr/include-uapi/linux/i2c-dev.h|elphel393/usr/include-uapi/linux/i2c.h|elphel393/usr/include-uapi/linux/i2o-dev.h|elphel393/usr/include-uapi/linux/i8k.h|elphel393/usr/include-uapi/linux/icmp.h|elphel393/usr/include-uapi/linux/icmpv6.h|elphel393/usr/include-uapi/linux/if.h|elphel393/usr/include-uapi/linux/if_addr.h|elphel393/usr/include-uapi/linux/if_addrlabel.h|elphel393/usr/include-uapi/linux/if_alg.h|elphel393/usr/include-uapi/linux/if_arcnet.h|elphel393/usr/include-uapi/linux/if_arp.h|elphel393/usr/include-uapi/linux/if_bonding.h|elphel393/usr/include-uapi/linux/if_bridge.h|elphel393/usr/include-uapi/linux/if_cablemodem.h|elphel393/usr/include-uapi/linux/if_eql.h|elphel393/usr/include-uapi/linux/if_ether.h|elphel393/usr/include-uapi/linux/if_fc.h|elphel393/usr/include-uapi/linux/if_fddi.h|elphel393/usr/include-uapi/linux/if_frad.h|elphel393/usr/include-uapi/linux/if_hippi.h|elphel393/usr/include-uapi/linux/if_infiniband.h|elphel393/usr/include-uapi/linux/if_link.h|elphel393/usr/include-uapi/linux/if_ltalk.h|elphel393/usr/include-uapi/linux/if_packet.h|elphel393/usr/include-uapi/linux/if_phonet.h|elphel393/usr/include-uapi/linux/if_plip.h|elphel393/usr/include-uapi/linux/if_ppp.h|elphel393/usr/include-uapi/linux/if_pppol2tp.h|elphel393/usr/include-uapi/linux/if_pppox.h|elphel393/usr/include-uapi/linux/if_slip.h|elphel393/usr/include-uapi/linux/if_team.h|elphel393/usr/include-uapi/linux/if_tun.h|elphel393/usr/include-uapi/linux/if_tunnel.h|elphel393/usr/include-uapi/linux/if_vlan.h|elphel393/usr/include-uapi/linux/if_x25.h|elphel393/usr/include-uapi/linux/igmp.h|elphel393/usr/include-uapi/linux/in.h|elphel393/usr/include-uapi/linux/in6.h|elphel393/usr/include-uapi/linux/in_route.h|elphel393/usr/include-uapi/linux/inet_diag.h|elphel393/usr/include-uapi/linux/inotify.h|elphel393/usr/include-uapi/linux/input.h|elphel393/usr/include-uapi/linux/ip.h|elphel393/usr/include-uapi/linux/ip6_tunnel.h|elphel393/usr/include-uapi/linux/ip_vs.h|elphel393/usr/include-uapi/linux/ipc.h|elphel393/usr/include-uapi/linux/ipmi.h|elphel393/usr/include-uapi/linux/ipmi_msgdefs.h|elphel393/usr/include-uapi/linux/ipsec.h|elphel393/usr/include-uapi/linux/ipv6.h|elphel393/usr/include-uapi/linux/ipv6_route.h|elphel393/usr/include-uapi/linux/ipx.h|elphel393/usr/include-uapi/linux/irda.h|elphel393/usr/include-uapi/linux/irqnr.h|elphel393/usr/include-uapi/linux/isdn.h|elphel393/usr/include-uapi/linux/isdn/|elphel393/usr/include-uapi/linux/isdn_divertif.h|elphel393/usr/include-uapi/linux/isdn_ppp.h|elphel393/usr/include-uapi/linux/isdnif.h|elphel393/usr/include-uapi/linux/iso_fs.h|elphel393/usr/include-uapi/linux/ivtv.h|elphel393/usr/include-uapi/linux/ivtvfb.h|elphel393/usr/include-uapi/linux/ixjuser.h|elphel393/usr/include-uapi/linux/jffs2.h|elphel393/usr/include-uapi/linux/joystick.h|elphel393/usr/include-uapi/linux/kcmp.h|elphel393/usr/include-uapi/linux/kd.h|elphel393/usr/include-uapi/linux/kdev_t.h|elphel393/usr/include-uapi/linux/kernel-page-flags.h|elphel393/usr/include-uapi/linux/kernel.h|elphel393/usr/include-uapi/linux/kernelcapi.h|elphel393/usr/include-uapi/linux/kexec.h|elphel393/usr/include-uapi/linux/keyboard.h|elphel393/usr/include-uapi/linux/keyctl.h|elphel393/usr/include-uapi/linux/kvm.h|elphel393/usr/include-uapi/linux/kvm_para.h|elphel393/usr/include-uapi/linux/l2tp.h|elphel393/usr/include-uapi/linux/libc-compat.h|elphel393/usr/include-uapi/linux/limits.h|elphel393/usr/include-uapi/linux/llc.h|elphel393/usr/include-uapi/linux/loop.h|elphel393/usr/include-uapi/linux/lp.h|elphel393/usr/include-uapi/linux/magic.h|elphel393/usr/include-uapi/linux/major.h|elphel393/usr/include-uapi/linux/map_to_7segment.h|elphel393/usr/include-uapi/linux/matroxfb.h|elphel393/usr/include-uapi/linux/mdio.h|elphel393/usr/include-uapi/linux/media-bus-format.h|elphel393/usr/include-uapi/linux/media.h|elphel393/usr/include-uapi/linux/mei.h|elphel393/usr/include-uapi/linux/memfd.h|elphel393/usr/include-uapi/linux/mempolicy.h|elphel393/usr/include-uapi/linux/meye.h|elphel393/usr/include-uapi/linux/mic_common.h|elphel393/usr/include-uapi/linux/mic_ioctl.h|elphel393/usr/include-uapi/linux/mii.h|elphel393/usr/include-uapi/linux/minix_fs.h|elphel393/usr/include-uapi/linux/mman.h|elphel393/usr/include-uapi/linux/mmc/|elphel393/usr/include-uapi/linux/mmtimer.h|elphel393/usr/include-uapi/linux/mpls.h|elphel393/usr/include-uapi/linux/mqueue.h|elphel393/usr/include-uapi/linux/mroute.h|elphel393/usr/include-uapi/linux/mroute6.h|elphel393/usr/include-uapi/linux/msdos_fs.h|elphel393/usr/include-uapi/linux/msg.h|elphel393/usr/include-uapi/linux/mtio.h|elphel393/usr/include-uapi/linux/n_r3964.h|elphel393/usr/include-uapi/linux/nbd.h|elphel393/usr/include-uapi/linux/ncp.h|elphel393/usr/include-uapi/linux/ncp_fs.h|elphel393/usr/include-uapi/linux/ncp_mount.h|elphel393/usr/include-uapi/linux/ncp_no.h|elphel393/usr/include-uapi/linux/neighbour.h|elphel393/usr/include-uapi/linux/net.h|elphel393/usr/include-uapi/linux/net_dropmon.h|elphel393/usr/include-uapi/linux/net_namespace.h|elphel393/usr/include-uapi/linux/net_tstamp.h|elphel393/usr/include-uapi/linux/netconf.h|elphel393/usr/include-uapi/linux/netdevice.h|elphel393/usr/include-uapi/linux/netfilter.h|elphel393/usr/include-uapi/linux/netfilter/|elphel393/usr/include-uapi/linux/netfilter_arp.h|elphel393/usr/include-uapi/linux/netfilter_arp/|elphel393/usr/include-uapi/linux/netfilter_bridge.h|elphel393/usr/include-uapi/linux/netfilter_bridge/|elphel393/usr/include-uapi/linux/netfilter_decnet.h|elphel393/usr/include-uapi/linux/netfilter_ipv4.h|elphel393/usr/include-uapi/linux/netfilter_ipv4/|elphel393/usr/include-uapi/linux/netfilter_ipv6.h|elphel393/usr/include-uapi/linux/netfilter_ipv6/|elphel393/usr/include-uapi/linux/netlink.h|elphel393/usr/include-uapi/linux/netlink_diag.h|elphel393/usr/include-uapi/linux/netrom.h|elphel393/usr/include-uapi/linux/nfc.h|elphel393/usr/include-uapi/linux/nfs.h|elphel393/usr/include-uapi/linux/nfs2.h|elphel393/usr/include-uapi/linux/nfs3.h|elphel393/usr/include-uapi/linux/nfs4.h|elphel393/usr/include-uapi/linux/nfs4_mount.h|elphel393/usr/include-uapi/linux/nfs_fs.h|elphel393/usr/include-uapi/linux/nfs_idmap.h|elphel393/usr/include-uapi/linux/nfs_mount.h|elphel393/usr/include-uapi/linux/nfsacl.h|elphel393/usr/include-uapi/linux/nfsd/|elphel393/usr/include-uapi/linux/nl80211.h|elphel393/usr/include-uapi/linux/nubus.h|elphel393/usr/include-uapi/linux/nvme.h|elphel393/usr/include-uapi/linux/nvram.h|elphel393/usr/include-uapi/linux/omap3isp.h|elphel393/usr/include-uapi/linux/omapfb.h|elphel393/usr/include-uapi/linux/oom.h|elphel393/usr/include-uapi/linux/openvswitch.h|elphel393/usr/include-uapi/linux/packet_diag.h|elphel393/usr/include-uapi/linux/param.h|elphel393/usr/include-uapi/linux/parport.h|elphel393/usr/include-uapi/linux/patchkey.h|elphel393/usr/include-uapi/linux/pci.h|elphel393/usr/include-uapi/linux/pci_regs.h|elphel393/usr/include-uapi/linux/perf_event.h|elphel393/usr/include-uapi/linux/personality.h|elphel393/usr/include-uapi/linux/pfkeyv2.h|elphel393/usr/include-uapi/linux/pg.h|elphel393/usr/include-uapi/linux/phantom.h|elphel393/usr/include-uapi/linux/phonet.h|elphel393/usr/include-uapi/linux/pkt_cls.h|elphel393/usr/include-uapi/linux/pkt_sched.h|elphel393/usr/include-uapi/linux/pktcdvd.h|elphel393/usr/include-uapi/linux/pmu.h|elphel393/usr/include-uapi/linux/poll.h|elphel393/usr/include-uapi/linux/ppdev.h|elphel393/usr/include-uapi/linux/ppp-comp.h|elphel393/usr/include-uapi/linux/ppp-ioctl.h|elphel393/usr/include-uapi/linux/ppp_defs.h|elphel393/usr/include-uapi/linux/pps.h|elphel393/usr/include-uapi/linux/prctl.h|elphel393/usr/include-uapi/linux/psci.h|elphel393/usr/include-uapi/linux/ptp_clock.h|elphel393/usr/include-uapi/linux/ptrace.h|elphel393/usr/include-uapi/linux/qnx4_fs.h|elphel393/usr/include-uapi/linux/qnxtypes.h|elphel393/usr/include-uapi/linux/quota.h|elphel393/usr/include-uapi/linux/radeonfb.h|elphel393/usr/include-uapi/linux/raid/|elphel393/usr/include-uapi/linux/random.h|elphel393/usr/include-uapi/linux/raw.h|elphel393/usr/include-uapi/linux/rds.h|elphel393/usr/include-uapi/linux/reboot.h|elphel393/usr/include-uapi/linux/reiserfs_fs.h|elphel393/usr/include-uapi/linux/reiserfs_xattr.h|elphel393/usr/include-uapi/linux/resource.h|elphel393/usr/include-uapi/linux/rfkill.h|elphel393/usr/include-uapi/linux/romfs_fs.h|elphel393/usr/include-uapi/linux/rose.h|elphel393/usr/include-uapi/linux/route.h|elphel393/usr/include-uapi/linux/rtc.h|elphel393/usr/include-uapi/linux/rtnetlink.h|elphel393/usr/include-uapi/linux/scc.h|elphel393/usr/include-uapi/linux/sched.h|elphel393/usr/include-uapi/linux/screen_info.h|elphel393/usr/include-uapi/linux/sctp.h|elphel393/usr/include-uapi/linux/sdla.h|elphel393/usr/include-uapi/linux/seccomp.h|elphel393/usr/include-uapi/linux/securebits.h|elphel393/usr/include-uapi/linux/selinux_netlink.h|elphel393/usr/include-uapi/linux/sem.h|elphel393/usr/include-uapi/linux/serial.h|elphel393/usr/include-uapi/linux/serial_core.h|elphel393/usr/include-uapi/linux/serial_reg.h|elphel393/usr/include-uapi/linux/serio.h|elphel393/usr/include-uapi/linux/shm.h|elphel393/usr/include-uapi/linux/signal.h|elphel393/usr/include-uapi/linux/signalfd.h|elphel393/usr/include-uapi/linux/smiapp.h|elphel393/usr/include-uapi/linux/snmp.h|elphel393/usr/include-uapi/linux/sock_diag.h|elphel393/usr/include-uapi/linux/socket.h|elphel393/usr/include-uapi/linux/sockios.h|elphel393/usr/include-uapi/linux/sonet.h|elphel393/usr/include-uapi/linux/sonypi.h|elphel393/usr/include-uapi/linux/sound.h|elphel393/usr/include-uapi/linux/soundcard.h|elphel393/usr/include-uapi/linux/spi/|elphel393/usr/include-uapi/linux/stat.h|elphel393/usr/include-uapi/linux/string.h|elphel393/usr/include-uapi/linux/sunrpc/|elphel393/usr/include-uapi/linux/suspend_ioctls.h|elphel393/usr/include-uapi/linux/synclink.h|elphel393/usr/include-uapi/linux/sysctl.h|elphel393/usr/include-uapi/linux/sysinfo.h|elphel393/usr/include-uapi/linux/target_core_user.h|elphel393/usr/include-uapi/linux/taskstats.h|elphel393/usr/include-uapi/linux/tc_act/|elphel393/usr/include-uapi/linux/tc_ematch/|elphel393/usr/include-uapi/linux/tcp.h|elphel393/usr/include-uapi/linux/tcp_metrics.h|elphel393/usr/include-uapi/linux/telephony.h|elphel393/usr/include-uapi/linux/termios.h|elphel393/usr/include-uapi/linux/thermal.h|elphel393/usr/include-uapi/linux/time.h|elphel393/usr/include-uapi/linux/times.h|elphel393/usr/include-uapi/linux/timex.h|elphel393/usr/include-uapi/linux/tiocl.h|elphel393/usr/include-uapi/linux/tipc.h|elphel393/usr/include-uapi/linux/tipc_config.h|elphel393/usr/include-uapi/linux/tipc_netlink.h|elphel393/usr/include-uapi/linux/toshiba.h|elphel393/usr/include-uapi/linux/tty.h|elphel393/usr/include-uapi/linux/tty_flags.h|elphel393/usr/include-uapi/linux/udf_fs_i.h|elphel393/usr/include-uapi/linux/udp.h|elphel393/usr/include-uapi/linux/uhid.h|elphel393/usr/include-uapi/linux/uinput.h|elphel393/usr/include-uapi/linux/uio.h|elphel393/usr/include-uapi/linux/ultrasound.h|elphel393/usr/include-uapi/linux/un.h|elphel393/usr/include-uapi/linux/unistd.h|elphel393/usr/include-uapi/linux/unix_diag.h|elphel393/usr/include-uapi/linux/usb/|elphel393/usr/include-uapi/linux/usbdevice_fs.h|elphel393/usr/include-uapi/linux/usbip.h|elphel393/usr/include-uapi/linux/utime.h|elphel393/usr/include-uapi/linux/utsname.h|elphel393/usr/include-uapi/linux/uuid.h|elphel393/usr/include-uapi/linux/uvcvideo.h|elphel393/usr/include-uapi/linux/v4l2-common.h|elphel393/usr/include-uapi/linux/v4l2-controls.h|elphel393/usr/include-uapi/linux/v4l2-dv-timings.h|elphel393/usr/include-uapi/linux/v4l2-mediabus.h|elphel393/usr/include-uapi/linux/v4l2-subdev.h|elphel393/usr/include-uapi/linux/version.h|elphel393/usr/include-uapi/linux/veth.h|elphel393/usr/include-uapi/linux/vfio.h|elphel393/usr/include-uapi/linux/vhost.h|elphel393/usr/include-uapi/linux/videodev2.h|elphel393/usr/include-uapi/linux/virtio_9p.h|elphel393/usr/include-uapi/linux/virtio_balloon.h|elphel393/usr/include-uapi/linux/virtio_blk.h|elphel393/usr/include-uapi/linux/virtio_config.h|elphel393/usr/include-uapi/linux/virtio_console.h|elphel393/usr/include-uapi/linux/virtio_ids.h|elphel393/usr/include-uapi/linux/virtio_net.h|elphel393/usr/include-uapi/linux/virtio_pci.h|elphel393/usr/include-uapi/linux/virtio_ring.h|elphel393/usr/include-uapi/linux/virtio_rng.h|elphel393/usr/include-uapi/linux/virtio_scsi.h|elphel393/usr/include-uapi/linux/virtio_types.h|elphel393/usr/include-uapi/linux/vm_sockets.h|elphel393/usr/include-uapi/linux/vt.h|elphel393/usr/include-uapi/linux/wait.h|elphel393/usr/include-uapi/linux/wanrouter.h|elphel393/usr/include-uapi/linux/watchdog.h|elphel393/usr/include-uapi/linux/wimax.h|elphel393/usr/include-uapi/linux/wimax/|elphel393/usr/include-uapi/linux/wireless.h|elphel393/usr/include-uapi/linux/x25.h|elphel393/usr/include-uapi/linux/xattr.h|elphel393/usr/include-uapi/linux/xfrm.h|elphel393/usr/include-uapi/linux/xilinx-hls.h|elphel393/usr/include-uapi/linux/xilinx-v4l2-controls.h|elphel393/usr/include-uapi/linux/zorro.h|elphel393/usr/include-uapi/linux/zorro_ids.h|elphel393/usr/include-uapi/misc/|elphel393/usr/include-uapi/mtd/|elphel393/usr/include-uapi/rdma/|elphel393/usr/include-uapi/scsi/|elphel393/usr/include-uapi/sound/|elphel393/usr/include-uapi/video/|elphel393/usr/include-uapi/xen/|elphel393/usr/include/FlexLexer.h|elphel393/usr/include/X11/|elphel393/usr/include/a.out.h|elphel393/usr/include/acl/|elphel393/usr/include/aio.h|elphel393/usr/include/aliases.h|elphel393/usr/include/apache2/|elphel393/usr/include/apr.h|elphel393/usr/include/apr_allocator.h|elphel393/usr/include/apr_anylock.h|elphel393/usr/include/apr_atomic.h|elphel393/usr/include/apr_base64.h|elphel393/usr/include/apr_buckets.h|elphel393/usr/include/apr_crypto.h|elphel393/usr/include/apr_date.h|elphel393/usr/include/apr_dbd.h|elphel393/usr/include/apr_dbm.h|elphel393/usr/include/apr_dso.h|elphel393/usr/include/apr_env.h|elphel393/usr/include/apr_errno.h|elphel393/usr/include/apr_escape.h|elphel393/usr/include/apr_file_info.h|elphel393/usr/include/apr_file_io.h|elphel393/usr/include/apr_fnmatch.h|elphel393/usr/include/apr_general.h|elphel393/usr/include/apr_getopt.h|elphel393/usr/include/apr_global_mutex.h|elphel393/usr/include/apr_hash.h|elphel393/usr/include/apr_hooks.h|elphel393/usr/include/apr_inherit.h|elphel393/usr/include/apr_ldap.h|elphel393/usr/include/apr_ldap_init.h|elphel393/usr/include/apr_ldap_option.h|elphel393/usr/include/apr_ldap_rebind.h|elphel393/usr/include/apr_ldap_url.h|elphel393/usr/include/apr_lib.h|elphel393/usr/include/apr_md4.h|elphel393/usr/include/apr_md5.h|elphel393/usr/include/apr_memcache.h|elphel393/usr/include/apr_mmap.h|elphel393/usr/include/apr_network_io.h|elphel393/usr/include/apr_optional.h|elphel393/usr/include/apr_optional_hooks.h|elphel393/usr/include/apr_poll.h|elphel393/usr/include/apr_pools.h|elphel393/usr/include/apr_portable.h|elphel393/usr/include/apr_proc_mutex.h|elphel393/usr/include/apr_queue.h|elphel393/usr/include/apr_random.h|elphel393/usr/include/apr_reslist.h|elphel393/usr/include/apr_ring.h|elphel393/usr/include/apr_rmm.h|elphel393/usr/include/apr_sdbm.h|elphel393/usr/include/apr_sha1.h|elphel393/usr/include/apr_shm.h|elphel393/usr/include/apr_signal.h|elphel393/usr/include/apr_skiplist.h|elphel393/usr/include/apr_strings.h|elphel393/usr/include/apr_strmatch.h|elphel393/usr/include/apr_support.h|elphel393/usr/include/apr_tables.h|elphel393/usr/include/apr_thread_cond.h|elphel393/usr/include/apr_thread_mutex.h|elphel393/usr/include/apr_thread_pool.h|elphel393/usr/include/apr_thread_proc.h|elphel393/usr/include/apr_thread_rwlock.h|elphel393/usr/include/apr_time.h|elphel393/usr/include/apr_uri.h|elphel393/usr/include/apr_user.h|elphel393/usr/include/apr_uuid.h|elphel393/usr/include/apr_version.h|elphel393/usr/include/apr_want.h|elphel393/usr/include/apr_xlate.h|elphel393/usr/include/apr_xml.h|elphel393/usr/include/apu.h|elphel393/usr/include/apu_errno.h|elphel393/usr/include/apu_version.h|elphel393/usr/include/apu_want.h|elphel393/usr/include/ar.h|elphel393/usr/include/argp.h|elphel393/usr/include/argz.h|elphel393/usr/include/arpa/|elphel393/usr/include/asm-generic/|elphel393/usr/include/asm/|elphel393/usr/include/assert.h|elphel393/usr/include/attr/|elphel393/usr/include/bind9/|elphel393/usr/include/bits/a.out.h|elphel393/usr/include/bits/cmathcalls.h|elphel393/usr/include/bits/dirent.h|elphel393/usr/include/bits/dlfcn.h|elphel393/usr/include/bits/elfclass.h|elphel393/usr/include/bits/epoll.h|elphel393/usr/include/bits/error.h|elphel393/usr/include/bits/eventfd.h|elphel393/usr/include/bits/fcntl2.h|elphel393/usr/include/bits/fenv.h|elphel393/usr/include/bits/fenvinline.h|elphel393/usr/include/bits/huge_val.h|elphel393/usr/include/bits/huge_valf.h|elphel393/usr/include/bits/huge_vall.h|elphel393/usr/include/bits/hwcap.h|elphel393/usr/include/bits/inf.h|elphel393/usr/include/bits/initspin.h|elphel393/usr/include/bits/inotify.h|elphel393/usr/include/bits/ipc.h|elphel393/usr/include/bits/ipctypes.h|elphel393/usr/include/bits/libc-lock.h|elphel393/usr/include/bits/libio-ldbl.h|elphel393/usr/include/bits/libm-simd-decl-stubs.h|elphel393/usr/include/bits/link.h|elphel393/usr/include/bits/local_lim.h|elphel393/usr/include/bits/locale.h|elphel393/usr/include/bits/math-finite.h|elphel393/usr/include/bits/math-vector.h|elphel393/usr/include/bits/mathcalls.h|elphel393/usr/include/bits/mathdef.h|elphel393/usr/include/bits/mathinline.h|elphel393/usr/include/bits/monetary-ldbl.h|elphel393/usr/include/bits/mqueue.h|elphel393/usr/include/bits/mqueue2.h|elphel393/usr/include/bits/msq.h|elphel393/usr/include/bits/nan.h|elphel393/usr/include/bits/netdb.h|elphel393/usr/include/bits/param.h|elphel393/usr/include/bits/poll.h|elphel393/usr/include/bits/poll2.h|elphel393/usr/include/bits/posix1_lim.h|elphel393/usr/include/bits/posix2_lim.h|elphel393/usr/include/bits/printf-ldbl.h|elphel393/usr/include/bits/resource.h|elphel393/usr/include/bits/sched.h|elphel393/usr/include/bits/select2.h|elphel393/usr/include/bits/sem.h|elphel393/usr/include/bits/semaphore.h|elphel393/usr/include/bits/setjmp.h|elphel393/usr/include/bits/setjmp2.h|elphel393/usr/include/bits/shm.h|elphel393/usr/include/bits/signalfd.h|elphel393/usr/include/bits/socket2.h|elphel393/usr/include/bits/statfs.h|elphel393/usr/include/bits/statvfs.h|elphel393/usr/include/bits/stdio-ldbl.h|elphel393/usr/include/bits/stdio-lock.h|elphel393/usr/include/bits/stdio2.h|elphel393/usr/include/bits/stdlib-ldbl.h|elphel393/usr/include/bits/stdlib.h|elphel393/usr/include/bits/string3.h|elphel393/usr/include/bits/stropts.h|elphel393/usr/include/bits/syscall.h|elphel393/usr/include/bits/sysctl.h|elphel393/usr/include/bits/syslog-ldbl.h|elphel393/usr/include/bits/syslog.h|elphel393/usr/include/bits/termios.h|elphel393/usr/include/bits/timerfd.h|elphel393/usr/include/bits/timex.h|elphel393/usr/include/bits/unistd.h|elphel393/usr/include/bits/ustat.h|elphel393/usr/include/bits/utmp.h|elphel393/usr/include/bits/utmpx.h|elphel393/usr/include/bits/utsname.h|elphel393/usr/include/bits/wchar-ldbl.h|elphel393/usr/include/bits/wchar2.h|elphel393/usr/include/bits/xopen_lim.h|elphel393/usr/include/bits/xtitypes.h|elphel393/usr/include/blkid/|elphel393/usr/include/byteswap.h|elphel393/usr/include/bzlib.h|elphel393/usr/include/c++/|elphel393/usr/include/c-client/|elphel393/usr/include/com_err.h|elphel393/usr/include/complex.h|elphel393/usr/include/cpio.h|elphel393/usr/include/crypt.h|elphel393/usr/include/crypto/|elphel393/usr/include/ctype.h|elphel393/usr/include/curses.h|elphel393/usr/include/cursesapp.h|elphel393/usr/include/cursesf.h|elphel393/usr/include/cursesm.h|elphel393/usr/include/cursesp.h|elphel393/usr/include/cursesw.h|elphel393/usr/include/cursslk.h|elphel393/usr/include/db.h|elphel393/usr/include/db60/|elphel393/usr/include/db_cxx.h|elphel393/usr/include/dbm.h|elphel393/usr/include/dbus-1.0/|elphel393/usr/include/dhcpctl/|elphel393/usr/include/dirent.h|elphel393/usr/include/dlfcn.h|elphel393/usr/include/dns/|elphel393/usr/include/drm/|elphel393/usr/include/dst/|elphel393/usr/include/e2p/|elphel393/usr/include/elf.h|elphel393/usr/include/envz.h|elphel393/usr/include/err.h|elphel393/usr/include/error.h|elphel393/usr/include/et/|elphel393/usr/include/eti.h|elphel393/usr/include/etip.h|elphel393/usr/include/evdns.h|elphel393/usr/include/event.h|elphel393/usr/include/event2/|elphel393/usr/include/evhttp.h|elphel393/usr/include/evrpc.h|elphel393/usr/include/evutil.h|elphel393/usr/include/execinfo.h|elphel393/usr/include/expat.h|elphel393/usr/include/expat_external.h|elphel393/usr/include/ext2fs/|elphel393/usr/include/fenv.h|elphel393/usr/include/fmtmsg.h|elphel393/usr/include/fnmatch.h|elphel393/usr/include/form.h|elphel393/usr/include/fpu_control.h|elphel393/usr/include/fstab.h|elphel393/usr/include/fts.h|elphel393/usr/include/ftw.h|elphel393/usr/include/gawkapi.h|elphel393/usr/include/gconv.h|elphel393/usr/include/gcrypt.h|elphel393/usr/include/gdbm.h|elphel393/usr/include/gdbm/|elphel393/usr/include/gettext-po.h|elphel393/usr/include/gio-unix-2.0/|elphel393/usr/include/glib-2.0/|elphel393/usr/include/glob.h|elphel393/usr/include/gmp.h|elphel393/usr/include/gmpxx.h|elphel393/usr/include/gnu-versions.h|elphel393/usr/include/gnu/lib-names-soft.h|elphel393/usr/include/gnu/lib-names.h|elphel393/usr/include/gnu/libc-version.h|elphel393/usr/include/gnu/option-groups.h|elphel393/usr/include/gnumake.h|elphel393/usr/include/gnutls/|elphel393/usr/include/gpg-error.h|elphel393/usr/include/grp.h|elphel393/usr/include/gshadow.h|elphel393/usr/include/gstreamer-1.0/|elphel393/usr/include/gudev-1.0/|elphel393/usr/include/iconv.h|elphel393/usr/include/idn-free.h|elphel393/usr/include/idn-int.h|elphel393/usr/include/idna.h|elphel393/usr/include/ieee754.h|elphel393/usr/include/ifaddrs.h|elphel393/usr/include/initreq.h|elphel393/usr/include/inttypes.h|elphel393/usr/include/irs/|elphel393/usr/include/isc-dhcp/|elphel393/usr/include/isc/|elphel393/usr/include/isccc/|elphel393/usr/include/isccfg/|elphel393/usr/include/langinfo.h|elphel393/usr/include/lastlog.h|elphel393/usr/include/libaio.h|elphel393/usr/include/libfdisk/|elphel393/usr/include/libgen.h|elphel393/usr/include/libintl.h|elphel393/usr/include/libkmod.h|elphel393/usr/include/libltdl/|elphel393/usr/include/libmount/|elphel393/usr/include/libnl3/|elphel393/usr/include/libpng16/|elphel393/usr/include/libsmartcols/|elphel393/usr/include/libudev.h|elphel393/usr/include/libusb-1.0/|elphel393/usr/include/libxml2/|elphel393/usr/include/limits.h|elphel393/usr/include/link.h|elphel393/usr/include/linux/|elphel393/usr/include/locale.h|elphel393/usr/include/ltdl.h|elphel393/usr/include/lwres/|elphel393/usr/include/lzo/|elphel393/usr/include/malloc.h|elphel393/usr/include/math.h|elphel393/usr/include/mcheck.h|elphel393/usr/include/mcrypt.h|elphel393/usr/include/memory.h|elphel393/usr/include/menu.h|elphel393/usr/include/misc/|elphel393/usr/include/mntent.h|elphel393/usr/include/monetary.h|elphel393/usr/include/mpc.h|elphel393/usr/include/mpf2mpfr.h|elphel393/usr/include/mpfr.h|elphel393/usr/include/mqueue.h|elphel393/usr/include/mtd/|elphel393/usr/include/mutils/|elphel393/usr/include/mysql/|elphel393/usr/include/nc_tparm.h|elphel393/usr/include/ncurses.h|elphel393/usr/include/ncurses_dll.h|elphel393/usr/include/ndbm.h|elphel393/usr/include/net/|elphel393/usr/include/netash/|elphel393/usr/include/netatalk/|elphel393/usr/include/netax25/|elphel393/usr/include/netdb.h|elphel393/usr/include/neteconet/|elphel393/usr/include/netinet/ether.h|elphel393/usr/include/netinet/icmp6.h|elphel393/usr/include/netinet/if_ether.h|elphel393/usr/include/netinet/if_fddi.h|elphel393/usr/include/netinet/if_tr.h|elphel393/usr/include/netinet/igmp.h|elphel393/usr/include/netinet/in_systm.h|elphel393/usr/include/netinet/ip.h|elphel393/usr/include/netinet/ip6.h|elphel393/usr/include/netinet/ip_icmp.h|elphel393/usr/include/netinet/tcp.h|elphel393/usr/include/netinet/udp.h|elphel393/usr/include/netipx/|elphel393/usr/include/netiucv/|elphel393/usr/include/netpacket/|elphel393/usr/include/netrom/|elphel393/usr/include/netrose/|elphel393/usr/include/nettle/|elphel393/usr/include/nfs/|elphel393/usr/include/nl_types.h|elphel393/usr/include/nss.h|elphel393/usr/include/obstack.h|elphel393/usr/include/ogg/|elphel393/usr/include/omapip/|elphel393/usr/include/openssl/|elphel393/usr/include/panel.h|elphel393/usr/include/paths.h|elphel393/usr/include/pci/|elphel393/usr/include/pcre.h|elphel393/usr/include/pcre_scanner.h|elphel393/usr/include/pcre_stringpiece.h|elphel393/usr/include/pcrecpp.h|elphel393/usr/include/pcrecpparg.h|elphel393/usr/include/pcreposix.h|elphel393/usr/include/php/|elphel393/usr/include/pk11/|elphel393/usr/include/pkcs11/|elphel393/usr/include/png.h|elphel393/usr/include/pngconf.h|elphel393/usr/include/pnglibconf.h|elphel393/usr/include/poll.h|elphel393/usr/include/popt.h|elphel393/usr/include/pr29.h|elphel393/usr/include/printf.h|elphel393/usr/include/proc/|elphel393/usr/include/protocols/|elphel393/usr/include/pthread.h|elphel393/usr/include/pty.h|elphel393/usr/include/punycode.h|elphel393/usr/include/pwd.h|elphel393/usr/include/pygtk-2.0/|elphel393/usr/include/python2.7/|elphel393/usr/include/rdma/|elphel393/usr/include/re_comp.h|elphel393/usr/include/readline/|elphel393/usr/include/regex.h|elphel393/usr/include/regexp.h|elphel393/usr/include/resolv.h|elphel393/usr/include/rpc/|elphel393/usr/include/rpcsvc/|elphel393/usr/include/sched.h|elphel393/usr/include/scsi/|elphel393/usr/include/search.h|elphel393/usr/include/semaphore.h|elphel393/usr/include/setjmp.h|elphel393/usr/include/sgtty.h|elphel393/usr/include/shadow.h|elphel393/usr/include/sound/|elphel393/usr/include/spawn.h|elphel393/usr/include/sqlite3.h|elphel393/usr/include/sqlite3ext.h|elphel393/usr/include/ss/|elphel393/usr/include/stab.h|elphel393/usr/include/stdio_ext.h|elphel393/usr/include/stringprep.h|elphel393/usr/include/strings.h|elphel393/usr/include/stropts.h|elphel393/usr/include/sudo_plugin.h|elphel393/usr/include/sys/acct.h|elphel393/usr/include/sys/acl.h|elphel393/usr/include/sys/auxv.h|elphel393/usr/include/sys/bitypes.h|elphel393/usr/include/sys/capability.h|elphel393/usr/include/sys/dir.h|elphel393/usr/include/sys/elf.h|elphel393/usr/include/sys/epoll.h|elphel393/usr/include/sys/errno.h|elphel393/usr/include/sys/eventfd.h|elphel393/usr/include/sys/fanotify.h|elphel393/usr/include/sys/fcntl.h|elphel393/usr/include/sys/file.h|elphel393/usr/include/sys/fsuid.h|elphel393/usr/include/sys/gmon.h|elphel393/usr/include/sys/gmon_out.h|elphel393/usr/include/sys/inotify.h|elphel393/usr/include/sys/io.h|elphel393/usr/include/sys/ipc.h|elphel393/usr/include/sys/kd.h|elphel393/usr/include/sys/kdaemon.h|elphel393/usr/include/sys/klog.h|elphel393/usr/include/sys/mount.h|elphel393/usr/include/sys/msg.h|elphel393/usr/include/sys/mtio.h|elphel393/usr/include/sys/param.h|elphel393/usr/include/sys/pci.h|elphel393/usr/include/sys/personality.h|elphel393/usr/include/sys/poll.h|elphel393/usr/include/sys/prctl.h|elphel393/usr/include/sys/procfs.h|elphel393/usr/include/sys/profil.h|elphel393/usr/include/sys/ptrace.h|elphel393/usr/include/sys/queue.h|elphel393/usr/include/sys/quota.h|elphel393/usr/include/sys/raw.h|elphel393/usr/include/sys/reboot.h|elphel393/usr/include/sys/resource.h|elphel393/usr/include/sys/sem.h|elphel393/usr/include/sys/sendfile.h|elphel393/usr/include/sys/shm.h|elphel393/usr/include/sys/signal.h|elphel393/usr/include/sys/signalfd.h|elphel393/usr/include/sys/socketvar.h|elphel393/usr/include/sys/soundcard.h|elphel393/usr/include/sys/statfs.h|elphel393/usr/include/sys/statvfs.h|elphel393/usr/include/sys/stropts.h|elphel393/usr/include/sys/swap.h|elphel393/usr/include/sys/syscall.h|elphel393/usr/include/sys/sysctl.h|elphel393/usr/include/sys/sysinfo.h|elphel393/usr/include/sys/termios.h|elphel393/usr/include/sys/time.h|elphel393/usr/include/sys/timeb.h|elphel393/usr/include/sys/timepps.h|elphel393/usr/include/sys/timerfd.h|elphel393/usr/include/sys/times.h|elphel393/usr/include/sys/timex.h|elphel393/usr/include/sys/ttychars.h|elphel393/usr/include/sys/ultrasound.h|elphel393/usr/include/sys/un.h|elphel393/usr/include/sys/unistd.h|elphel393/usr/include/sys/user.h|elphel393/usr/include/sys/ustat.h|elphel393/usr/include/sys/utsname.h|elphel393/usr/include/sys/vfs.h|elphel393/usr/include/sys/vlimit.h|elphel393/usr/include/sys/vt.h|elphel393/usr/include/sys/vtimes.h|elphel393/usr/include/sys/wait.h|elphel393/usr/include/sys/xattr.h|elphel393/usr/include/syscall.h|elphel393/usr/include/sysexits.h|elphel393/usr/include/tar.h|elphel393/usr/include/term.h|elphel393/usr/include/term_entry.h|elphel393/usr/include/termcap.h|elphel393/usr/include/termio.h|elphel393/usr/include/termios.h|elphel393/usr/include/tgmath.h|elphel393/usr/include/thread_db.h|elphel393/usr/include/tic.h|elphel393/usr/include/tld.h|elphel393/usr/include/ttyent.h|elphel393/usr/include/uchar.h|elphel393/usr/include/ucontext.h|elphel393/usr/include/ulimit.h|elphel393/usr/include/unctrl.h|elphel393/usr/include/usb.h|elphel393/usr/include/ustat.h|elphel393/usr/include/utime.h|elphel393/usr/include/utmp.h|elphel393/usr/include/utmpx.h|elphel393/usr/include/uuid/|elphel393/usr/include/values.h|elphel393/usr/include/video/|elphel393/usr/include/wait.h|elphel393/usr/include/wctype.h|elphel393/usr/include/wordexp.h|elphel393/usr/include/xcb/|elphel393/usr/include/xen/|elphel393/usr/include/zconf.h|elphel393/usr/include/zlib.h|elphel393/usr/lib/|elphel393/usr/share/|x86_64-linux/usr/bin/|x86_64-linux/usr/include/|x86_64-linux/usr/lib/arm-poky-linux-gnueabi.gcc-cross-initial-arm/|x86_64-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include-fixed/|x86_64-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include/arm_acle.h|x86_64-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include/arm_neon.h|x86_64-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include/float.h|x86_64-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include/iso646.h|x86_64-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include/mmintrin.h|x86_64-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include/quadmath.h|x86_64-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include/quadmath_weak.h|x86_64-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include/stdalign.h|x86_64-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include/stdatomic.h|x86_64-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include/stdbool.h|x86_64-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include/stdfix.h|x86_64-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include/stdint-gcc.h|x86_64-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include/stdnoreturn.h|x86_64-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include/unwind-arm-common.h|x86_64-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include/unwind.h|x86_64-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include/varargs.h|x86_64-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/install-tools/|x86_64-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/plugin/|x86_64-linux/usr/lib/dbus-1.0/|x86_64-linux/usr/lib/glib-2.0/|x86_64-linux/usr/lib/libffi-3.2.1/|x86_64-linux/usr/lib/perl-native/|x86_64-linux/usr/lib/python2.7/|x86_64-linux/usr/share/" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="sysroots"/>
</sourceEntries>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="elphel-apps-autoexposure.null.606306673" name="elphel-apps-autoexposure"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<scannerConfigBuildInfo instanceId="0.620646593">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration configurationName="Default">
<resource resourceType="PROJECT" workspacePath="/elphel-apps-autoexposure"/>
</configuration>
</storageModule>
</cproject>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.ui.externaltools.ProgramBuilderLaunchConfigurationType">
<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/elphel-apps-autoexposure/run_bitbake.sh}"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="apps-autoexposure -c target_scp -f"/>
<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
</launchConfiguration>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>elphel-apps-autoexposure</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
<dictionary>
<key>LaunchConfigHandle</key>
<value>&lt;project&gt;/.externalToolBuilders/SCP apps-autoexposure to target.launch</value>
</dictionary>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
<nature>org.python.pydev.pythonNature</nature>
</natures>
</projectDescription>
AXIS_USABLE_LIBS = UCLIBC GLIBC
AXIS_AUTO_DEPEND = yes
include $(AXIS_TOP_DIR)/tools/build/Rules.axis
#include ".depend"
INSTDIR = $(prefix)/usr/local/sbin/
CONFDIR = $(prefix)/etc/
INSTMODE = 0755
INSTOTHER = 0644
INSTOWNER = root
INSTGROUP = root
INCDIR = $(prefix)/include
PROGS = autoexposure temperature
SRCS = autoexposure.c globalsinit.c aexp_utils.c aexp_corr.c white_balance.c hdr_control.c temperature.c
OBJS = autoexposure.o globalsinit.o aexp_utils.o aexp_corr.o white_balance.o hdr_control.o temperature.o
CFLAGS += -Wall -I$(INCDIR) -I$(AXIS_KERNEL_DIR)/include
#CFLAGS += -Wall -I$(INCDIR) -I$(AXIS_KERNEL_DIR)/include -save-temps -dA -dP
CFLAGS += -Wall -I$(STAGING_DIR_HOST)/usr/include-uapi
INSTALL = install
INSTMODE = 0755
#INSTDOCS = 0644
OWN = -o root -g root
BINDIR = /usr/bin
all: $(PROGS)
autoexposure: autoexposure.o globalsinit.o aexp_utils.o aexp_corr.o white_balance.o hdr_control.o
$(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@
cris-strip -s $@
temperature: temperature.o
$(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@
cris-strip -s $@
install: $(PROGS)
$(INSTALL) -d $(INSTDIR)
$(INSTALL) -m $(INSTMODE) -o $(INSTOWNER) -g $(INSTGROUP) $(PROGS) $(INSTDIR)
$(INSTALL) $(OWN) -d $(DESTDIR)$(BINDIR)
$(INSTALL) -m $(INSTMODE) $(OWN) $(PROGS) $(DESTDIR)$(BINDIR)
clean:
rm -rf $(PROGS) *.o core
configsubs:
# INSTALL=${ELPHEL393_INSTALL}
# MKNOD=${ELPHEL393_MKNOD}
# DESTDIR=${D}
# ELPHEL_KERNEL_DIR=${STAGING_KERNEL_DIR}
# STAGING_KERNEL_DIR=${STAGING_KERNEL_DIR}
# STAGING_DIR_HOST=${STAGING_DIR_HOST}
# USERADD='${ELPHEL393_USERADD}'
# REMOTE_USER=${REMOTE_USER}
# REMOTE_IP=${REMOTE_IP}
......@@ -58,7 +58,7 @@
#include "autoexposure.h"
void initAexpCorr(void) {
GLOBALPARS(G_NEXT_AE_FRAME)=0; ///NOTE - autoexposure was stuck for a hours when I tried resetting frame number...
GLOBALPARS_SNGL(G_NEXT_AE_FRAME)=0; ///NOTE - autoexposure was stuck for a hours when I tried resetting frame number...
}
/**
* @brief Single autoexposure correction step
......@@ -102,27 +102,27 @@ int aexpCorr(int color, int frame, int target_frame) {
int ae_dont_sync=(framePars[target_frame8].pars[P_AE_PERIOD] & 0x10000); /// don't try to synchronize to availble histograms
int i;
int aerr=0; // just to keep compiler happy
int * ae_err= (int *) &(GLOBALPARS(G_AE_INTEGERR)); /// so it will be signed
int * ae_err= (int *) &(GLOBALPARS_SNGL(G_AE_INTEGERR)); /// so it will be signed
if (!ae_period_change) ae_period_change=DEFAULT_AE_PERIOD_CHANGE;
if (!ae_period_nochange) ae_period_nochange=DEFAULT_AE_PERIOD_NOCHANGE;
// unsigned long overexp_scale;
if (!framePars[target_frame & PARS_FRAMES_MASK].pars[P_AUTOEXP_ON]) {
GLOBALPARS(G_NEXT_AE_FRAME)=frame+ae_period_change;
GLOBALPARS_SNGL(G_NEXT_AE_FRAME)=frame+ae_period_change;
return 0; /// autoexposure is turned off
}
if (GLOBALPARS(G_NEXT_AE_FRAME)>frame) return 0; /// too early to bother
if (GLOBALPARS_SNGL(G_NEXT_AE_FRAME)>frame) return 0; /// too early to bother
MDF3(fprintf(stderr,"*ae_err=%d\n",*ae_err)); ///======= 0 here
frac=framePars[target_frame & PARS_FRAMES_MASK].pars[P_AEXP_FRACPIX];
// level=framePars[target_frame & PARS_FRAMES_MASK].pars[P_AEXP_LEVEL];
/// get (approximate if not updated) percentile for dim (1 scanline exposure) image -to use as a zero point exposure
dim=(GLOBALPARS((color>1)?G_HIST_DIM_23:G_HIST_DIM_01) >> ((color & 1)? 16 : 0)) & 0xffff;
dim=(GLOBALPARS_SNGL((color>1)?G_HIST_DIM_23:G_HIST_DIM_01) >> ((color & 1)? 16 : 0)) & 0xffff;
/// measure
perc=getPercentile(frame-1,color, frac, 1 << color); ///sets global hist_index, gamma_index
// MDF2(fprintf(stderr,"got histogram for frame: 0x%lx, NOW: 0x%lx\n",histogram_cache[hist_index].frame, GLOBALPARS(G_THIS_FRAME)));
// MDF2(fprintf(stderr,"got histogram for frame: 0x%lx, NOW: 0x%lx\n",histogram_cache[hist_index].frame, GLOBALPARS_SNGL(G_THIS_FRAME)));
if (histogram_cache[hist_index].frame < (frame-1)) { /// histogram is too old - try again
GLOBALPARS(G_NEXT_AE_FRAME)=frame+1;
GLOBALPARS_SNGL(G_NEXT_AE_FRAME)=frame+1;
if (ae_dont_sync) return 0; /// will request histogram for this frame
/// repeat up to 8 times trying to get a fresh histogram
for (i=0; i<8; i++) {
......@@ -134,7 +134,7 @@ int aexpCorr(int color, int frame, int target_frame) {
if (histogram_cache[hist_index].frame == (frame-1)) break;
}
if (histogram_cache[hist_index].frame < (frame-1)) { /// histogram is too old - try again
GLOBALPARS(G_NEXT_AE_FRAME)=frame+1;
GLOBALPARS_SNGL(G_NEXT_AE_FRAME)=frame+1;
return 0; /// will request histogram for this frame
}
}
......@@ -143,7 +143,7 @@ int aexpCorr(int color, int frame, int target_frame) {
level=gammaReverse (level_gamma);
MDF3(fprintf(stderr,"->>> frame=0x%x, target_frame=0x%x,dim=0x%04x, frac=0x%04x, level=0x%x,level_gamma=0x%x, perc=0x%04x\n",frame,target_frame,dim,frac,level,level_gamma,perc));
if (perc <0) {
GLOBALPARS(G_NEXT_AE_FRAME)=frame+ae_period_change;
GLOBALPARS_SNGL(G_NEXT_AE_FRAME)=frame+ae_period_change;
return -1; ///getPercentile() failed
}
///
......@@ -212,7 +212,7 @@ int aexpCorr(int color, int frame, int target_frame) {
MDF3(fprintf(stderr,"old_vexpos=0x%x, new_vexpos=0x%x, aerr=%d, ae_err=%d\n", old_vexpos, new_vexpos, aerr, *ae_err));
if (new_vexpos==old_vexpos) {
MDF3(fprintf(stderr,"No correction: thrshold=%d, aerr=%d\n",error_thresh,aerr)); ///======= 1 here
GLOBALPARS(G_NEXT_AE_FRAME)=frame+ae_period_nochange; /// try again next frame (extend in HDR)
GLOBALPARS_SNGL(G_NEXT_AE_FRAME)=frame+ae_period_nochange; /// try again next frame (extend in HDR)
return 0; /// too little error - no change in exposure
}
// *ae_err=0; /// reset error accumulator TODO: If scaled - reduce resudual error, not reset it
......@@ -239,7 +239,7 @@ int aexpCorr(int color, int frame, int target_frame) {
}
rslt=write(fd_fparmsall, write_data, sizeof(write_data));
if (rslt < sizeof(write_data)) return -errno;
GLOBALPARS(G_NEXT_AE_FRAME)=frame+ae_period_change;
GLOBALPARS_SNGL(G_NEXT_AE_FRAME)=frame+ae_period_change;
return 1;
}
......@@ -84,13 +84,13 @@ int poorExp(int x) {
int waitRequstPrevHist(unsigned long next_frame) {
unsigned long write_data[4];
this_frame=GLOBALPARS(G_THIS_FRAME);
this_frame=GLOBALPARS_SNGL(G_THIS_FRAME);
MDF2(fprintf(stderr,"next_frame=0x%08lx, this_frame=0x%08lx\n",next_frame,this_frame)); ///======= 0 here
if (next_frame <= this_frame) return 0; /// too_late
else if (next_frame > (this_frame+5) ) { /// wait heer as it is too early to schedule histograms
lseek(fd_fparmsall, next_frame-5+LSEEK_FRAME_WAIT_ABS, SEEK_END);
this_frame=GLOBALPARS(G_THIS_FRAME);
this_frame=GLOBALPARS_SNGL(G_THIS_FRAME);
}
/// schedule all histograms for next_frame-1
write_data[0]= FRAMEPARS_SETFRAME;
......@@ -102,7 +102,7 @@ int waitRequstPrevHist(unsigned long next_frame) {
/// now wait for that next frame (if needed)
if (next_frame > this_frame ) {
lseek(fd_fparmsall, next_frame+LSEEK_FRAME_WAIT_ABS, SEEK_END);
this_frame=GLOBALPARS(G_THIS_FRAME);
this_frame=GLOBALPARS_SNGL(G_THIS_FRAME);
return 1;
}
return 0;
......@@ -131,13 +131,13 @@ long getPercentile(unsigned long frame,int color, unsigned long fraction, int re
if (request_colors) { /// at minimum for the new frame request_colors= 1<<color
if (request_colors & ~ (1<<COLOR_Y_NUMBER)) lseek(fd_histogram_cache, LSEEK_HIST_WAIT_C, SEEK_END); /// wait for all histograms, not just Y (G1)
else lseek(fd_histogram_cache, LSEEK_HIST_WAIT_Y, SEEK_END); /// wait for just Y (G1)
MDF2(fprintf(stderr,"this_frame: 0x%lx, NOW: 0x%lx\n",this_frame, GLOBALPARS(G_THIS_FRAME)));
MDF2(fprintf(stderr,"this_frame: 0x%lx, NOW: 0x%lx\n",this_frame, GLOBALPARS_SNGL(G_THIS_FRAME)));
lseek(fd_histogram_cache, LSEEK_HIST_NEEDED + (request_colors << 8), SEEK_END); /// specify that reverse histogram(s) are needed
hist_index=lseek(fd_histogram_cache, frame, SEEK_SET); /// request histograms for the specified frame
MDF2(fprintf(stderr,"got histogram for frame: 0x%lx, NOW: 0x%lx\n",histogram_cache[hist_index].frame, GLOBALPARS(G_THIS_FRAME)));
MDF2(fprintf(stderr,"got histogram for frame: 0x%lx, NOW: 0x%lx\n",histogram_cache[hist_index].frame, GLOBALPARS_SNGL(G_THIS_FRAME)));
/// histograms for frame will be available 1 frame later
if(hist_index <0) {
ELP_FERR(fprintf(stderr, "Requested histograms for frame %ld (0x%lx) are not available. this_frame=0x%lx, now=0x%lx\n",frame,frame,this_frame,GLOBALPARS(G_THIS_FRAME) ));
ELP_FERR(fprintf(stderr, "Requested histograms for frame %ld (0x%lx) are not available. this_frame=0x%lx, now=0x%lx\n",frame,frame,this_frame,GLOBALPARS_SNGL(G_THIS_FRAME) ));
return -1;
}
}
......@@ -302,7 +302,7 @@ int recalibrateDim(void) {
unsigned long vexpos_was, fraction, dims;
unsigned long write_data[4];
int rslt;
this_frame=GLOBALPARS(G_THIS_FRAME);
this_frame=GLOBALPARS_SNGL(G_THIS_FRAME);
MDF1(fprintf(stderr,"this_frame: 0x%lx\n",this_frame));
unsigned long target_frame=this_frame+RECALIBRATE_AHEAD;
vexpos_was= framePars[target_frame & PARS_FRAMES_MASK].pars[P_VEXPOS];
......@@ -321,11 +321,11 @@ int recalibrateDim(void) {
/// no error check here
dims= getPercentile(target_frame,0, fraction, 0xf) & 0xffff; /// all colors are needed. Will skip frames
dims|=getPercentile(target_frame,1, fraction, 0xf) << 16;
GLOBALPARS(G_HIST_DIM_01)=dims;
GLOBALPARS_SNGL(G_HIST_DIM_01)=dims;
dims= getPercentile(target_frame,2, fraction, 0xf) & 0xffff; /// all colors are needed. Will skip frames
dims|=getPercentile(target_frame,3, fraction, 0xf) << 16;
GLOBALPARS(G_HIST_DIM_23)=dims;
MDF1(fprintf(stderr,"dims: 0x%lx NOW: 0x%lx\n",dims, GLOBALPARS(G_THIS_FRAME)));
GLOBALPARS_SNGL(G_HIST_DIM_23)=dims;
MDF1(fprintf(stderr,"dims: 0x%lx NOW: 0x%lx\n",dims, GLOBALPARS_SNGL(G_THIS_FRAME)));
lseek(fd_histogram_cache, target_frame+RECALIBRATE_AFTER, SEEK_SET); ///
return 0;
}
......
......@@ -93,9 +93,13 @@
*!
*/
#include "autoexposure.h"
//#define MAX_SENSORS 4 ///< maximal number of sensor attached (modify some hard-wired constants below if this to be changed)
//#define SENSOR_PORTS 4 ///< Number of sensor ports (each has individual framepars_all_t
int main (int argc, char *argv[]) {
int daemon_bit=0; ///TODO: - make it an argument
int daemon_bit=0;
int sensor_port = 0;
int sensor_subchannel = 0;
// int perc;
int rslt, ae_rslt;
int hdr_mode; /// 0 - off, 1 each other frame, 2 - 2 on, 2 - off
......@@ -103,27 +107,39 @@ int main (int argc, char *argv[]) {
int exp_ahead;
unsigned long next_frame;
const char usage[]= "Usage:\n%s [-b <daemon_bit_number> [-d <debug_bits>]]\n\n"
const char usage[]= "Usage:\n%s -p <sensor port(0..3)> -c <sensor sub channel(0..3)> [-b <daemon_bit_number> [-d <debug_bits>]]\n\n"
"Start autoexposure daemon, bind it to bit <daemon_bit_number> (0..31) in P_DAEMON_EN (ELPHEL_DAEMON_EN in PHP)\n"
"Optional debug_bits (hex number) enable different groups of debug messages (1 group per bit) to stderr\n\n";
// Currently it just verifies that specified keys are at the required positions. TODO: use library to parse
if ((argc < 5) || (strcasecmp(argv[1], "-p")) || (strcasecmp(argv[3], "-c"))){
printf (usage,argv[0]);
return 0;
}
sensor_port = strtol(argv[2], NULL, 16);
sensor_subchannel = strtol(argv[4], NULL, 16);
if ((sensor_port < 0) || (sensor_port >= SENSOR_PORTS) || (sensor_subchannel < 0) || (sensor_subchannel >= MAX_SENSORS) ) {
printf ("Invalid number of port/subchannel\n\n");
printf (usage,argv[0]);
return 0;
}
if (argc < 2) {
daemon_bit=DAEMON_BIT_AUTOEXPOSURE;
} else if ((argc < 3) || (strcasecmp(argv[1], "-b"))) {
if (argc < 6) {
daemon_bit=DAEMON_BIT_AUTOEXPOSURE+sensor_subchannel;
} else if ((argc < 7) || (strcasecmp(argv[5], "-b"))) {
printf (usage,argv[0]);
return 0;
}
if ((argc >=5) && (strcasecmp(argv[3], "-d")==0)) {
autoexposure_debug=strtol(argv[4], NULL, 16);
if ((argc >=9) && (strcasecmp(argv[7], "-d")==0)) {
autoexposure_debug=strtol(argv[8], NULL, 16);
} else autoexposure_debug=1;
daemon_bit=strtol(argv[2], NULL, 10);
daemon_bit=strtol(argv[6], NULL, 10);
if ((daemon_bit<0) || (daemon_bit>31)) {printf ("Invalid bit number %d (should be 0..31)\n", daemon_bit); exit (1);}
fprintf(stderr,"autoexposure started, daemon_bit=0x%x, debug=0x%x\n",daemon_bit,autoexposure_debug);
// MDF1(fprintf(stderr,"\n"));
if (initFilesMmap()<0) exit (1); /// initialization errors
if (initFilesMmap(sensor_port)<0) exit (1); /// initialization errors
if (autoexposure_debug <0) { /// tempoorary hack for testing
GLOBALPARS(G_DEBUG)=0;
GLOBALPARS_SNGL(G_DEBUG)=0;
exit (0);
}
MDF0(fprintf(stderr,"autoexposure started, daemon_bit=0x%x, debug=0x%x\n",daemon_bit,autoexposure_debug));
......@@ -138,26 +154,26 @@ int main (int argc, char *argv[]) {
/// Main loop
while (1) {
this_frame=GLOBALPARS(G_THIS_FRAME);
this_frame=GLOBALPARS_SNGL(G_THIS_FRAME);
MDF6(fprintf(stderr,"Waiting for autoexposure daemon to be enabled\n"));
lseek(fd_histogram_cache, LSEEK_DAEMON_HIST_Y+daemon_bit, SEEK_END); /// wait for autoexposure daemon to be enabled (let it sleep if not)
if (GLOBALPARS(G_THIS_FRAME) != this_frame) {
if (GLOBALPARS_SNGL(G_THIS_FRAME) != this_frame) {
///TODO: Make it possible for this_frame to lag slightly (1 frame) to compensate for CPU being busy with other tasks?
/// Need to re-initialize after long sleep
if (initParams(daemon_bit)<0) exit (1); /// initialization errors
}
/// Is exposure black level calibration requested (will produce 2 (or 1, depending on trigger mode?) dark frames
if (GLOBALPARS(G_HIST_DIM_01)==0xffffffff) {
if (GLOBALPARS_SNGL(G_HIST_DIM_01)==0xffffffff) {
rslt=recalibrateDim();
MDF1(fprintf(stderr,"G_HIST_DIM_01: 0x%08lx, G_HIST_DIM_23: 0x%08lx, recalibrateDim()->%d\n",GLOBALPARS(G_HIST_DIM_01),GLOBALPARS(G_HIST_DIM_23),rslt));
this_frame=GLOBALPARS(G_THIS_FRAME);
MDF1(fprintf(stderr,"G_HIST_DIM_01: 0x%08lx, G_HIST_DIM_23: 0x%08lx, recalibrateDim()->%d\n",GLOBALPARS_SNGL(G_HIST_DIM_01),GLOBALPARS_SNGL(G_HIST_DIM_23),rslt));
this_frame=GLOBALPARS_SNGL(G_THIS_FRAME);
}
/// In HDR mode make sure we skip those different frames;
hdr_mode=get_imageParamsThis(P_HDR_DUR);
if (hdr_mode>2) hdr_mode=2;
if (hdr_mode>0) {
skipHDR(hdr_mode,this_frame);
this_frame=GLOBALPARS(G_THIS_FRAME);
this_frame=GLOBALPARS_SNGL(G_THIS_FRAME);
}
exp_ahead=get_imageParamsThis(P_EXP_AHEAD);
if (!exp_ahead) exp_ahead = 3;
......@@ -172,7 +188,7 @@ MDF3(fprintf(stderr, "this_frame= 0x%x, this_frame+exp_ahead= 0x%x, old_vexp= 0x
/// if it is too far ahead, wait some frames
if ((hdr_target_frame-this_frame)>(exp_ahead+1)) {
lseek(fd_fparmsall, (hdr_target_frame-exp_ahead-1)+LSEEK_FRAME_WAIT_ABS, SEEK_END);
this_frame=GLOBALPARS(G_THIS_FRAME);
this_frame=GLOBALPARS_SNGL(G_THIS_FRAME);
}
exp_ahead=hdr_target_frame-this_frame;
}
......@@ -181,9 +197,9 @@ MDF3(fprintf(stderr, "this_frame= 0x%x, this_frame+exp_ahead= 0x%x, old_vexp= 0x
MDF3(fprintf(stderr, "this_frame= 0x%x, this_frame+exp_ahead= 0x%x, old_vexp= 0x%x, old_that_vexpos = 0x%x\n", (int) this_frame,(int) (this_frame+exp_ahead), (int) old_vexp, (int) old_that_vexpos));
if (((ae_rslt=aexpCorr(COLOR_Y_NUMBER, this_frame, this_frame+exp_ahead )))<0) break; /// restart on errors
//GLOBALPARS(G_AE_INTEGERR)
//GLOBALPARS_SNGL(G_AE_INTEGERR)
vexp= framePars[(this_frame+exp_ahead) & PARS_FRAMES_MASK].pars[P_VEXPOS];
next_frame=GLOBALPARS(G_NEXT_AE_FRAME);
next_frame=GLOBALPARS_SNGL(G_NEXT_AE_FRAME);
if (ae_rslt>0) MDF1(fprintf(stderr,"aexpCorr(0x%x, 0x%lx, 0%lx) -> %d, VEXPOS will be 0x%lx (0x%lx , 0x%lx), next_frame=0x%lx\n", COLOR_Y_NUMBER,this_frame,this_frame+exp_ahead,ae_rslt,vexp,old_vexp, old_that_vexpos,next_frame));
/// WB processing
rslt=whiteBalanceCorr(this_frame, this_frame+exp_ahead, ae_rslt );
......@@ -212,11 +228,11 @@ MDF3(fprintf(stderr, "this_frame= 0x%x, this_frame+exp_ahead= 0x%x, old_vexp= 0x
/// histograms are only availble for the previous frame, so this_frame-1
/*
perc=getPercentile(next_frame-1,COLOR_Y_NUMBER, framePars[next_frame & PARS_FRAMES_MASK].pars[P_AEXP_FRACPIX], 1 << COLOR_Y_NUMBER);
MDF6(fprintf(stderr,"FRAME: 0x%lx, COLOR: %d, FRACTION: 0x%04lx RESULT:0x%04x, NOW: 0x%lx\n",next_frame-1,COLOR_Y_NUMBER,framePars[next_frame & PARS_FRAMES_MASK].pars[P_AEXP_FRACPIX],perc,GLOBALPARS(G_THIS_FRAME)));
MDF6(fprintf(stderr,"FRAME: 0x%lx, COLOR: %d, FRACTION: 0x%04lx RESULT:0x%04x, NOW: 0x%lx\n",next_frame-1,COLOR_Y_NUMBER,framePars[next_frame & PARS_FRAMES_MASK].pars[P_AEXP_FRACPIX],perc,GLOBALPARS_SNGL(G_THIS_FRAME)));
*/
}
ELP_FERR(fprintf (stderr,"Restarting autoexposure due to errors, skipping a frame\n"));
lseek(fd_fparmsall, GLOBALPARS(G_THIS_FRAME) + 1+LSEEK_FRAME_WAIT_ABS, SEEK_END);
lseek(fd_fparmsall, GLOBALPARS_SNGL(G_THIS_FRAME) + 1+LSEEK_FRAME_WAIT_ABS, SEEK_END);
}
return 0;
......
......@@ -50,8 +50,9 @@
#include <sys/mman.h> /* mmap */
#include <sys/ioctl.h>
#include <asm/elphel/c313a.h>
#include <asm/elphel/exifa.h>
#include <elphel/c313a.h>
#include <elphel/x393_devices.h>
//#include <elphel/exifa.h>
#include <asm/byteorder.h>
#include "aexp_utils.h"
......@@ -59,6 +60,7 @@
#include "white_balance.h"
#include "hdr_control.h"
#include "globalsinit.h"
//#if ELPHEL_DEBUG
#define THIS_DEBUG 1
//#else
......
......@@ -57,10 +57,16 @@
* uses global variables for files and mmap-ed data so they are accessible everywhere
* @return 0 - OK, <0 - problems opening/mma-ing
*/
int initFilesMmap(void) {
const char framepars_driver_name[]="/dev/frameparsall";
const char histogram_driver_name[]="/dev/histogram_cache";
const char gamma_driver_name[]= "/dev/gamma_cache";
int initFilesMmap(int sensor_port) {
const char *framepars_dev_names[SENSOR_PORTS] = {
DEV393_PATH(DEV393_FRAMEPARS0),
DEV393_PATH(DEV393_FRAMEPARS1),
DEV393_PATH(DEV393_FRAMEPARS2),
DEV393_PATH(DEV393_FRAMEPARS3)};
const char *framepars_driver_name=framepars_dev_names[sensor_port];
const char histogram_driver_name[]=DEV393_PATH(DEV393_HISTOGRAM);
const char gamma_driver_name[]= DEV393_PATH(DEV393_GAMMA);
///Frame parameters file open/mmap (read/write)
fd_fparmsall= open(framepars_driver_name, O_RDWR);
if (fd_fparmsall <0) {
......@@ -118,12 +124,12 @@ int initFilesMmap(void) {
int initParams(int daemon_bit) {
aex_recover_cntr=0;
lseek(fd_histogram_cache, LSEEK_DAEMON_HIST_Y+daemon_bit, SEEK_END); /// wait for autoexposure daemon to be enabled
GLOBALPARS(G_AE_INTEGERR)=0; /// reset running error
GLOBALPARS(G_WB_INTEGERR)=0; /// reset running error
this_frame=GLOBALPARS(G_THIS_FRAME); /// set global frame number
if (GLOBALPARS(G_HIST_DIM_01)==0) {
GLOBALPARS(G_HIST_DIM_01)=DEFAULT_BLACK_CALIB | (DEFAULT_BLACK_CALIB <<16);
GLOBALPARS(G_HIST_DIM_23)=DEFAULT_BLACK_CALIB | (DEFAULT_BLACK_CALIB <<16);
GLOBALPARS_SNGL(G_AE_INTEGERR)=0; /// reset running error
GLOBALPARS_SNGL(G_WB_INTEGERR)=0; /// reset running error
this_frame=GLOBALPARS_SNGL(G_THIS_FRAME); /// set global frame number
if (GLOBALPARS_SNGL(G_HIST_DIM_01)==0) {
GLOBALPARS_SNGL(G_HIST_DIM_01)=DEFAULT_BLACK_CALIB | (DEFAULT_BLACK_CALIB <<16);
GLOBALPARS_SNGL(G_HIST_DIM_23)=DEFAULT_BLACK_CALIB | (DEFAULT_BLACK_CALIB <<16);
return 1 ; /// used default, no real calibration
}
//#define P_AUTOEXP_EXP_MAX 81 //unsigned long exp_max; /* 100 usec == 1 etc... */
......
/*!***************************************************************************
*! FILE NAME : globalsinit.h
*! DESCRIPTION: Daemon to adjust camera exposure and white balance
*! Copyright (C) 2008 Elphel, Inc.
*! Copyright (C) 2008-2016 Elphel, Inc.
*! -----------------------------------------------------------------------------**
*! This program is free software: you can redistribute it and/or modify
*! it under the terms of the GNU General Public License as published by
......@@ -46,7 +46,7 @@
extern unsigned long this_frame;
extern int autoexposure_debug;
int initFilesMmap(void);
int initFilesMmap(int sensor_port);
int initParams(int daemon_bit);
......
......@@ -46,7 +46,7 @@ int exposureHDR (int frame, int target_frame) {
int vexpos, vexpos_HDR;
int rslt;
if (!((HDR_mode=framePars[target_frame8].pars[P_HDR_DUR]))) return 0; /// HDR mode is disabled
MDF5(fprintf(stderr,"frame=0x%x target_frame=0x%x GLOBALPARS(G_THIS_FRAME)=0x%x\n",(int) frame, (int) target_frame, (int)GLOBALPARS(G_THIS_FRAME)));
MDF5(fprintf(stderr,"frame=0x%x target_frame=0x%x GLOBALPARS_SNGL(G_THIS_FRAME)=0x%x\n",(int) frame, (int) target_frame, (int)GLOBALPARS_SNGL(G_THIS_FRAME)));
if ((HDR_mode<1) || (HDR_mode>2)) {
ELP_FERR(fprintf(stderr, "Wrong HDR mode %d (only 1 or 2 are supported)\n",HDR_mode));
......@@ -129,7 +129,7 @@ int exposureHDR (int frame, int target_frame) {
int skipHDR(int mode, unsigned long frame) {
int patt;
int skip;
MDF5(fprintf(stderr,"mode=%d frame=0x%x GLOBALPARS(G_THIS_FRAME)=0x%x\n",(int) mode, (int) frame, (int)GLOBALPARS(G_THIS_FRAME)));
MDF5(fprintf(stderr,"mode=%d frame=0x%x GLOBALPARS_SNGL(G_THIS_FRAME)=0x%x\n",(int) mode, (int) frame, (int)GLOBALPARS_SNGL(G_THIS_FRAME)));
switch (mode) {
case 0: return 0;
......@@ -151,6 +151,6 @@ int skipHDR(int mode, unsigned long frame) {
// lseek(fd_histogram_cache, skip, SEEK_CUR); /// just wait until the Y histogram will available for non-HDR frame
// lseek(fd_histogram_cache, skip-1, SEEK_CUR); /// just wait until the Y histogram will available for non-HDR frame
lseek(fd_histogram_cache, skip, SEEK_CUR); /// just wait until the Y histogram will available for non-HDR frame
MDF5(fprintf(stderr,"mode=%d frame=0x%x skip=%d GLOBALPARS(G_THIS_FRAME)=0x%x\n",(int) mode, (int) frame, (int) skip, (int)GLOBALPARS(G_THIS_FRAME)));
MDF5(fprintf(stderr,"mode=%d frame=0x%x skip=%d GLOBALPARS_SNGL(G_THIS_FRAME)=0x%x\n",(int) mode, (int) frame, (int) skip, (int)GLOBALPARS_SNGL(G_THIS_FRAME)));
return 1;
}
File added
......@@ -57,7 +57,7 @@
const char MCP98242_LT=0x5;
const char MCP98242_RESOL=0x8;
int initFrameParsMmap(void);
int initFrameParsMmap(int sensor_port);
long long getNowTime(void);
int readTemperature(int indx);
int setResolution(int indx);
......@@ -65,30 +65,40 @@ int setResolution(int indx);
int main (int argc, char *argv[]) {
int daemon_bit=DAEMON_BIT_TEMPERATURE;
int sensor_port = 0;
// int rslt;
// unsigned long prev_seconds=0,prev_useconds=0;
// int delta_msec;
// unsigned long next_frame;
const char usage[]= "Usage:\n%s [-b <daemon_bit_number> | -nodaemon [-d <debug_bits>]]\n\n"
const char usage[]= "Usage:\n%s <sensor_port> [-b <daemon_bit_number> | -nodaemon [-d <debug_bits>]]\n\n"
"Start temperature measurement daemon, bind it to bit <daemon_bit_number> (0..31, defaults to %d) in P_DAEMON_EN (ELPHEL_DAEMON_EN in PHP).\n"
"-nodaemon makes the program update temperatures once and exit.\n"
"Optional debug_bits (hex number) enable different groups of debug messages (1 group per bit) to stderr.\n\n";
if (argc < 2) {
printf (usage,argv[0],daemon_bit);
return 0;
}
sensor_port=strtol(argv[1], NULL, 10);
if ((sensor_port < 0) || (sensor_port >= SENSOR_PORTS)) {
printf ("Invalid port number\n\n");
printf (usage,argv[0],daemon_bit);
return 0;
}
if (argc < 3) {
daemon_bit=DAEMON_BIT_TEMPERATURE;
} else if (strcasecmp(argv[1], "-nodaemon")==0) {
} else if (strcasecmp(argv[2], "-nodaemon")==0) {
daemon_bit=-1;
} else if ((argc < 3) || ((strcasecmp(argv[1], "-b") && (strcasecmp(argv[1], "-d"))))) {
} else if ((argc < 4) || ((strcasecmp(argv[2], "-b") && (strcasecmp(argv[2], "-d"))))) {
printf (usage,argv[0],daemon_bit);
return 0;
} else {
daemon_bit=strtol(argv[2], NULL, 10);
daemon_bit=strtol(argv[3], NULL, 10);
}
if ((argc >=2) && (strcasecmp(argv[argc-2], "-d")==0)) {
if ((argc >=3) && (strcasecmp(argv[argc-2], "-d")==0)) {
temperature_debug=strtol(argv[argc-1], NULL, 16);
} else temperature_debug=1;
......@@ -97,9 +107,9 @@ int main (int argc, char *argv[]) {
if (daemon_bit>31) {printf ("Invalid bit number %d (should be 0..31)\n", daemon_bit); exit (1);}
if (daemon_bit>=0) fprintf(stderr,"Temperature monitor started, daemon_bit=0x%x\n",daemon_bit);
else fprintf(stderr,"Temperature monitor in no-daemon mode (single run)\n");
if (initFrameParsMmap()<0) exit (1); /// initialization errors
if (initFrameParsMmap(sensor_port)<0) exit (1); /// initialization errors
// lseek(fd_fparmsall,10+LSEEK_FRAME_WAIT_ABS, SEEK_END); /// skip 3 frames (first got 0 pixels, 2- 0x3fff) - one extra, sometimes it is needed
tempData= (short *) &(GLOBALPARS(G_TEMPERATURE01)); // 2 32-bit words
tempData= (short *) &(GLOBALPARS_SNGL(G_TEMPERATURE01)); // 2 32-bit words
now=getNowTime();
int numTemperatureDevices=0;
......@@ -133,16 +143,16 @@ int main (int argc, char *argv[]) {
/// Main loop
int i;
thatTime=now;
thatFrame=GLOBALPARS(G_THIS_FRAME);
thatFrame=GLOBALPARS_SNGL(G_THIS_FRAME);
// sleep one frame or until enabled
lseek(fd_fparmsall, LSEEK_FRAME_WAIT_REL+1, SEEK_END); /// skip 1 frame before returning (wait up to 255 frames with such command)
while (1) {
MDF6(fprintf(stderr,"Waiting for temperature daemon to be enabled, frame=%ld\n",GLOBALPARS(G_THIS_FRAME)));
MDF6(fprintf(stderr,"Waiting for temperature daemon to be enabled, frame=%ld\n",GLOBALPARS_SNGL(G_THIS_FRAME)));
lseek(fd_fparmsall, LSEEK_DAEMON_FRAME+daemon_bit, SEEK_END); /// wait for temperature daemon to be enabled (let it sleep if not)
now=getNowTime();
MDF3(fprintf(stderr,"Now is %d ms. due is %d ms \n",(int)((now/((long long)1000)) & 0x7fffffff),(int)((due_time/((long long)1000)) & 0x7fffffff)));
thisFrame=GLOBALPARS(G_THIS_FRAME);
thisFrame=GLOBALPARS_SNGL(G_THIS_FRAME);
if (now>=due_time){
MDF3(fprintf(stderr," It is due!\n"));
......@@ -190,15 +200,15 @@ int main (int argc, char *argv[]) {
long long getNowTime(void){
lseek(fd_fparmsall, LSEEK_GET_FPGA_TIME, SEEK_END); /// get FPGA time
long long result=GLOBALPARS(G_SECONDS);
long long result=GLOBALPARS_SNGL(G_SECONDS);
result*=1000000;
result+=GLOBALPARS(G_MICROSECONDS);
MDF4(fprintf(stderr,"getNowTime(): %ld.%06ld, result=%d, == %d ms\n",GLOBALPARS(G_SECONDS),GLOBALPARS(G_MICROSECONDS), (int) (result & 0x7fffffff), (int) ((result/((long long) 1000)) & 0x7fffffff)));
result+=GLOBALPARS_SNGL(G_MICROSECONDS);
MDF4(fprintf(stderr,"getNowTime(): %ld.%06ld, result=%d, == %d ms\n",GLOBALPARS_SNGL(G_SECONDS),GLOBALPARS_SNGL(G_MICROSECONDS), (int) (result & 0x7fffffff), (int) ((result/((long long) 1000)) & 0x7fffffff)));
return result;
}
int readTemperature(int indx){
MDF2(fprintf(stderr, "Measuring temperature data for index=%d, frame # %ld, slaves[index]=%d\n",indx,GLOBALPARS(G_THIS_FRAME),slaves[indx]));
MDF2(fprintf(stderr, "Measuring temperature data for index=%d, frame # %ld, slaves[index]=%d\n",indx,GLOBALPARS_SNGL(G_THIS_FRAME),slaves[indx]));
int result=-1;
int devfd,ctlfd;
......@@ -267,7 +277,7 @@ int main (int argc, char *argv[]) {
close (ctlfd);
}
close (devfd);
MDF1(fprintf(stderr,"Temperature data for index=%d is 0x%x, frame # %ld\n",indx, result, GLOBALPARS(G_THIS_FRAME)));
MDF1(fprintf(stderr,"Temperature data for index=%d is 0x%x, frame # %ld\n",indx, result, GLOBALPARS_SNGL(G_THIS_FRAME)));
return result;
/*
......@@ -299,14 +309,14 @@ MDF2(fprintf(stderr, "Measuring temperature failed\n"));
close (ctlfd);
}
close (devfd);
MDF2(fprintf(stderr,"Temperature data for index=%d is 0x%x, frame # %ld\n",indx, result, GLOBALPARS(G_THIS_FRAME)));
MDF2(fprintf(stderr,"Temperature data for index=%d is 0x%x, frame # %ld\n",indx, result, GLOBALPARS_SNGL(G_THIS_FRAME)));
return result;
*/
}
int setResolution(int indx){
MDF2(fprintf(stderr, "Setting full temperature resolution for index=%d, frame # %ld, slaves[index]=%d\n",indx,GLOBALPARS(G_THIS_FRAME),slaves[indx]));
MDF2(fprintf(stderr, "Setting full temperature resolution for index=%d, frame # %ld, slaves[index]=%d\n",indx,GLOBALPARS_SNGL(G_THIS_FRAME),slaves[indx]));
int devfd,ctlfd;
unsigned char data8[2];
if (indx<1) return 0; // no resolution settings fro system temperature, only for SFE
......@@ -348,8 +358,13 @@ MDF2(fprintf(stderr, "Measuring temperature failed\n"));
* uses global variables for files and mmap-ed data so they are accessible everywhere
* @return 0 - OK, <0 - problems opening/mma-ing
*/
int initFrameParsMmap(void) {
const char framepars_driver_name[]="/dev/frameparsall";
int initFrameParsMmap(int sensor_port) {
const char *framepars_dev_names[SENSOR_PORTS] = {
DEV393_PATH(DEV393_FRAMEPARS0),
DEV393_PATH(DEV393_FRAMEPARS1),
DEV393_PATH(DEV393_FRAMEPARS2),
DEV393_PATH(DEV393_FRAMEPARS3)};
const char *framepars_driver_name=framepars_dev_names[sensor_port];
///Frame parameters file open/mmap (read/write)
fd_fparmsall= open(framepars_driver_name, O_RDWR);
if (fd_fparmsall <0) {
......
......@@ -44,7 +44,9 @@
#include <sys/mman.h> /* mmap */
#include <sys/ioctl.h>
#include <asm/elphel/c313a.h>
#include <elphel/c313a.h>
#include <elphel/x393_devices.h>
//#include <asm/elphel/exifa.h>
#include <asm/byteorder.h>
......
......@@ -58,7 +58,7 @@
#include "autoexposure.h"
void initWhiteBalanceCorr(void) {
GLOBALPARS(G_NEXT_WB_FRAME)=0;
GLOBALPARS_SNGL(G_NEXT_WB_FRAME)=0;
}
#define MIN_LEVEL_TO_ADJUST 0x1000 /// 1/16 of the full scale
#define MIN_PIXELS_TO_ADJUST 0x100 /// one 32x32 block, 1 color
......@@ -74,7 +74,7 @@ void initWhiteBalanceCorr(void) {
/// TODO: SupportT P_WB_MASK - now it is just ON/OFF. NOTE:When the bit is off it should be scaled with the G1 color!
int whiteBalanceCorr(int frame, int target_frame, int ae_rslt) {
MDF3(fprintf(stderr,"frame=0x%x, target_frame=0x%x G_WB_INTEGERR=0x%08lx\n",frame,target_frame,GLOBALPARS(G_WB_INTEGERR))); ///======= 0 here
MDF3(fprintf(stderr,"frame=0x%x, target_frame=0x%x G_WB_INTEGERR=0x%08lx\n",frame,target_frame,GLOBALPARS_SNGL(G_WB_INTEGERR))); ///======= 0 here
int rslt;
int colors;
unsigned long write_data[18];
......@@ -101,7 +101,7 @@ int whiteBalanceCorr(int frame, int target_frame, int ae_rslt) {
int wb_period_nochange=(framePars[target_frame8].pars[P_WB_PERIOD] >> 8 ) & 0xff; /// next byte
int wb_dont_sync= (framePars[target_frame8].pars[P_WB_PERIOD] & 0x10000); /// don't try to synchronize to availble histograms
int aerr=0; // just to keep compiler happy
// int * wb_err= (int *) &(GLOBALPARS(G_WB_INTEGERR)); /// so it will be signed
// int * wb_err= (int *) &(GLOBALPARS_SNGL(G_WB_INTEGERR)); /// so it will be signed
static int wb_err[4]; /// individual per-color. Maybe make visible outside? Or not?
if (!wb_period_change) wb_period_change= DEFAULT_WB_PERIOD_CHANGE;
......@@ -109,11 +109,11 @@ int whiteBalanceCorr(int frame, int target_frame, int ae_rslt) {
if (!((colors=framePars[target_frame8].pars[P_WB_CTRL] & 0x0f)) || !(framePars[target_frame8].pars[P_WB_CTRL] & (1<<WB_CTRL_BIT_EN))) {
GLOBALPARS(G_NEXT_WB_FRAME)=frame+wb_period_change;
GLOBALPARS_SNGL(G_NEXT_WB_FRAME)=frame+wb_period_change;
return 0; /// white balance is off (mask==0)
}
if (GLOBALPARS(G_NEXT_WB_FRAME) > frame) return 0; /// too early to bother
MDF3(fprintf(stderr,"G_WB_INTEGERR=0x%08lx\n",GLOBALPARS(G_WB_INTEGERR))); ///======= 0 here
if (GLOBALPARS_SNGL(G_NEXT_WB_FRAME) > frame) return 0; /// too early to bother
MDF3(fprintf(stderr,"G_WB_INTEGERR=0x%08lx\n",GLOBALPARS_SNGL(G_WB_INTEGERR))); ///======= 0 here
colors |= (1 << COLOR_Y_NUMBER);
/// Get the histogram (including percentiles)
lseek(fd_histogram_cache, LSEEK_HIST_WAIT_C, SEEK_END); /// wait for all histograms, not just Y (G1)
......@@ -126,7 +126,7 @@ int whiteBalanceCorr(int frame, int target_frame, int ae_rslt) {
if (histogram_cache[hist_index].frame < (frame-1)) { /// histogram is too old - try again
GLOBALPARS(G_NEXT_WB_FRAME)=frame+1;
GLOBALPARS_SNGL(G_NEXT_WB_FRAME)=frame+1;
if (wb_dont_sync) return 0; /// will request histogram for this frame
/// repeat up to 8 times trying to get a fresh histogram
for (i=0; i<8; i++) {
......@@ -138,7 +138,7 @@ int whiteBalanceCorr(int frame, int target_frame, int ae_rslt) {
if (histogram_cache[hist_index].frame == (frame-1)) break;
}
if (histogram_cache[hist_index].frame < (frame-1)) { /// histogram is too old - try again
GLOBALPARS(G_NEXT_WB_FRAME)=frame+1;
GLOBALPARS_SNGL(G_NEXT_WB_FRAME)=frame+1;
return 0; /// will request histogram for this frame
}
}
......@@ -295,7 +295,7 @@ int whiteBalanceCorr(int frame, int target_frame, int ae_rslt) {
}
rslt=write(fd_fparmsall, write_data, (i << 2));
if (rslt < (i << 2)) return -errno;
GLOBALPARS(G_NEXT_WB_FRAME)=frame+framePars[target_frame8].pars[P_WB_PERIOD]; /// modify overall next_frame
GLOBALPARS_SNGL(G_NEXT_WB_FRAME)=frame+framePars[target_frame8].pars[P_WB_PERIOD]; /// modify overall next_frame
return 1;
/// TODO: add error integration, don't rush for instant changes?
......
#!/usr/bin/env python
# encoding: utf-8
from __future__ import division
from __future__ import print_function
"""
# @file used_files.py
# @brief Extract file access data after build, modify CDT project configuration
# (.cproject) accordingly
# @copyright Copyright (C) 2016, Elphel.inc.
# @param <b>License</b>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http:#www.gnu.org/licenses/>.
@author: Andrey Filippov
@license: GPLv3.0+
@contact: andrey@elphel.coml
@deffield updated: Updated
"""
__author__ = "Andrey Filippov"
__copyright__ = "Copyright 2016, Elphel, Inc."
__license__ = "GPL"
__version__ = "3.0+"
__maintainer__ = "Andrey Filippov"
__email__ = "andrey@elphel.com"
__status__ = "Development"
import sys
import os
import time
import xml.etree.ElementTree as ET
'''
TODO:Automate, find out why separate touch commands are needed
Run this program twice:
1-st run ./used_files.py linux -1
and save shown timestamp
Then run (some mystery here)
touch src/drivers/ata/ahci_elphel.c
touch src/drivers/elphel/sensor_common.c
Wait 5 seconds and run (in a different console with appropriate sourcing)
bitbake linux-xlnx -c compile -f
Then again
./used_files.py linux <timestamp_from_the_first_run>
If somethong went wrong you will need to resore .cproject from eclipse_project_setup directory
For php:
bitbake php -c cleansstate
bitbake php -c unpack -f
bitbake php -c configure -f
./used_files.py php -1
bitbake php -c compile -f
./used_files.py php 1471044836.8
Doing:
bitbake php -c compile -f
./used_files.py php -1
bitbake php -c compile -f
./used_files.py php 1471044836.8
Corrupts make process
'''
def file_tree(flist): # Each file in list is a file, no directories
ftree={}
for p in flist:
node = ftree
seg_list=p.split(os.sep)
last_i=len(seg_list)-1
for i,segm in enumerate(seg_list):
if not segm in node:
if i == last_i:
node[segm] = None
else:
node[segm] = {}
node=node[segm]
return ftree
def exclude_list(ftree, flist):
mark = "*" # no file/dir name can be "*"
def list_tree_recursive(root):
rslt = []
if not mark in root:
return [[""]] # convert to trailing "/" for directories
for n in root:
if not n == mark:
if root[n] is None:
rslt.append([n])
else:
for l in list_tree_recursive(root[n]):
rslt.append([n]+l)
return rslt
ftree[mark]=None # mark top level dir
for p in flist:
node = ftree
for segm in p.split(os.sep)[:-1]:
node=node[segm]
node[mark]=None # [mark] means used in flist
del node[p.split(os.sep)[-1]]
#print (ftree)
# for k in ftree:
# print(k)
#Now prune unused directories
#prune_recursive(ftree) # (assuming root is used)
# now create list
files_list_list = list_tree_recursive(ftree)
# print (files_list_list)
#converrt to file paths
pl = []
for l in files_list_list:
pl.append(os.path.join(*(l[1:])))
pl = sorted (pl)
return pl
def proc_tree():
DEBUG = True
extensions = [".h",".c",".cpp"]
exclude_start = ["linux"+os.sep+"scripts"+os.sep,"linux"+os.sep+"source"+os.sep+"scripts"+os.sep]
delta_t = 3 # seconds
try:
root_path = sys.argv[1]
except:
print ("Calling %s <root directory path> [timestamp]"%(os.path.basename(sys.argv[0])))
try:
start_time = float(sys.argv[2])
except:
start_time = 0.0
touch_files= start_time < 0.0
print ("root_path = %s"%(root_path))
# root_path = "/home/eyesis/git/poky/linux-elphel/linux/"
lstFiles = []
# Append files to a list
for path, _, files in os.walk(root_path, followlinks = True):
for f in files:
for ext in extensions:
if f.endswith(ext):
lstFiles.append(os.path.join(path, f))
break
all_tree= file_tree(sorted(lstFiles))
include_lst=[]
lst_a = []
latest_at=0
for p in lstFiles:
if touch_files:
if os.path.islink(p):
try:
os.utime(os.path.realpath(p), None)
except:
print("missing linked file: %s"%(os.path.realpath(p)))
else:
os.utime(p, None)
else:
# at = time.ctime(os.stat(p).st_atime)
try:
at = os.stat(p).st_atime
l = None
except:
at = 0
if os.path.islink(p):
try:
l = os.path.realpath(p)
at = os.stat(l).st_atime
except:
at = 0 # missing file
latest_at = max((latest_at,at))
if at > (start_time + delta_t):
#Scripts/lexers result in problems
exclude=False
for exStr in exclude_start:
if p.startswith(exStr):
exclude=True
break
if exclude:
break
#exclude_start
lst_a.append([p,at,l])
include_lst.append(p)
if touch_files:
print (len(lstFiles), "last time = ", time.time())
return
excluding = exclude_list(all_tree, include_lst)
# print (all_tree)
# print (sorted(include_lst))
# print ("|".join(excluding))
if DEBUG:
with open("all_sources.lst","w" ) as f:
for p in sorted(lstFiles):
try:
at = os.stat(p).st_atime
except:
at = 0
lnk=""
if os.path.islink(p):
try:
at = os.stat(os.path.realpath(p)).st_atime
except:
at = 0
lnk = os.path.realpath(p)
print (p,at,lnk, file=f)
with open("excluding.lst","w" ) as f:
for p in excluding:
print (p, file=f)
with open("including.lst","w" ) as f:
for p in include_lst:
print (p, file=f)
# include_tree= file_tree(sorted(include_lst))
# print(include_tree)
root_dir=include_lst[0].split(os.sep)[0]
print ("root_dir=",root_dir)
xml= ET.parse(".cproject")
root=xml.getroot()
# for child in root:
# print(child.tag, child.attrib)
for child in root.iter('sourceEntries'):
for gchild in child:
print(gchild.tag)
for child in root.iter('sourceEntries'):
for gchild in child:
if gchild.tag == 'entry':
attr = gchild.attrib
try:
if (attr['kind'] == 'sourcePath') and (attr['name'] == root_dir):
child.remove (gchild)
print ("Removed existing entry ",gchild.tag)
break
except:
print ("error matching attributes for ",gchild.tag)
pass
break #after first 'sourceEntries' - should be just one?
ET.SubElement(child, 'entry', {"flags":"VALUE_WORKSPACE_PATH", "kind":"sourcePath", "name":root_dir, "excluding":"|".join(excluding)})
for child in root.iter('sourceEntries'):
for gchild in child:
print(gchild.tag)
oneliner= ET.tostring(root)
#overwrites original .cproject, may change to somethong different
with open(".cproject", "wr") as f:
f.write("""<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?>""")
f.write(oneliner)
print (len(lstFiles), len(lst_a), "last access time = ",latest_at)
if __name__ == '__main__':
proc_tree()
"""
make clean # otherwise compiled files are preserved
bitbake apps-autoexposure -c cleansstate
bitbake apps-autoexposure -c unpack -f
bitbake apps-autoexposure -c configure -f
./used_files.py sysroots -1
bitbake apps-autoexposure -c compile -f
./used_files.py sysroots 1473297567.42
eyesis@eyesis-SH87R:~/git/elphel393/rootfs-elphel/elphel-apps-autoexposure$ ./used_files.py sysroots/elphel393/usr -1
root_path = sysroots/elphel393/usr
5615 last time = 1473300068.01
eyesis@eyesis-SH87R:~/git/elphel393/rootfs-elphel/elphel-apps-autoexposure$ ./used_files.py sysroots/elphel393/usr 1473300068.01
root_path = sysroots/elphel393/usr
root_dir= sysroots
entry
entry
entry
entry
entry
5615 84 last access time = 1473300080.1
"""
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment