diff --git a/.gitignore b/.gitignore index 9f385f6..e790bc5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,8 @@ deploy/* work/* -config +#config postrun.sh -SKIP +#SKIP .pc *-pc apt-cacher-ng/ diff --git a/config b/config new file mode 100644 index 0000000..78542de --- /dev/null +++ b/config @@ -0,0 +1,2 @@ +IMG_NAME="PiAIZU" + diff --git a/stage2/03-install-piaizu/00-packages b/stage2/03-install-piaizu/00-packages new file mode 100644 index 0000000..5472494 --- /dev/null +++ b/stage2/03-install-piaizu/00-packages @@ -0,0 +1,3 @@ +i2c-tools dnsmasq hostapd python-smbus mplayer fbi vim lighttpd sshfs doxygen clang-3.9 clang-format-3.9 graphviz libfcgi-dev libjansson-dev + + diff --git a/stage2/03-install-piaizu/01-run.sh b/stage2/03-install-piaizu/01-run.sh new file mode 100755 index 0000000..302d428 --- /dev/null +++ b/stage2/03-install-piaizu/01-run.sh @@ -0,0 +1,38 @@ +#!/bin/bash -e + +#################################################################### +# +# Installation of config and dts for LMX-001 +# Enable autologin +# Enable SSHD +# Enable i2c-dev +# +#################################################################### + +############ Config.txt ############################################ +if [ ! -f ${ROOTFS_DIR}/boot/config_original.txt ]; then + echo "No backup of original config found" + cp -v ${ROOTFS_DIR}/boot/config.txt ${ROOTFS_DIR}/boot/config_original.txt +fi + +# Install the config +install -m 644 files/config.txt ${ROOTFS_DIR}/boot/ + +############ Install dts ############################################ +install -d ${ROOTFS_DIR}/home/pi/piaizu/dts +install -t ${ROOTFS_DIR}/home/pi/piaizu/dts files/dts/* + +############ LMX-001 scripts ######################################## +install -m 755 files/brightness.py ${ROOTFS_DIR}/usr/sbin +install -m 755 files/lmx001_init.py ${ROOTFS_DIR}/usr/sbin + +cp -v files/rc.local ${ROOTFS_DIR}/etc/rc.local + +############ Enable autologin ####################################### +sed -i 's\ExecStart=-/sbin/agetty --noclear %I $TERM\ExecStart=-/sbin/agetty --autologin pi --noclear %I $TERM\g' ${ROOTFS_DIR}/etc/systemd/system/getty.target.wants/getty@tty1.service + +############ Enable SSHD ############################################ +touch ${ROOTFS_DIR}/boot/ssh + +############ Enable i2c-dev ######################################### +cp -v files/modules ${ROOTFS_DIR}/etc/modules diff --git a/stage2/03-install-piaizu/02-run.sh b/stage2/03-install-piaizu/02-run.sh new file mode 100755 index 0000000..6a46eba --- /dev/null +++ b/stage2/03-install-piaizu/02-run.sh @@ -0,0 +1,18 @@ +#!/bin/bash -e + +#################################################################### +# +# Configuration of hostapd dnsmasq +# Fix network config +# +#################################################################### + +############ Install lighttpd, host and dnsmasq config ####################### +install -m 644 files/lighttpd.conf ${ROOTFS_DIR}/etc/lighttpd/ +install -m 644 files/hostapd.conf ${ROOTFS_DIR}/etc/hostapd +install -m 644 files/dnsmasq.conf ${ROOTFS_DIR}/etc/ + +sed -i 's\#DAEMON_CONF=""\DAEMON_CONF="/etc/hostapd/hostapd.conf"\g' ${ROOTFS_DIR}/etc/default/hostapd + +############ Network setup ######################################### +cp -v files/interfaces ${ROOTFS_DIR}/etc/network/interfaces diff --git a/stage2/03-install-piaizu/03-run.sh b/stage2/03-install-piaizu/03-run.sh new file mode 100755 index 0000000..bb14935 --- /dev/null +++ b/stage2/03-install-piaizu/03-run.sh @@ -0,0 +1,35 @@ +#/bin/bash -e + +#################################################################### +# +# Installation of LMX-001 example app and documentation +# +#################################################################### + +############ Insert git tag and related into docs ################## +GITREV=$(git describe --tags) +NOW=$(date) +echo $GITREV +sed -i -r "s/(Build date:)(.*)/\1 $NOW/g" files/fb/documentation.txt +sed -i -r "s/(Git describe:)(.*)/\1 $GITREV/g" files/fb/documentation.txt + +############ Install demo, example and documentation files ######### +install -d ${ROOTFS_DIR}/home/pi/piaizu/demo +install -t ${ROOTFS_DIR}/home/pi/piaizu/demo files/demo/* + +install -d ${ROOTFS_DIR}/home/pi/lmx_example +cp -rfv files/fb/* ${ROOTFS_DIR}/home/pi/lmx_example/ + +make -C ${ROOTFS_DIR}/home/pi/lmx_example doc +cp -rfv ${ROOTFS_DIR}/home/pi/lmx_example/docs/html/* ${ROOTFS_DIR}/var/www/html + +############ Setup terminal ####################### +cp -v files/.profile ${ROOTFS_DIR}/home/pi/.profile +cp -v files/.bashrc ${ROOTFS_DIR}/home/pi/.bashrc +############ Create copy of this buildsystem on target fs################# +buildsystem_path=piaizu_$GITREV +pth=$(readlink -e ../..) +if [ ! -d "${ROOTFS_DIR}/home/pi/$buildsystem_path" ]; then + git clone file://$pth --depth=1 ${ROOTFS_DIR}/home/pi/$buildsystem_path +fi + diff --git a/stage2/03-install-piaizu/04-run-chroot.sh b/stage2/03-install-piaizu/04-run-chroot.sh new file mode 100755 index 0000000..54783c1 --- /dev/null +++ b/stage2/03-install-piaizu/04-run-chroot.sh @@ -0,0 +1,18 @@ +#!/bin/bash -e + +#################################################################### +# +# Commands to run under chroot +# +#################################################################### + +############ Compile and install device tree ####################### +make -C /home/pi/piaizu/dts/ install + +############ Chmod the example folder ############################## +chmod -R a+rw /home/pi/lmx_example + +############ Build and install the lmx example ##################### +make -C /home/pi/lmx_example clean install + + diff --git a/stage2/03-install-piaizu/files/.bashrc b/stage2/03-install-piaizu/files/.bashrc new file mode 100644 index 0000000..f9adf8c --- /dev/null +++ b/stage2/03-install-piaizu/files/.bashrc @@ -0,0 +1,114 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +# If not running interactively, don't do anything +case $- in + *i*) ;; + *) return;; +esac + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=2000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# make less more friendly for non-text input files, see lesspipe(1) +#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color) color_prompt=yes;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w \$\[\033[00m\] ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# If this is an xterm set the title to user@host:dir +case "$TERM" in +xterm*|rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; +*) + ;; +esac + +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + #alias dir='dir --color=auto' + #alias vdir='vdir --color=auto' + + alias grep='grep --color=auto' + alias fgrep='fgrep --color=auto' + alias egrep='egrep --color=auto' +fi + +# colored GCC warnings and errors +#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + +# some more ls aliases +#alias ll='ls -l' +#alias la='ls -A' +#alias l='ls -CF' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi +alias ll='ls -al' diff --git a/stage2/03-install-piaizu/files/.profile b/stage2/03-install-piaizu/files/.profile new file mode 100644 index 0000000..52dfd42 --- /dev/null +++ b/stage2/03-install-piaizu/files/.profile @@ -0,0 +1,25 @@ +# ~/.profile: executed by the command interpreter for login shells. +# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login +# exists. +# see /usr/share/doc/bash/examples/startup-files for examples. +# the files are located in the bash-doc package. + +# the default umask is set in /etc/profile; for setting the umask +# for ssh logins, install and configure the libpam-umask package. +#umask 022 + +# if running bash +if [ -n "$BASH_VERSION" ]; then + # include .bashrc if it exists + if [ -f "$HOME/.bashrc" ]; then + . "$HOME/.bashrc" + fi +fi + +# set PATH so it includes user's private bin if it exists +if [ -d "$HOME/bin" ] ; then + PATH="$HOME/bin:$PATH" +fi +echo `setterm -blank 0 -powerdown 0` >> /dev/tty1 +echo `setterm -cursor off` >>/dev/tty1 + diff --git a/stage2/03-install-piaizu/files/README.md b/stage2/03-install-piaizu/files/README.md new file mode 100644 index 0000000..607d3f6 --- /dev/null +++ b/stage2/03-install-piaizu/files/README.md @@ -0,0 +1,70 @@ +# PiAIZU +This is the build system to compile a SD card image of the Raspian. +This image will be preconfigured already to be ready to run the PiAIZU setup. +The PiAIZU setup consists of the following: + - RbPi (Raspberry Pi), [3 or Zero] + - PCB sheild that connects to the RbPi + - PCB that connects to the LMX-001 display + - Cable that connects the two PCBs + + [![N|Solid](https://www.raspberrypi.org/app/uploads/2012/02/Raspian_SD-150x150.png)](https://www.raspberrypi.org/downloads/raspbian/) + +# Software + + The software needed that is added into the rootfs of the Raspbian is the following: + - LMX I2C initalisation scripts + - Demo (TBD) + - Brightness + - I2C Tools (added std package) + +# Configuration +The PiAIZU related files are all being set-up in the stage2 directory. + +# Dependencies +The same as for the original plus doxygen with doxygen. +``` +apt-get install quilt parted realpath qemu-user-static debootstrap zerofree pxz zip dosfstools bsdtar libcap2-bin grep rsync doxygen graphviz qemu-user-binfmt +``` +The orignal RPi-Distro/pi-gen repository can be found at github. +``` +https://github.com/RPi-Distro/pi-gen +``` +Current tag is: + **2017-04-10-raspbian-jessie** + +# Building + +Once all the prerequisite is in place, you start a build by executing the +build.sh script in the root of this project. You must be sudo to do it. +``` +sudo -s +./build.sh +``` +When its done you will find your binaries in the deploy/ folder. + +# Flashing + +You need have and microSD card, insert it into your computer and find out what +device name it has. +``` +sudo -s +unzip -p image_2017-06-29-PiAIZU-lite.zip | dd of=/dev/sd[X] bs=20M && sync +``` +When this command is done, just take the card out and put it in the Raspberry. +Make sure you have the PiAIZU hardware attached. + +When the Raspberry boots, you will get more instructions inte screen of the +LMX-001. + +### Encountered issues +At some points it has been seen that the qemu-arm hasn't been properly installed. +if debootstart fails due to something similiar to: +``` +chroot: failed to run command ‘/bin/bash’: Exec format error +``` +try to remove and reinstall: +``` +apt-get remove qemu-user-static +apt-get install qemu-user-static +``` + diff --git a/stage2/03-install-piaizu/files/brightness.py b/stage2/03-install-piaizu/files/brightness.py new file mode 100644 index 0000000..d8c5956 --- /dev/null +++ b/stage2/03-install-piaizu/files/brightness.py @@ -0,0 +1,74 @@ +#!/usr/bin/python + +import smbus +import time +import sys + +bus = smbus.SMBus(3) # 3 = /dev/i2c-3 +DEVICE_ADDRESS_L = 0x38 #Address bit=L (0x70)=>0111 0000=>011 1000(0x38) + +ref_pulse = 398.0 #reference(average) pulse at 500nit + +args = sys.argv +print "Your target brightness is " + args[1] + "nit" + +#Calculate the target pwm value from pulse value. +#The relationship between pulse and pwm is non-linear. Need to be calculated. +def pulse2pwm(pulse): + if pulse <= 255.0: + pwm = pulse + elif (255 < pulse) and (pulse <= 510): + pwm = (pulse - 256.0)/2 + 256 + elif (510 < pulse) and (pulse <=1024): + pwm = (pulse - 511.0)/4 + 384 + elif (1024 < pulse) and (pulse <= 2040): + pwm = (pulse - 1021.0)/8 + 512 + elif (2040 < pulse) and (pulse <= 3825): + pwm = (pulse - 2041.0)/15 + 640 + elif (3825 < pulse) and (pulse <= 7461): + pwm = (pulse - 3826.0)/29 + 759 + elif 7461 < pulse: + pwm = 1023 + return pwm + +#Calculate the target NUM register and WIDTH register +#Not linear. So need to be calculated. +def pwm2num_width(pwm): + if pwm <= 255.0: + num = 5 + width = int(pwm) + elif (255 < pwm) and (pwm <= 383): + num = 4 + width = int(pwm - 128) + elif (383 < pwm) and (pwm <= 511): + num = 3 + width = int(pwm - 256) + elif (511 < pwm) and (pwm <= 639): + num = 2 + width = int(pwm - 384) + elif (639 < pwm) and (pwm <= 758): + num = 1 + width = int(pwm - 503) + elif (758 < pwm) and (pwm <= 884): + num = 0 + width = int(pwm - 630) + elif 884 < pwm: + num = 0 + width = 255 + return num, width + + +target_nit = long(args[1]) #Target nit + +#Target pulse is calculated from reference pulse value +#The relationship between pulse and nit is linear. Can be calculated with simple formula. +target_pulse = (target_nit/500.0) * ref_pulse +target_pwm = pulse2pwm(target_pulse) +target_num, target_width = pwm2num_width(target_pwm) +print "NUM=" + hex(target_num) +print "WIDTH=" + hex(target_width) + + +#bus.write_byte_data(device address, register address, value) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4D, target_num) #Write NUM register +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4E, target_width) #Write WIDTH register diff --git a/stage2/03-install-piaizu/files/config.txt b/stage2/03-install-piaizu/files/config.txt new file mode 100644 index 0000000..126da62 --- /dev/null +++ b/stage2/03-install-piaizu/files/config.txt @@ -0,0 +1,31 @@ +overscan_left=0 +overscan_right=0 +overscan_top=0 +overscan_bottom=0 + +framebuffer_width=419 +framebuffer_height=138 + +#framebuffer_width=800 +#framebuffer_height=600 + +dtparam=audio=off +dtparam=i2c_arm=off +dtparam=spi=off + +core_freq=250 +dtoverlay=pi3-disable-bt +dtoverlay=vga666 +dtoverlay=i2c-gpio,i2c-gpio_sda=23,i2c_gpio_scl=24 +dtoverlay=gpio-key + +enable_dpi_lcd=1 +dpi_group=2 +dpi_mode=87 +display_default_lcd=1 #1=LMX-001, 0=HDMI <-should change framebuffer size same time. + +dpi_output_format=458783 +hdmi_timings=419 0 25 14 61 138 0 58 3 69 0 0 0 120 0 16666666 8 + +start_x=1 +gpu_mem=256 diff --git a/stage2/03-install-piaizu/files/demo/Engine_step01.png b/stage2/03-install-piaizu/files/demo/Engine_step01.png new file mode 100644 index 0000000..5a040d3 Binary files /dev/null and b/stage2/03-install-piaizu/files/demo/Engine_step01.png differ diff --git a/stage2/03-install-piaizu/files/demo/Engine_step02.png b/stage2/03-install-piaizu/files/demo/Engine_step02.png new file mode 100644 index 0000000..3caf961 Binary files /dev/null and b/stage2/03-install-piaizu/files/demo/Engine_step02.png differ diff --git a/stage2/03-install-piaizu/files/demo/Engine_step03.png b/stage2/03-install-piaizu/files/demo/Engine_step03.png new file mode 100644 index 0000000..baec44a Binary files /dev/null and b/stage2/03-install-piaizu/files/demo/Engine_step03.png differ diff --git a/stage2/03-install-piaizu/files/demo/Engine_step04.png b/stage2/03-install-piaizu/files/demo/Engine_step04.png new file mode 100644 index 0000000..116d2b0 Binary files /dev/null and b/stage2/03-install-piaizu/files/demo/Engine_step04.png differ diff --git a/stage2/03-install-piaizu/files/demo/Engine_step05.png b/stage2/03-install-piaizu/files/demo/Engine_step05.png new file mode 100644 index 0000000..f695388 Binary files /dev/null and b/stage2/03-install-piaizu/files/demo/Engine_step05.png differ diff --git a/stage2/03-install-piaizu/files/demo/sonylogo.jpg b/stage2/03-install-piaizu/files/demo/sonylogo.jpg new file mode 100644 index 0000000..6ff97f7 Binary files /dev/null and b/stage2/03-install-piaizu/files/demo/sonylogo.jpg differ diff --git a/stage2/03-install-piaizu/files/dnsmasq.conf b/stage2/03-install-piaizu/files/dnsmasq.conf new file mode 100644 index 0000000..63d13c5 --- /dev/null +++ b/stage2/03-install-piaizu/files/dnsmasq.conf @@ -0,0 +1,666 @@ +# Configuration file for dnsmasq. +# +# Format is one option per line, legal options are the same +# as the long options legal on the command line. See +# "/usr/sbin/dnsmasq --help" or "man 8 dnsmasq" for details. + +# Listen on this specific port instead of the standard DNS port +# (53). Setting this to zero completely disables DNS function, +# leaving only DHCP and/or TFTP. +#port=5353 + +# The following two options make you a better netizen, since they +# tell dnsmasq to filter out queries which the public DNS cannot +# answer, and which load the servers (especially the root servers) +# unnecessarily. If you have a dial-on-demand link they also stop +# these requests from bringing up the link unnecessarily. + +# Never forward plain names (without a dot or domain part) +#domain-needed +# Never forward addresses in the non-routed address spaces. +#bogus-priv + +# Uncomment these to enable DNSSEC validation and caching: +# (Requires dnsmasq to be built with DNSSEC option.) +#conf-file=%%PREFIX%%/share/dnsmasq/trust-anchors.conf +#dnssec + +# Replies which are not DNSSEC signed may be legitimate, because the domain +# is unsigned, or may be forgeries. Setting this option tells dnsmasq to +# check that an unsigned reply is OK, by finding a secure proof that a DS +# record somewhere between the root and the domain does not exist. +# The cost of setting this is that even queries in unsigned domains will need +# one or more extra DNS queries to verify. +#dnssec-check-unsigned + +# Uncomment this to filter useless windows-originated DNS requests +# which can trigger dial-on-demand links needlessly. +# Note that (amongst other things) this blocks all SRV requests, +# so don't use it if you use eg Kerberos, SIP, XMMP or Google-talk. +# This option only affects forwarding, SRV records originating for +# dnsmasq (via srv-host= lines) are not suppressed by it. +#filterwin2k + +# Change this line if you want dns to get its upstream servers from +# somewhere other that /etc/resolv.conf +#resolv-file= + +# By default, dnsmasq will send queries to any of the upstream +# servers it knows about and tries to favour servers to are known +# to be up. Uncommenting this forces dnsmasq to try each query +# with each server strictly in the order they appear in +# /etc/resolv.conf +#strict-order + +# If you don't want dnsmasq to read /etc/resolv.conf or any other +# file, getting its servers from this file instead (see below), then +# uncomment this. +#no-resolv + +# If you don't want dnsmasq to poll /etc/resolv.conf or other resolv +# files for changes and re-read them then uncomment this. +#no-poll + +# Add other name servers here, with domain specs if they are for +# non-public domains. +#server=/localnet/192.168.0.1 + +# Example of routing PTR queries to nameservers: this will send all +# address->name queries for 192.168.3/24 to nameserver 10.1.2.3 +#server=/3.168.192.in-addr.arpa/10.1.2.3 + +# Add local-only domains here, queries in these domains are answered +# from /etc/hosts or DHCP only. +#local=/localnet/ + +# Add domains which you want to force to an IP address here. +# The example below send any host in double-click.net to a local +# web-server. +#address=/double-click.net/127.0.0.1 + +# --address (and --server) work with IPv6 addresses too. +#address=/www.thekelleys.org.uk/fe80::20d:60ff:fe36:f83 + +# Add the IPs of all queries to yahoo.com, google.com, and their +# subdomains to the vpn and search ipsets: +#ipset=/yahoo.com/google.com/vpn,search + +# You can control how dnsmasq talks to a server: this forces +# queries to 10.1.2.3 to be routed via eth1 +# server=10.1.2.3@eth1 + +# and this sets the source (ie local) address used to talk to +# 10.1.2.3 to 192.168.1.1 port 55 (there must be a interface with that +# IP on the machine, obviously). +# server=10.1.2.3@192.168.1.1#55 + +# If you want dnsmasq to change uid and gid to something other +# than the default, edit the following lines. +#user= +#group= + +# If you want dnsmasq to listen for DHCP and DNS requests only on +# specified interfaces (and the loopback) give the name of the +# interface (eg eth0) here. +# Repeat the line for more than one interface. +interface=wlan0 +# Or you can specify which interface _not_ to listen on +#except-interface= +# Or which to listen on by address (remember to include 127.0.0.1 if +# you use this.) +#listen-address= +# If you want dnsmasq to provide only DNS service on an interface, +# configure it as shown above, and then use the following line to +# disable DHCP and TFTP on it. +#no-dhcp-interface= + +# On systems which support it, dnsmasq binds the wildcard address, +# even when it is listening on only some interfaces. It then discards +# requests that it shouldn't reply to. This has the advantage of +# working even when interfaces come and go and change address. If you +# want dnsmasq to really bind only the interfaces it is listening on, +# uncomment this option. About the only time you may need this is when +# running another nameserver on the same machine. +#bind-interfaces + +# If you don't want dnsmasq to read /etc/hosts, uncomment the +# following line. +#no-hosts +# or if you want it to read another file, as well as /etc/hosts, use +# this. +#addn-hosts=/etc/banner_add_hosts + +# Set this (and domain: see below) if you want to have a domain +# automatically added to simple names in a hosts-file. +#expand-hosts + +# Set the domain for dnsmasq. this is optional, but if it is set, it +# does the following things. +# 1) Allows DHCP hosts to have fully qualified domain names, as long +# as the domain part matches this setting. +# 2) Sets the "domain" DHCP option thereby potentially setting the +# domain of all systems configured by DHCP +# 3) Provides the domain part for "expand-hosts" +#domain=thekelleys.org.uk + +# Set a different domain for a particular subnet +#domain=wireless.thekelleys.org.uk,192.168.2.0/24 + +# Same idea, but range rather then subnet +#domain=reserved.thekelleys.org.uk,192.68.3.100,192.168.3.200 + +# Uncomment this to enable the integrated DHCP server, you need +# to supply the range of addresses available for lease and optionally +# a lease time. If you have more than one network, you will need to +# repeat this for each network on which you want to supply DHCP +# service. +dhcp-range=192.168.1.10,192.168.1.20,12h + +# This is an example of a DHCP range where the netmask is given. This +# is needed for networks we reach the dnsmasq DHCP server via a relay +# agent. If you don't know what a DHCP relay agent is, you probably +# don't need to worry about this. +#dhcp-range=192.168.0.50,192.168.0.150,255.255.255.0,12h + +# This is an example of a DHCP range which sets a tag, so that +# some DHCP options may be set only for this network. +#dhcp-range=set:red,192.168.0.50,192.168.0.150 + +# Use this DHCP range only when the tag "green" is set. +#dhcp-range=tag:green,192.168.0.50,192.168.0.150,12h + +# Specify a subnet which can't be used for dynamic address allocation, +# is available for hosts with matching --dhcp-host lines. Note that +# dhcp-host declarations will be ignored unless there is a dhcp-range +# of some type for the subnet in question. +# In this case the netmask is implied (it comes from the network +# configuration on the machine running dnsmasq) it is possible to give +# an explicit netmask instead. +#dhcp-range=192.168.0.0,static + +# Enable DHCPv6. Note that the prefix-length does not need to be specified +# and defaults to 64 if missing/ +#dhcp-range=1234::2, 1234::500, 64, 12h + +# Do Router Advertisements, BUT NOT DHCP for this subnet. +#dhcp-range=1234::, ra-only + +# Do Router Advertisements, BUT NOT DHCP for this subnet, also try and +# add names to the DNS for the IPv6 address of SLAAC-configured dual-stack +# hosts. Use the DHCPv4 lease to derive the name, network segment and +# MAC address and assume that the host will also have an +# IPv6 address calculated using the SLAAC alogrithm. +#dhcp-range=1234::, ra-names + +# Do Router Advertisements, BUT NOT DHCP for this subnet. +# Set the lifetime to 46 hours. (Note: minimum lifetime is 2 hours.) +#dhcp-range=1234::, ra-only, 48h + +# Do DHCP and Router Advertisements for this subnet. Set the A bit in the RA +# so that clients can use SLAAC addresses as well as DHCP ones. +#dhcp-range=1234::2, 1234::500, slaac + +# Do Router Advertisements and stateless DHCP for this subnet. Clients will +# not get addresses from DHCP, but they will get other configuration information. +# They will use SLAAC for addresses. +#dhcp-range=1234::, ra-stateless + +# Do stateless DHCP, SLAAC, and generate DNS names for SLAAC addresses +# from DHCPv4 leases. +#dhcp-range=1234::, ra-stateless, ra-names + +# Do router advertisements for all subnets where we're doing DHCPv6 +# Unless overriden by ra-stateless, ra-names, et al, the router +# advertisements will have the M and O bits set, so that the clients +# get addresses and configuration from DHCPv6, and the A bit reset, so the +# clients don't use SLAAC addresses. +#enable-ra + +# Supply parameters for specified hosts using DHCP. There are lots +# of valid alternatives, so we will give examples of each. Note that +# IP addresses DO NOT have to be in the range given above, they just +# need to be on the same network. The order of the parameters in these +# do not matter, it's permissible to give name, address and MAC in any +# order. + +# Always allocate the host with Ethernet address 11:22:33:44:55:66 +# The IP address 192.168.0.60 +#dhcp-host=11:22:33:44:55:66,192.168.0.60 + +# Always set the name of the host with hardware address +# 11:22:33:44:55:66 to be "fred" +#dhcp-host=11:22:33:44:55:66,fred + +# Always give the host with Ethernet address 11:22:33:44:55:66 +# the name fred and IP address 192.168.0.60 and lease time 45 minutes +#dhcp-host=11:22:33:44:55:66,fred,192.168.0.60,45m + +# Give a host with Ethernet address 11:22:33:44:55:66 or +# 12:34:56:78:90:12 the IP address 192.168.0.60. Dnsmasq will assume +# that these two Ethernet interfaces will never be in use at the same +# time, and give the IP address to the second, even if it is already +# in use by the first. Useful for laptops with wired and wireless +# addresses. +#dhcp-host=11:22:33:44:55:66,12:34:56:78:90:12,192.168.0.60 + +# Give the machine which says its name is "bert" IP address +# 192.168.0.70 and an infinite lease +#dhcp-host=bert,192.168.0.70,infinite + +# Always give the host with client identifier 01:02:02:04 +# the IP address 192.168.0.60 +#dhcp-host=id:01:02:02:04,192.168.0.60 + +# Always give the Infiniband interface with hardware address +# 80:00:00:48:fe:80:00:00:00:00:00:00:f4:52:14:03:00:28:05:81 the +# ip address 192.168.0.61. The client id is derived from the prefix +# ff:00:00:00:00:00:02:00:00:02:c9:00 and the last 8 pairs of +# hex digits of the hardware address. +#dhcp-host=id:ff:00:00:00:00:00:02:00:00:02:c9:00:f4:52:14:03:00:28:05:81,192.168.0.61 + +# Always give the host with client identifier "marjorie" +# the IP address 192.168.0.60 +#dhcp-host=id:marjorie,192.168.0.60 + +# Enable the address given for "judge" in /etc/hosts +# to be given to a machine presenting the name "judge" when +# it asks for a DHCP lease. +#dhcp-host=judge + +# Never offer DHCP service to a machine whose Ethernet +# address is 11:22:33:44:55:66 +#dhcp-host=11:22:33:44:55:66,ignore + +# Ignore any client-id presented by the machine with Ethernet +# address 11:22:33:44:55:66. This is useful to prevent a machine +# being treated differently when running under different OS's or +# between PXE boot and OS boot. +#dhcp-host=11:22:33:44:55:66,id:* + +# Send extra options which are tagged as "red" to +# the machine with Ethernet address 11:22:33:44:55:66 +#dhcp-host=11:22:33:44:55:66,set:red + +# Send extra options which are tagged as "red" to +# any machine with Ethernet address starting 11:22:33: +#dhcp-host=11:22:33:*:*:*,set:red + +# Give a fixed IPv6 address and name to client with +# DUID 00:01:00:01:16:d2:83:fc:92:d4:19:e2:d8:b2 +# Note the MAC addresses CANNOT be used to identify DHCPv6 clients. +# Note also the they [] around the IPv6 address are obilgatory. +#dhcp-host=id:00:01:00:01:16:d2:83:fc:92:d4:19:e2:d8:b2, fred, [1234::5] + +# Ignore any clients which are not specified in dhcp-host lines +# or /etc/ethers. Equivalent to ISC "deny unknown-clients". +# This relies on the special "known" tag which is set when +# a host is matched. +#dhcp-ignore=tag:!known + +# Send extra options which are tagged as "red" to any machine whose +# DHCP vendorclass string includes the substring "Linux" +#dhcp-vendorclass=set:red,Linux + +# Send extra options which are tagged as "red" to any machine one +# of whose DHCP userclass strings includes the substring "accounts" +#dhcp-userclass=set:red,accounts + +# Send extra options which are tagged as "red" to any machine whose +# MAC address matches the pattern. +#dhcp-mac=set:red,00:60:8C:*:*:* + +# If this line is uncommented, dnsmasq will read /etc/ethers and act +# on the ethernet-address/IP pairs found there just as if they had +# been given as --dhcp-host options. Useful if you keep +# MAC-address/host mappings there for other purposes. +#read-ethers + +# Send options to hosts which ask for a DHCP lease. +# See RFC 2132 for details of available options. +# Common options can be given to dnsmasq by name: +# run "dnsmasq --help dhcp" to get a list. +# Note that all the common settings, such as netmask and +# broadcast address, DNS server and default route, are given +# sane defaults by dnsmasq. You very likely will not need +# any dhcp-options. If you use Windows clients and Samba, there +# are some options which are recommended, they are detailed at the +# end of this section. + +# Override the default route supplied by dnsmasq, which assumes the +# router is the same machine as the one running dnsmasq. +#dhcp-option=3,1.2.3.4 + +# Do the same thing, but using the option name +#dhcp-option=option:router,1.2.3.4 + +# Override the default route supplied by dnsmasq and send no default +# route at all. Note that this only works for the options sent by +# default (1, 3, 6, 12, 28) the same line will send a zero-length option +# for all other option numbers. +#dhcp-option=3 + +# Set the NTP time server addresses to 192.168.0.4 and 10.10.0.5 +#dhcp-option=option:ntp-server,192.168.0.4,10.10.0.5 + +# Send DHCPv6 option. Note [] around IPv6 addresses. +#dhcp-option=option6:dns-server,[1234::77],[1234::88] + +# Send DHCPv6 option for namservers as the machine running +# dnsmasq and another. +#dhcp-option=option6:dns-server,[::],[1234::88] + +# Ask client to poll for option changes every six hours. (RFC4242) +#dhcp-option=option6:information-refresh-time,6h + +# Set option 58 client renewal time (T1). Defaults to half of the +# lease time if not specified. (RFC2132) +#dhcp-option=option:T1:1m + +# Set option 59 rebinding time (T2). Defaults to 7/8 of the +# lease time if not specified. (RFC2132) +#dhcp-option=option:T2:2m + +# Set the NTP time server address to be the same machine as +# is running dnsmasq +#dhcp-option=42,0.0.0.0 + +# Set the NIS domain name to "welly" +#dhcp-option=40,welly + +# Set the default time-to-live to 50 +#dhcp-option=23,50 + +# Set the "all subnets are local" flag +#dhcp-option=27,1 + +# Send the etherboot magic flag and then etherboot options (a string). +#dhcp-option=128,e4:45:74:68:00:00 +#dhcp-option=129,NIC=eepro100 + +# Specify an option which will only be sent to the "red" network +# (see dhcp-range for the declaration of the "red" network) +# Note that the tag: part must precede the option: part. +#dhcp-option = tag:red, option:ntp-server, 192.168.1.1 + +# The following DHCP options set up dnsmasq in the same way as is specified +# for the ISC dhcpcd in +# http://www.samba.org/samba/ftp/docs/textdocs/DHCP-Server-Configuration.txt +# adapted for a typical dnsmasq installation where the host running +# dnsmasq is also the host running samba. +# you may want to uncomment some or all of them if you use +# Windows clients and Samba. +#dhcp-option=19,0 # option ip-forwarding off +#dhcp-option=44,0.0.0.0 # set netbios-over-TCP/IP nameserver(s) aka WINS server(s) +#dhcp-option=45,0.0.0.0 # netbios datagram distribution server +#dhcp-option=46,8 # netbios node type + +# Send an empty WPAD option. This may be REQUIRED to get windows 7 to behave. +#dhcp-option=252,"\n" + +# Send RFC-3397 DNS domain search DHCP option. WARNING: Your DHCP client +# probably doesn't support this...... +#dhcp-option=option:domain-search,eng.apple.com,marketing.apple.com + +# Send RFC-3442 classless static routes (note the netmask encoding) +#dhcp-option=121,192.168.1.0/24,1.2.3.4,10.0.0.0/8,5.6.7.8 + +# Send vendor-class specific options encapsulated in DHCP option 43. +# The meaning of the options is defined by the vendor-class so +# options are sent only when the client supplied vendor class +# matches the class given here. (A substring match is OK, so "MSFT" +# matches "MSFT" and "MSFT 5.0"). This example sets the +# mtftp address to 0.0.0.0 for PXEClients. +#dhcp-option=vendor:PXEClient,1,0.0.0.0 + +# Send microsoft-specific option to tell windows to release the DHCP lease +# when it shuts down. Note the "i" flag, to tell dnsmasq to send the +# value as a four-byte integer - that's what microsoft wants. See +# http://technet2.microsoft.com/WindowsServer/en/library/a70f1bb7-d2d4-49f0-96d6-4b7414ecfaae1033.mspx?mfr=true +#dhcp-option=vendor:MSFT,2,1i + +# Send the Encapsulated-vendor-class ID needed by some configurations of +# Etherboot to allow is to recognise the DHCP server. +#dhcp-option=vendor:Etherboot,60,"Etherboot" + +# Send options to PXELinux. Note that we need to send the options even +# though they don't appear in the parameter request list, so we need +# to use dhcp-option-force here. +# See http://syslinux.zytor.com/pxe.php#special for details. +# Magic number - needed before anything else is recognised +#dhcp-option-force=208,f1:00:74:7e +# Configuration file name +#dhcp-option-force=209,configs/common +# Path prefix +#dhcp-option-force=210,/tftpboot/pxelinux/files/ +# Reboot time. (Note 'i' to send 32-bit value) +#dhcp-option-force=211,30i + +# Set the boot filename for netboot/PXE. You will only need +# this is you want to boot machines over the network and you will need +# a TFTP server; either dnsmasq's built in TFTP server or an +# external one. (See below for how to enable the TFTP server.) +#dhcp-boot=pxelinux.0 + +# The same as above, but use custom tftp-server instead machine running dnsmasq +#dhcp-boot=pxelinux,server.name,192.168.1.100 + +# Boot for Etherboot gPXE. The idea is to send two different +# filenames, the first loads gPXE, and the second tells gPXE what to +# load. The dhcp-match sets the gpxe tag for requests from gPXE. +#dhcp-match=set:gpxe,175 # gPXE sends a 175 option. +#dhcp-boot=tag:!gpxe,undionly.kpxe +#dhcp-boot=mybootimage + +# Encapsulated options for Etherboot gPXE. All the options are +# encapsulated within option 175 +#dhcp-option=encap:175, 1, 5b # priority code +#dhcp-option=encap:175, 176, 1b # no-proxydhcp +#dhcp-option=encap:175, 177, string # bus-id +#dhcp-option=encap:175, 189, 1b # BIOS drive code +#dhcp-option=encap:175, 190, user # iSCSI username +#dhcp-option=encap:175, 191, pass # iSCSI password + +# Test for the architecture of a netboot client. PXE clients are +# supposed to send their architecture as option 93. (See RFC 4578) +#dhcp-match=peecees, option:client-arch, 0 #x86-32 +#dhcp-match=itanics, option:client-arch, 2 #IA64 +#dhcp-match=hammers, option:client-arch, 6 #x86-64 +#dhcp-match=mactels, option:client-arch, 7 #EFI x86-64 + +# Do real PXE, rather than just booting a single file, this is an +# alternative to dhcp-boot. +#pxe-prompt="What system shall I netboot?" +# or with timeout before first available action is taken: +#pxe-prompt="Press F8 for menu.", 60 + +# Available boot services. for PXE. +#pxe-service=x86PC, "Boot from local disk" + +# Loads /pxelinux.0 from dnsmasq TFTP server. +#pxe-service=x86PC, "Install Linux", pxelinux + +# Loads /pxelinux.0 from TFTP server at 1.2.3.4. +# Beware this fails on old PXE ROMS. +#pxe-service=x86PC, "Install Linux", pxelinux, 1.2.3.4 + +# Use bootserver on network, found my multicast or broadcast. +#pxe-service=x86PC, "Install windows from RIS server", 1 + +# Use bootserver at a known IP address. +#pxe-service=x86PC, "Install windows from RIS server", 1, 1.2.3.4 + +# If you have multicast-FTP available, +# information for that can be passed in a similar way using options 1 +# to 5. See page 19 of +# http://download.intel.com/design/archives/wfm/downloads/pxespec.pdf + + +# Enable dnsmasq's built-in TFTP server +#enable-tftp + +# Set the root directory for files available via FTP. +#tftp-root=/var/ftpd + +# Do not abort if the tftp-root is unavailable +#tftp-no-fail + +# Make the TFTP server more secure: with this set, only files owned by +# the user dnsmasq is running as will be send over the net. +#tftp-secure + +# This option stops dnsmasq from negotiating a larger blocksize for TFTP +# transfers. It will slow things down, but may rescue some broken TFTP +# clients. +#tftp-no-blocksize + +# Set the boot file name only when the "red" tag is set. +#dhcp-boot=tag:red,pxelinux.red-net + +# An example of dhcp-boot with an external TFTP server: the name and IP +# address of the server are given after the filename. +# Can fail with old PXE ROMS. Overridden by --pxe-service. +#dhcp-boot=/var/ftpd/pxelinux.0,boothost,192.168.0.3 + +# If there are multiple external tftp servers having a same name +# (using /etc/hosts) then that name can be specified as the +# tftp_servername (the third option to dhcp-boot) and in that +# case dnsmasq resolves this name and returns the resultant IP +# addresses in round robin fasion. This facility can be used to +# load balance the tftp load among a set of servers. +#dhcp-boot=/var/ftpd/pxelinux.0,boothost,tftp_server_name + +# Set the limit on DHCP leases, the default is 150 +#dhcp-lease-max=150 + +# The DHCP server needs somewhere on disk to keep its lease database. +# This defaults to a sane location, but if you want to change it, use +# the line below. +#dhcp-leasefile=/var/lib/misc/dnsmasq.leases + +# Set the DHCP server to authoritative mode. In this mode it will barge in +# and take over the lease for any client which broadcasts on the network, +# whether it has a record of the lease or not. This avoids long timeouts +# when a machine wakes up on a new network. DO NOT enable this if there's +# the slightest chance that you might end up accidentally configuring a DHCP +# server for your campus/company accidentally. The ISC server uses +# the same option, and this URL provides more information: +# http://www.isc.org/files/auth.html +#dhcp-authoritative + +# Run an executable when a DHCP lease is created or destroyed. +# The arguments sent to the script are "add" or "del", +# then the MAC address, the IP address and finally the hostname +# if there is one. +#dhcp-script=/bin/echo + +# Set the cachesize here. +#cache-size=150 + +# If you want to disable negative caching, uncomment this. +#no-negcache + +# Normally responses which come from /etc/hosts and the DHCP lease +# file have Time-To-Live set as zero, which conventionally means +# do not cache further. If you are happy to trade lower load on the +# server for potentially stale date, you can set a time-to-live (in +# seconds) here. +#local-ttl= + +# If you want dnsmasq to detect attempts by Verisign to send queries +# to unregistered .com and .net hosts to its sitefinder service and +# have dnsmasq instead return the correct NXDOMAIN response, uncomment +# this line. You can add similar lines to do the same for other +# registries which have implemented wildcard A records. +#bogus-nxdomain=64.94.110.11 + +# If you want to fix up DNS results from upstream servers, use the +# alias option. This only works for IPv4. +# This alias makes a result of 1.2.3.4 appear as 5.6.7.8 +#alias=1.2.3.4,5.6.7.8 +# and this maps 1.2.3.x to 5.6.7.x +#alias=1.2.3.0,5.6.7.0,255.255.255.0 +# and this maps 192.168.0.10->192.168.0.40 to 10.0.0.10->10.0.0.40 +#alias=192.168.0.10-192.168.0.40,10.0.0.0,255.255.255.0 + +# Change these lines if you want dnsmasq to serve MX records. + +# Return an MX record named "maildomain.com" with target +# servermachine.com and preference 50 +#mx-host=maildomain.com,servermachine.com,50 + +# Set the default target for MX records created using the localmx option. +#mx-target=servermachine.com + +# Return an MX record pointing to the mx-target for all local +# machines. +#localmx + +# Return an MX record pointing to itself for all local machines. +#selfmx + +# Change the following lines if you want dnsmasq to serve SRV +# records. These are useful if you want to serve ldap requests for +# Active Directory and other windows-originated DNS requests. +# See RFC 2782. +# You may add multiple srv-host lines. +# The fields are ,,,, +# If the domain part if missing from the name (so that is just has the +# service and protocol sections) then the domain given by the domain= +# config option is used. (Note that expand-hosts does not need to be +# set for this to work.) + +# A SRV record sending LDAP for the example.com domain to +# ldapserver.example.com port 389 +#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389 + +# A SRV record sending LDAP for the example.com domain to +# ldapserver.example.com port 389 (using domain=) +#domain=example.com +#srv-host=_ldap._tcp,ldapserver.example.com,389 + +# Two SRV records for LDAP, each with different priorities +#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389,1 +#srv-host=_ldap._tcp.example.com,ldapserver.example.com,389,2 + +# A SRV record indicating that there is no LDAP server for the domain +# example.com +#srv-host=_ldap._tcp.example.com + +# The following line shows how to make dnsmasq serve an arbitrary PTR +# record. This is useful for DNS-SD. (Note that the +# domain-name expansion done for SRV records _does_not +# occur for PTR records.) +#ptr-record=_http._tcp.dns-sd-services,"New Employee Page._http._tcp.dns-sd-services" + +# Change the following lines to enable dnsmasq to serve TXT records. +# These are used for things like SPF and zeroconf. (Note that the +# domain-name expansion done for SRV records _does_not +# occur for TXT records.) + +#Example SPF. +#txt-record=example.com,"v=spf1 a -all" + +#Example zeroconf +#txt-record=_http._tcp.example.com,name=value,paper=A4 + +# Provide an alias for a "local" DNS name. Note that this _only_ works +# for targets which are names from DHCP or /etc/hosts. Give host +# "bert" another name, bertrand +#cname=bertand,bert + +# For debugging purposes, log each DNS query as it passes through +# dnsmasq. +#log-queries + +# Log lots of extra information about DHCP transactions. +#log-dhcp + +# Include another lot of configuration options. +#conf-file=/etc/dnsmasq.more.conf +#conf-dir=/etc/dnsmasq.d + +# Include all the files in a directory except those ending in .bak +#conf-dir=/etc/dnsmasq.d,.bak + +# Include all files in a directory which end in .conf +#conf-dir=/etc/dnsmasq.d/,*.conf diff --git a/stage2/03-install-piaizu/files/dts/Makefile b/stage2/03-install-piaizu/files/dts/Makefile new file mode 100644 index 0000000..6f97dca --- /dev/null +++ b/stage2/03-install-piaizu/files/dts/Makefile @@ -0,0 +1,21 @@ +.phony: dts install clean + +TARGET_FS ?= / + +all: dtb + +gpio-key.dtbo: gpio-key.dts + dtc -f -I dts -O dtb -o $@ $^ + +dt-blob.bin: dt-blob.dts + dtc -I dts -O dtb -o $@ $^ + +dtb: dt-blob.bin gpio-key.dtbo + +install: dt-blob.bin gpio-key.dtbo + install -d $(TARGET_FS)/boot/ + cp -v dt-blob.bin $(TARGET_FS)/boot/ + cp -v gpio-key.dtbo $(TARGET_FS)/boot/overlays/ + +clean: + -rm -v dt-blob.bin gpio-key.dtbo diff --git a/stage2/03-install-piaizu/files/dts/dt-blob.dts b/stage2/03-install-piaizu/files/dts/dt-blob.dts new file mode 100644 index 0000000..abbf273 --- /dev/null +++ b/stage2/03-install-piaizu/files/dts/dt-blob.dts @@ -0,0 +1,1811 @@ +/dts-v1/; + +/ { + videocore { + clock_routing { + vco@PLLD { freq = <2000000000>; }; + chan@DPER { div = <8>; }; + }; + + pins_rev1 { + pin_config { + pin@default { + polarity = "active_high"; + termination = "pull_down"; + startup_state = "inactive"; + function = "input"; + }; // pin + pin@p2 { function = "i2c1"; termination = "pull_up"; }; // I2C 1 SDA + pin@p3 { function = "i2c1"; termination = "pull_up"; }; // I2C 1 SCL + pin@p5 { function = "output"; termination = "pull_down"; }; // CAM_LED + pin@p6 { function = "output"; termination = "pull_down"; }; // LAN NRESET + pin@p14 { function = "uart0"; termination = "no_pulling"; drive_strength_mA = < 8 >; }; // TX uart0 + pin@p15 { function = "uart0"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // RX uart0 + pin@p16 { function = "output"; termination = "pull_up"; polarity="active_low"; }; // activity LED + pin@p27 { function = "output"; termination = "no_pulling"; }; // Camera shutdown + pin@p40 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Left audio + pin@p45 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Right audio + pin@p46 { function = "input"; termination = "no_pulling"; }; // Hotplug + pin@p47 { function = "input"; termination = "no_pulling"; }; // SD_CARD_DETECT + pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK + pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD + pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 + pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 + pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 + pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 + }; // pin_config + + pin_defines { + pin_define@HDMI_CONTROL_ATTACHED { + type = "internal"; + number = <46>; + }; + pin_define@NUM_CAMERAS { + type = "internal"; + number = <1>; + }; + pin_define@CAMERA_0_UNICAM_PORT { + type = "internal"; + number = <1>; + }; + pin_define@CAMERA_0_I2C_PORT { + type = "internal"; + number = <1>; + }; + pin_define@CAMERA_0_SDA_PIN { + type = "internal"; + number = <2>; + }; + pin_define@CAMERA_0_SCL_PIN { + type = "internal"; + number = <3>; + }; + pin_define@CAMERA_0_SHUTDOWN { + type = "internal"; + number = <27>; + }; + pin_define@CAMERA_0_LED { + type = "internal"; + number = <5>; + }; + pin_define@FLASH_0_ENABLE { + type = "absent"; + }; + pin_define@FLASH_0_INDICATOR { + type = "absent"; + }; + pin_define@FLASH_1_ENABLE { + type = "absent"; + }; + pin_define@FLASH_1_INDICATOR { + type = "absent"; + }; + pin_define@POWER_LOW { + type = "absent"; + }; + pin_define@LEDS_DISK_ACTIVITY { + type = "internal"; + number = <16>; + }; + pin_define@LAN_RUN { + type = "internal"; + number = <6>; + }; + pin_define@SMPS_SDA { + type = "absent"; + }; + pin_define@SMPS_SCL { + type = "absent"; + }; + pin_define@ETH_CLK { + type = "absent"; + }; + pin_define@USB_LIMIT_1A2 { + type = "absent"; + }; + pin_define@SIO_1V8_SEL { + type = "absent"; + }; + pin_define@PWML { + type = "internal"; + number = <40>; + }; + pin_define@PWMR { + type = "internal"; + number = <45>; + }; + pin_define@SAFE_MODE { + type = "internal"; + number = <1>; + }; + pin_define@SD_CARD_DETECT { + type = "internal"; + number = <47>; + }; + pin_define@ID_SDA { + type = "absent"; + }; + pin_define@ID_SCL { + type = "absent"; + }; + pin_define@DISPLAY_I2C_PORT { + type = "internal"; + number = <0>; + }; + pin_define@DISPLAY_SDA { + type = "internal"; + number = <0>; + }; + pin_define@DISPLAY_SCL { + type = "internal"; + number = <1>; + }; + }; // pin_defines + }; // pins_rev1 + + pins_rev2 { + pin_config { + pin@default { + polarity = "active_high"; + termination = "pull_down"; + startup_state = "inactive"; + function = "input"; + }; // pin + pin@p0 { function = "i2c0"; termination = "pull_up"; }; // I2C 0 SDA + pin@p1 { function = "i2c0"; termination = "pull_up"; }; // I2C 0 SCL + pin@p5 { function = "output"; termination = "pull_down"; }; // CAM_LED + pin@p6 { function = "output"; termination = "pull_down"; }; // LAN NRESET + pin@p14 { function = "uart0"; termination = "no_pulling"; drive_strength_mA = < 8 >; }; // TX uart0 + pin@p15 { function = "uart0"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // RX uart0 + pin@p16 { function = "output"; termination = "pull_up"; polarity = "active_low"; }; // activity LED + pin@p21 { function = "output"; termination = "no_pulling"; }; // Camera shutdown + pin@p40 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Left audio + pin@p45 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Right audio + pin@p46 { function = "input"; termination = "no_pulling"; }; // Hotplug + pin@p47 { function = "input"; termination = "no_pulling"; }; // SD_CARD_DETECT + pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK + pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD + pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 + pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 + pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 + pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 + }; // pin_config + + pin_defines { + pin_define@HDMI_CONTROL_ATTACHED { + type = "internal"; + number = <46>; + }; + pin_define@NUM_CAMERAS { + type = "internal"; + number = <1>; + }; + pin_define@CAMERA_0_I2C_PORT { + type = "internal"; + number = <0>; + }; + pin_define@CAMERA_0_SDA_PIN { + type = "internal"; + number = <0>; + }; + pin_define@CAMERA_0_SCL_PIN { + type = "internal"; + number = <1>; + }; + pin_define@CAMERA_0_SHUTDOWN { + type = "internal"; + number = <21>; + }; + pin_define@CAMERA_0_UNICAM_PORT { + type = "internal"; + number = <1>; + }; + pin_define@CAMERA_0_LED { + type = "internal"; + number = <5>; + }; + pin_define@FLASH_0_ENABLE { + type = "absent"; + }; + pin_define@FLASH_0_INDICATOR { + type = "absent"; + }; + pin_define@FLASH_1_ENABLE { + type = "absent"; + }; + pin_define@FLASH_1_INDICATOR { + type = "absent"; + }; + pin_define@POWER_LOW { + type = "absent"; + }; + pin_define@LEDS_DISK_ACTIVITY { + type = "internal"; + number = <16>; + }; + pin_define@LAN_RUN { + type = "internal"; + number = <6>; + }; + pin_define@SMPS_SDA { + type = "absent"; + }; + pin_define@SMPS_SCL { + type = "absent"; + }; + pin_define@ETH_CLK { + type = "absent"; + }; + pin_define@USB_LIMIT_1A2 { + type = "absent"; + }; + pin_define@SIO_1V8_SEL { + type = "absent"; + }; + pin_define@PWML { + type = "internal"; + number = <40>; + }; + pin_define@PWMR { + type = "internal"; + number = <45>; + }; + pin_define@SAFE_MODE { + type = "internal"; + number = <3>; + }; + pin_define@SD_CARD_DETECT { + type = "internal"; + number = <47>; + }; + pin_define@ID_SDA { + type = "absent"; + }; + pin_define@ID_SCL { + type = "absent"; + }; + pin_define@DISPLAY_I2C_PORT { + type = "internal"; + number = <1>; + }; + pin_define@DISPLAY_SDA { + type = "internal"; + number = <2>; + }; + pin_define@DISPLAY_SCL { + type = "internal"; + number = <3>; + }; + }; // pin_defines + }; // pins + + pins_bplus1 { // Pi 1 Model B+ rev 1.1 + pin_config { + pin@default { + polarity = "active_high"; + termination = "pull_down"; + startup_state = "inactive"; + function = "input"; + }; // pin + pin@p14 { function = "uart0"; termination = "no_pulling"; drive_strength_mA = < 8 >; }; // TX uart0 + pin@p15 { function = "uart0"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // RX uart0 + pin@p28 { function = "input"; termination = "pull_up"; }; // I2C 0 SDA + pin@p29 { function = "input"; termination = "pull_up"; }; // I2C 0 SCL + pin@p31 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Power low + pin@p32 { function = "output"; termination = "pull_down"; }; // Camera LED + pin@p35 { function = "output"; termination = "pull_down"; }; // LAN_RUN + pin@p38 { function = "output"; termination = "no_pulling"; }; // USB current limit (0=600mA, 1=1200mA) + pin@p40 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Right audio + pin@p41 { function = "output"; termination = "no_pulling"; }; // Camera shutdown + pin@p44 { function = "gp_clk"; termination = "pull_down"; }; // ETH_CLK - Ethernet 25MHz output + pin@p45 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Left audio + pin@p46 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Hotplug + pin@p47 { function = "output"; termination = "pull_down"; }; // activity LED + pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK + pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD + pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 + pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 + pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 + pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 + }; // pin_config + + pin_defines { + pin_define@HDMI_CONTROL_ATTACHED { + type = "internal"; + number = <46>; + }; + pin_define@NUM_CAMERAS { + type = "internal"; + number = <1>; + }; + pin_define@CAMERA_0_I2C_PORT { + type = "internal"; + number = <0>; + }; + pin_define@CAMERA_0_SDA_PIN { + type = "internal"; + number = <28>; + }; + pin_define@CAMERA_0_SCL_PIN { + type = "internal"; + number = <29>; + }; + pin_define@CAMERA_0_SHUTDOWN { + type = "internal"; + number = <41>; + }; + pin_define@CAMERA_0_UNICAM_PORT { + type = "internal"; + number = <1>; + }; + pin_define@CAMERA_0_LED { + type = "internal"; + number = <32>; + }; + pin_define@FLASH_0_ENABLE { + type = "absent"; + }; + pin_define@FLASH_0_INDICATOR { + type = "absent"; + }; + pin_define@FLASH_1_ENABLE { + type = "absent"; + }; + pin_define@FLASH_1_INDICATOR { + type = "absent"; + }; + pin_define@POWER_LOW { + type = "internal"; + number = <31>; + }; + pin_define@LEDS_DISK_ACTIVITY { + type = "internal"; + number = <47>; + }; + pin_define@LAN_RUN { + type = "internal"; + number = <35>; + }; + pin_define@SMPS_SDA { + type = "absent"; + }; + pin_define@SMPS_SCL { + type = "absent"; + }; + pin_define@ETH_CLK { + type = "internal"; + number = <44>; + }; + pin_define@USB_LIMIT_1A2 { + type = "absent"; + }; + pin_define@SIO_1V8_SEL { + type = "internal"; + number = <38>; + }; + pin_define@PWML { + type = "internal"; + number = <45>; + }; + pin_define@PWMR { + type = "internal"; + number = <40>; + }; + pin_define@SAFE_MODE { + type = "internal"; + number = <3>; + }; + pin_define@SD_CARD_DETECT { + type = "absent"; + }; + pin_define@ID_SDA { + type = "internal"; + number = <0>; + }; + pin_define@ID_SCL { + type = "internal"; + number = <1>; + }; + pin_define@DISPLAY_I2C_PORT { + type = "internal"; + number = <0>; + }; + pin_define@DISPLAY_SDA { + type = "internal"; + number = <28>; + }; + pin_define@DISPLAY_SCL { + type = "internal"; + number = <29>; + }; + }; // pin_defines + }; // pins + + pins_bplus2 { // Pi 1 Model B+ rev 1.2 + pin_config { + pin@default { + polarity = "active_high"; + termination = "pull_down"; + startup_state = "inactive"; + function = "input"; + }; // pin + pin@p14 { function = "uart0"; termination = "no_pulling"; drive_strength_mA = < 8 >; }; // TX uart0 + pin@p15 { function = "uart0"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // RX uart0 + pin@p28 { function = "input"; termination = "pull_up"; }; // I2C 0 SDA + pin@p29 { function = "input"; termination = "pull_up"; }; // I2C 0 SCL + pin@p31 { function = "output"; termination = "pull_down"; }; // LAN_RUN + pin@p32 { function = "output"; termination = "pull_down"; }; // Camera LED + pin@p35 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Power low + pin@p38 { function = "output"; termination = "no_pulling"; }; // USB current limit (0=600mA, 1=1200mA) + pin@p40 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Right audio + pin@p41 { function = "output"; termination = "no_pulling"; }; // Camera shutdown + pin@p44 { function = "gp_clk"; termination = "pull_down"; }; // ETH_CLK - Ethernet 25MHz output + pin@p45 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Left audio + pin@p46 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Hotplug + pin@p47 { function = "output"; termination = "pull_down"; }; // activity LED + pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK + pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD + pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 + pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 + pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 + pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 + }; // pin_config + + pin_defines { + pin_define@HDMI_CONTROL_ATTACHED { + type = "internal"; + number = <46>; + }; + pin_define@NUM_CAMERAS { + type = "internal"; + number = <1>; + }; + pin_define@CAMERA_0_I2C_PORT { + type = "internal"; + number = <0>; + }; + pin_define@CAMERA_0_SDA_PIN { + type = "internal"; + number = <28>; + }; + pin_define@CAMERA_0_SCL_PIN { + type = "internal"; + number = <29>; + }; + pin_define@CAMERA_0_SHUTDOWN { + type = "internal"; + number = <41>; + }; + pin_define@CAMERA_0_UNICAM_PORT { + type = "internal"; + number = <1>; + }; + pin_define@CAMERA_0_LED { + type = "internal"; + number = <32>; + }; + pin_define@FLASH_0_ENABLE { + type = "absent"; + }; + pin_define@FLASH_0_INDICATOR { + type = "absent"; + }; + pin_define@FLASH_1_ENABLE { + type = "absent"; + }; + pin_define@FLASH_1_INDICATOR { + type = "absent"; + }; + pin_define@POWER_LOW { + type = "internal"; + number = <35>; + }; + pin_define@LEDS_DISK_ACTIVITY { + type = "internal"; + number = <47>; + }; + pin_define@LAN_RUN { + type = "internal"; + number = <31>; + }; + pin_define@SMPS_SDA { + type = "absent"; + }; + pin_define@SMPS_SCL { + type = "absent"; + }; + pin_define@ETH_CLK { + type = "internal"; + number = <44>; + }; + pin_define@USB_LIMIT_1A2 { + type = "internal"; + number = <38>; + }; + pin_define@SIO_1V8_SEL { + type = "absent"; + }; + pin_define@PWML { + type = "internal"; + number = <45>; + }; + pin_define@PWMR { + type = "internal"; + number = <40>; + }; + pin_define@SAFE_MODE { + type = "internal"; + number = <3>; + }; + pin_define@SD_CARD_DETECT { + type = "absent"; + }; + pin_define@ID_SDA { + type = "internal"; + number = <0>; + }; + pin_define@ID_SCL { + type = "internal"; + number = <1>; + }; + pin_define@DISPLAY_I2C_PORT { + type = "internal"; + number = <0>; + }; + pin_define@DISPLAY_SDA { + type = "internal"; + number = <28>; + }; + pin_define@DISPLAY_SCL { + type = "internal"; + number = <29>; + }; + }; // pin_defines + }; // pins + + pins_aplus { + pin_config { + pin@default { + polarity = "active_high"; + termination = "pull_down"; + startup_state = "inactive"; + function = "input"; + }; // pin + pin@p14 { function = "uart0"; termination = "no_pulling"; drive_strength_mA = < 8 >; }; // TX uart0 + pin@p15 { function = "uart0"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // RX uart0 + pin@p28 { function = "input"; termination = "pull_up"; }; // I2C 0 SDA + pin@p29 { function = "input"; termination = "pull_up"; }; // I2C 0 SCL + pin@p32 { function = "output"; termination = "pull_down"; }; // Camera LED + pin@p35 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Power low + pin@p38 { function = "output"; termination = "no_pulling"; }; // USB current limit (0=600mA, 1=1200mA) + pin@p40 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Right audio + pin@p41 { function = "output"; termination = "no_pulling"; }; // Camera shutdown + pin@p45 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Left audio + pin@p46 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Hotplug + pin@p47 { function = "output"; termination = "pull_down"; }; // activity LED + pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK + pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD + pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 + pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 + pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 + pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 + }; // pin_config + + pin_defines { + pin_define@HDMI_CONTROL_ATTACHED { + type = "internal"; + number = <46>; + }; + pin_define@NUM_CAMERAS { + type = "internal"; + number = <1>; + }; + pin_define@CAMERA_0_I2C_PORT { + type = "internal"; + number = <0>; + }; + pin_define@CAMERA_0_SDA_PIN { + type = "internal"; + number = <28>; + }; + pin_define@CAMERA_0_SCL_PIN { + type = "internal"; + number = <29>; + }; + pin_define@CAMERA_0_SHUTDOWN { + type = "internal"; + number = <41>; + }; + pin_define@CAMERA_0_UNICAM_PORT { + type = "internal"; + number = <1>; + }; + pin_define@CAMERA_0_LED { + type = "internal"; + number = <32>; + }; + pin_define@FLASH_0_ENABLE { + type = "absent"; + }; + pin_define@FLASH_0_INDICATOR { + type = "absent"; + }; + pin_define@FLASH_1_ENABLE { + type = "absent"; + }; + pin_define@FLASH_1_INDICATOR { + type = "absent"; + }; + pin_define@POWER_LOW { + type = "internal"; + number = <35>; + }; + pin_define@LEDS_DISK_ACTIVITY { + type = "internal"; + number = <47>; + }; + pin_define@LAN_RUN { + type = "absent"; + }; + pin_define@SMPS_SDA { + type = "absent"; + }; + pin_define@SMPS_SCL { + type = "absent"; + }; + pin_define@ETH_CLK { + type = "absent"; + }; + pin_define@USB_LIMIT_1A2 { + type = "internal"; + number = <38>; + }; + pin_define@SIO_1V8_SEL { + type = "absent"; + }; + pin_define@PWML { + type = "internal"; + number = <45>; + }; + pin_define@PWMR { + type = "internal"; + number = <40>; + }; + pin_define@SAFE_MODE { + type = "internal"; + number = <3>; + }; + pin_define@SD_CARD_DETECT { + type = "absent"; + }; + pin_define@ID_SDA { + type = "internal"; + number = <0>; + }; + pin_define@ID_SCL { + type = "internal"; + number = <1>; + }; + pin_define@DISPLAY_I2C_PORT { + type = "internal"; + number = <0>; + }; + pin_define@DISPLAY_SDA { + type = "internal"; + number = <28>; + }; + pin_define@DISPLAY_SCL { + type = "internal"; + number = <29>; + }; + }; // pin_defines + }; // pins + + pins_2b1 { // Pi 2 Model B rev 1.0 + pin_config { + pin@default { + polarity = "active_high"; + termination = "pull_down"; + startup_state = "inactive"; + function = "input"; + }; // pin + pin@p14 { function = "uart0"; termination = "no_pulling"; drive_strength_mA = < 8 >; }; // TX uart0 + pin@p15 { function = "uart0"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // RX uart0 + pin@p28 { function = "input"; termination = "pull_up"; }; // I2C 0 SDA / SMPS_SDA + pin@p29 { function = "input"; termination = "pull_up"; }; // I2C 0 SCL / SMPS_SCL + pin@p31 { function = "output"; termination = "pull_down"; }; // LAN_RUN + pin@p32 { function = "output"; termination = "pull_down"; }; // Camera LED + pin@p35 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Power low + pin@p38 { function = "output"; termination = "no_pulling"; }; // USB current limit (0=600mA, 1=1200mA) + pin@p40 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Right audio + pin@p41 { function = "output"; termination = "no_pulling"; }; // Camera shutdown + pin@p44 { function = "gp_clk"; termination = "pull_down"; }; // ETH_CLK - Ethernet 25MHz output + pin@p45 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Left audio + pin@p46 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Hotplug + pin@p47 { function = "output"; termination = "pull_down"; }; // activity LED + pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK + pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD + pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 + pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 + pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 + pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 + }; // pin_config + + pin_defines { + pin_define@HDMI_CONTROL_ATTACHED { + type = "internal"; + number = <46>; + }; + pin_define@NUM_CAMERAS { + type = "internal"; + number = <1>; + }; + pin_define@CAMERA_0_I2C_PORT { + type = "internal"; + number = <0>; + }; + pin_define@CAMERA_0_SDA_PIN { + type = "internal"; + number = <28>; + }; + pin_define@CAMERA_0_SCL_PIN { + type = "internal"; + number = <29>; + }; + pin_define@CAMERA_0_SHUTDOWN { + type = "internal"; + number = <41>; + }; + pin_define@CAMERA_0_UNICAM_PORT { + type = "internal"; + number = <1>; + }; + pin_define@CAMERA_0_LED { + type = "internal"; + number = <32>; + }; + pin_define@FLASH_0_ENABLE { + type = "absent"; + }; + pin_define@FLASH_0_INDICATOR { + type = "absent"; + }; + pin_define@FLASH_1_ENABLE { + type = "absent"; + }; + pin_define@FLASH_1_INDICATOR { + type = "absent"; + }; + pin_define@POWER_LOW { + type = "internal"; + number = <35>; + }; + pin_define@LEDS_DISK_ACTIVITY { + type = "internal"; + number = <47>; + }; + pin_define@LAN_RUN { + type = "internal"; + number = <31>; + }; + pin_define@SMPS_SDA { + type = "internal"; + number = <28>; + }; + pin_define@SMPS_SCL { + type = "internal"; + number = <29>; + }; + pin_define@ETH_CLK { + type = "internal"; + number = <44>; + }; + pin_define@USB_LIMIT_1A2 { + type = "internal"; + number = <38>; + }; + pin_define@SIO_1V8_SEL { + type = "absent"; + }; + pin_define@PWML { + type = "internal"; + number = <45>; + }; + pin_define@PWMR { + type = "internal"; + number = <40>; + }; + pin_define@SAFE_MODE { + type = "internal"; + number = <3>; + }; + pin_define@SD_CARD_DETECT { + type = "absent"; + }; + pin_define@ID_SDA { + type = "internal"; + number = <0>; + }; + pin_define@ID_SCL { + type = "internal"; + number = <1>; + }; + pin_define@DISPLAY_I2C_PORT { + type = "internal"; + number = <0>; + }; + pin_define@DISPLAY_SDA { + type = "internal"; + number = <28>; + }; + pin_define@DISPLAY_SCL { + type = "internal"; + number = <29>; + }; + }; // pin_defines + }; // pins + + pins_2b2 { // Pi 2 Model B rev 1.1 + pin_config { + pin@default { + polarity = "active_high"; + termination = "pull_down"; + startup_state = "inactive"; + function = "input"; + }; // pin + pin@p14 { function = "uart0"; termination = "no_pulling"; drive_strength_mA = < 8 >; }; // TX uart0 + pin@p15 { function = "uart0"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // RX uart0 + pin@p28 { function = "input"; termination = "pull_up"; }; // I2C 0 SDA + pin@p29 { function = "input"; termination = "pull_up"; }; // I2C 0 SCL + pin@p31 { function = "output"; termination = "pull_down"; }; // LAN_RUN + pin@p32 { function = "output"; termination = "pull_down"; }; // Camera LED + pin@p35 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Power low + pin@p38 { function = "output"; termination = "no_pulling"; }; // USB current limit (0=600mA, 1=1200mA) + pin@p40 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Right audio + pin@p41 { function = "output"; termination = "no_pulling"; }; // Camera shutdown + // Communicate with the SMPS by "bit-bashing" the I2C protocol on GPIOs 42 and 43 + pin@p42 { function = "output"; termination = "pull_up"; }; // SMPS_SCL + pin@p43 { function = "input"; termination = "no_pulling"; }; // SMPS_SDA + pin@p44 { function = "gp_clk"; termination = "pull_down"; }; // ETH_CLK - Ethernet 25MHz output + pin@p45 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Left audio + pin@p46 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Hotplug + pin@p47 { function = "output"; termination = "pull_down"; }; // activity LED + pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK + pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD + pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 + pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 + pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 + pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 + }; // pin_config + + pin_defines { + pin_define@HDMI_CONTROL_ATTACHED { + type = "internal"; + number = <46>; + }; + pin_define@NUM_CAMERAS { + type = "internal"; + number = <1>; + }; + pin_define@CAMERA_0_I2C_PORT { + type = "internal"; + number = <0>; + }; + pin_define@CAMERA_0_SDA_PIN { + type = "internal"; + number = <28>; + }; + pin_define@CAMERA_0_SCL_PIN { + type = "internal"; + number = <29>; + }; + pin_define@CAMERA_0_SHUTDOWN { + type = "internal"; + number = <41>; + }; + pin_define@CAMERA_0_UNICAM_PORT { + type = "internal"; + number = <1>; + }; + pin_define@CAMERA_0_LED { + type = "internal"; + number = <32>; + }; + pin_define@FLASH_0_ENABLE { + type = "absent"; + }; + pin_define@FLASH_0_INDICATOR { + type = "absent"; + }; + pin_define@FLASH_1_ENABLE { + type = "absent"; + }; + pin_define@FLASH_1_INDICATOR { + type = "absent"; + }; + pin_define@POWER_LOW { + type = "internal"; + number = <35>; + }; + pin_define@LEDS_DISK_ACTIVITY { + type = "internal"; + number = <47>; + }; + pin_define@LAN_RUN { + type = "internal"; + number = <31>; + }; + pin_define@SMPS_SDA { + type = "internal"; + number = <43>; + }; + pin_define@SMPS_SCL { + type = "internal"; + number = <42>; + }; + pin_define@ETH_CLK { + type = "internal"; + number = <44>; + }; + pin_define@USB_LIMIT_1A2 { + type = "internal"; + number = <38>; + }; + pin_define@SIO_1V8_SEL { + type = "absent"; + }; + pin_define@PWML { + type = "internal"; + number = <45>; + }; + pin_define@PWMR { + type = "internal"; + number = <40>; + }; + pin_define@SAFE_MODE { + type = "internal"; + number = <3>; + }; + pin_define@SD_CARD_DETECT { + type = "absent"; + }; + pin_define@ID_SDA { + type = "internal"; + number = <0>; + }; + pin_define@ID_SCL { + type = "internal"; + number = <1>; + }; + pin_define@DISPLAY_I2C_PORT { + type = "internal"; + number = <0>; + }; + pin_define@DISPLAY_SDA { + type = "internal"; + number = <28>; + }; + pin_define@DISPLAY_SCL { + type = "internal"; + number = <29>; + }; + }; // pin_defines + }; // pins + + pins_3b1 { // Pi 3 Model B rev 1.0 + pin_config { + pin@default { + polarity = "active_high"; + termination = "pull_down"; + startup_state = "inactive"; + function = "input"; + }; // pin + pin@p0 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //CLK + pin@p1 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //DEN + pin@p2 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //VSYN + pin@p3 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //HSYN +// pin@p4 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL0 +// pin@p5 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL1 +// pin@p6 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL2 +// pin@p7 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL3 +// pin@p8 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL4 +// pin@p9 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL5 +// pin@p10 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL6 +// pin@p11 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL7 + pin@p12 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR0 + pin@p13 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR1 + pin@p14 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR2 + pin@p15 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR3 + pin@p16 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR4 + pin@p17 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR5 + pin@p18 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR6 + pin@p19 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR7 +// pin@p20 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD0 +// pin@p21 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD1 +// pin@p22 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD2 +// pin@p23 { function = "input"; termination = "pull_up"; drive_strength_mA = < 0 >; }; //RD3 +// pin@p24 { function = "input"; termination = "pull_up"; drive_strength_mA = < 0 >; }; //RD4 +// pin@p25 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD5 +// pin@p26 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD6 +// pin@p27 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD7 + + + pin@p34 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; + pin@p35 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; + pin@p36 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; + pin@p37 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; + pin@p38 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; + pin@p39 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; + pin@p40 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Right audio + pin@p41 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Left audio + pin@p42 { function = "gp_clk"; termination = "pull_down"; }; // ETH_CLK - Ethernet 25MHz output + pin@p43 { function = "gp_clk"; termination = "pull_down"; }; // WIFI_CLK - Wifi 32kHz output + pin@p44 { function = "input"; termination = "pull_up"; }; // I2C 0 SDA + pin@p45 { function = "input"; termination = "pull_up"; }; // I2C 0 SCL + pin@p47 { function = "output"; termination = "pull_down"; }; // activity LED + pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK + pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD + pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 + pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 + pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 + pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 + pin@p128 { function = "output"; termination = "no_pulling"; }; // BT_ON + pin@p129 { function = "output"; termination = "no_pulling"; }; // WL_ON + pin@p130 { function = "output"; termination = "no_pulling"; }; // Status LED + pin@p131 { function = "output"; termination = "no_pulling"; }; // LAN_RUN + pin@p132 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Hotplug + pin@p133 { function = "output"; termination = "no_pulling"; }; // Camera LED + pin@p134 { function = "output"; termination = "no_pulling"; }; // Camera shutdown + pin@p135 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Power low + }; // pin_config + + pin_defines { + pin_define@HDMI_CONTROL_ATTACHED { + type = "external"; + number = <4>; + }; + pin_define@NUM_CAMERAS { + type = "internal"; + number = <1>; + }; + pin_define@CAMERA_0_I2C_PORT { + type = "internal"; + number = <0>; + }; + pin_define@CAMERA_0_SDA_PIN { + type = "internal"; + number = <44>; + }; + pin_define@CAMERA_0_SCL_PIN { + type = "internal"; + number = <45>; + }; + pin_define@CAMERA_0_SHUTDOWN { + type = "external"; + number = <6>; + }; + pin_define@CAMERA_0_UNICAM_PORT { + type = "internal"; + number = <1>; + }; + pin_define@CAMERA_0_LED { + type = "external"; + number = <5>; + }; + pin_define@FLASH_0_ENABLE { + type = "absent"; + }; + pin_define@FLASH_0_INDICATOR { + type = "absent"; + }; + pin_define@FLASH_1_ENABLE { + type = "absent"; + }; + pin_define@FLASH_1_INDICATOR { + type = "absent"; + }; + pin_define@POWER_LOW { + type = "external"; + number = <7>; + }; + pin_define@LEDS_DISK_ACTIVITY { + type = "internal"; + number = <47>; + }; + pin_define@LAN_RUN { + type = "external"; + number = <3>; + }; + pin_define@BT_ON { + type = "external"; + number = <0>; + }; + pin_define@WL_ON { + type = "external"; + number = <1>; + }; + pin_define@SMPS_SDA { + type = "internal"; + number = <44>; + }; + pin_define@SMPS_SCL { + type = "internal"; + number = <45>; + }; + pin_define@ETH_CLK { + type = "internal"; + number = <42>; + }; + pin_define@WL_LPO_CLK { + type = "internal"; + number = <43>; + }; + pin_define@USB_LIMIT_1A2 { + type = "absent"; + }; + pin_define@SIO_1V8_SEL { + type = "absent"; + }; + pin_define@PWML { + type = "internal"; + number = <41>; + }; + pin_define@PWMR { + type = "internal"; + number = <40>; + }; + pin_define@SAFE_MODE { + type = "absent"; + }; + pin_define@SD_CARD_DETECT { + type = "absent"; + }; + pin_define@ID_SDA { + type = "internal"; + number = <0>; + }; + pin_define@ID_SCL { + type = "internal"; + number = <1>; + }; + pin_define@DISPLAY_I2C_PORT { + type = "internal"; + number = <0>; + }; + pin_define@DISPLAY_SDA { + type = "internal"; + number = <44>; + }; + pin_define@DISPLAY_SCL { + type = "internal"; + number = <45>; + }; + }; // pin_defines + }; // pins + + pins_3b2 { // Pi 3 Model B rev 1.2 + pin_config { + pin@default { + polarity = "active_high"; + termination = "pull_down"; + startup_state = "inactive"; + function = "input"; + }; // pin + pin@p0 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //CLK + pin@p1 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //DEN + pin@p2 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //VSYN + pin@p3 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //HSYN +// pin@p4 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL0 +// pin@p5 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL1 +// pin@p6 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL2 +// pin@p7 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL3 +// pin@p8 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL4 +// pin@p9 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL5 +// pin@p10 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL6 +// pin@p11 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL7 + pin@p12 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR0 + pin@p13 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR1 + pin@p14 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR2 + pin@p15 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR3 + pin@p16 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR4 + pin@p17 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR5 + pin@p18 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR6 + pin@p19 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR7 +// pin@p20 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD0 +// pin@p21 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD1 +// pin@p22 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD2 +// pin@p23 { function = "input"; termination = "pull_up"; drive_strength_mA = < 0 >; }; //RD3 +// pin@p24 { function = "input"; termination = "pull_up"; drive_strength_mA = < 0 >; }; //RD4 +// pin@p25 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD5 +// pin@p26 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD6 +// pin@p27 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD7 + + pin@p34 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; + pin@p35 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; + pin@p36 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; + pin@p37 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; + pin@p38 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; + pin@p39 { function = "input"; termination = "pull_up"; drive_strength_mA = < 8 >; }; + pin@p40 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Right audio + pin@p41 { function = "pwm"; termination = "no_pulling"; drive_strength_mA = < 16 >; }; // Left audio + pin@p42 { function = "gp_clk"; termination = "pull_down"; }; // ETH_CLK - Ethernet 25MHz output + pin@p43 { function = "gp_clk"; termination = "pull_down"; }; // WIFI_CLK - Wifi 32kHz output + pin@p44 { function = "input"; termination = "pull_up"; }; // I2C 0 SDA + pin@p45 { function = "input"; termination = "pull_up"; }; // I2C 0 SCL + pin@p46 { function = "input"; termination = "pull_up"; }; // SMPS_SCL + pin@p47 { function = "input"; termination = "pull_up"; }; // SMPS_SDA + pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK + pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD + pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 + pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 + pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 + pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 + pin@p128 { function = "output"; termination = "no_pulling"; }; // BT_ON + pin@p129 { function = "output"; termination = "no_pulling"; }; // WL_ON + pin@p130 { function = "output"; termination = "no_pulling"; }; // ACT_LED + pin@p131 { function = "output"; termination = "no_pulling"; }; // LAN_RUN + pin@p132 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Hotplug + pin@p133 { function = "output"; termination = "no_pulling"; }; // Camera LED + pin@p134 { function = "output"; termination = "no_pulling"; }; // Camera shutdown + pin@p135 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Power low + }; // pin_config + + pin_defines { + pin_define@HDMI_CONTROL_ATTACHED { + type = "external"; + number = <4>; + }; + pin_define@NUM_CAMERAS { + type = "internal"; + number = <1>; + }; + pin_define@CAMERA_0_I2C_PORT { + type = "internal"; + number = <0>; + }; + pin_define@CAMERA_0_SDA_PIN { + type = "internal"; + number = <44>; + }; + pin_define@CAMERA_0_SCL_PIN { + type = "internal"; + number = <45>; + }; + pin_define@CAMERA_0_SHUTDOWN { + type = "external"; + number = <5>; + }; + pin_define@CAMERA_0_UNICAM_PORT { + type = "internal"; + number = <1>; + }; + pin_define@CAMERA_0_LED { + type = "external"; + number = <6>; + }; + pin_define@FLASH_0_ENABLE { + type = "absent"; + }; + pin_define@FLASH_0_INDICATOR { + type = "absent"; + }; + pin_define@FLASH_1_ENABLE { + type = "absent"; + }; + pin_define@FLASH_1_INDICATOR { + type = "absent"; + }; + pin_define@POWER_LOW { + type = "external"; + number = <7>; + }; + pin_define@LEDS_DISK_ACTIVITY { + type = "external"; + number = <2>; + }; + pin_define@LAN_RUN { + type = "external"; + number = <3>; + }; + pin_define@BT_ON { + type = "external"; + number = <0>; + }; + pin_define@WL_ON { + type = "external"; + number = <1>; + }; + pin_define@SMPS_SDA { + type = "internal"; + number = <46>; + }; + pin_define@SMPS_SCL { + type = "internal"; + number = <47>; + }; + pin_define@ETH_CLK { + type = "internal"; + number = <42>; + }; + pin_define@WL_LPO_CLK { + type = "internal"; + number = <43>; + }; + pin_define@USB_LIMIT_1A2 { + type = "absent"; + }; + pin_define@SIO_1V8_SEL { + type = "absent"; + }; + pin_define@PWML { + type = "internal"; + number = <41>; + }; + pin_define@PWMR { + type = "internal"; + number = <40>; + }; + pin_define@SAFE_MODE { + type = "absent"; + }; + pin_define@SD_CARD_DETECT { + type = "absent"; + }; + pin_define@ID_SDA { + type = "internal"; + number = <0>; + }; + pin_define@ID_SCL { + type = "internal"; + number = <1>; + }; + pin_define@DISPLAY_I2C_PORT { + type = "internal"; + number = <0>; + }; + pin_define@DISPLAY_SDA { + type = "internal"; + number = <44>; + }; + pin_define@DISPLAY_SCL { + type = "internal"; + number = <45>; + }; + }; // pin_defines + }; // pins + + pins_cm3 { // Pi 3 CM3 + pin_config { + pin@default { + polarity = "active_high"; + termination = "pull_down"; + startup_state = "inactive"; + function = "input"; + }; // pin + pin@p14 { function = "uart0"; termination = "no_pulling"; drive_strength_mA = < 8 >; }; // TX uart0 + pin@p15 { function = "uart0"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // RX uart0 + pin@p46 { function = "input"; termination = "pull_up"; }; // SMPS_SCL + pin@p47 { function = "input"; termination = "pull_up"; }; // SMPS_SDA + pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK + pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD + pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 + pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 + pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 + pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 + pin@p128 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Hotplug + pin@p129 { function = "output"; termination = "no_pulling"; polarity = "active_low"; }; // EMMC_ENABLE_N + }; // pin_config + + pin_defines { + pin_define@HDMI_CONTROL_ATTACHED { + type = "external"; + number = <0>; + }; + pin_define@EMMC_ENABLE { + type = "external"; + number = <1>; + }; + pin_define@NUM_CAMERAS { + type = "internal"; + number = <0>; + }; + pin_define@POWER_LOW { + type = "absent"; + }; + pin_define@LEDS_DISK_ACTIVITY { + type = "absent"; + }; + pin_define@LAN_RUN { + type = "absent"; + }; + pin_define@SMPS_SDA { + type = "internal"; + number = <46>; + }; + pin_define@SMPS_SCL { + type = "internal"; + number = <47>; + }; + pin_define@ETH_CLK { + type = "absent"; + }; + pin_define@WL_LPO_CLK { + type = "absent"; + }; + pin_define@USB_LIMIT_1A2 { + type = "absent"; + }; + pin_define@SIO_1V8_SEL { + type = "absent"; + }; + pin_define@PWML { + type = "absent"; + }; + pin_define@PWMR { + type = "absent"; + }; + pin_define@SAFE_MODE { + type = "absent"; + }; + pin_define@SD_CARD_DETECT { + type = "absent"; + }; + pin_define@ID_SDA { + type = "absent"; + }; + pin_define@ID_SCL { + type = "absent"; + }; + }; // pin_defines + }; // pins + + pins_pi0 { // Pi zero + pin_config { + pin@default { + polarity = "active_high"; + termination = "pull_down"; + startup_state = "inactive"; + function = "input"; + }; // pin + pin@p0 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //CLK + pin@p1 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //DEN + pin@p2 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //VSYN + pin@p3 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //HSYN +// pin@p4 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL0 +// pin@p5 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL1 +// pin@p6 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL2 +// pin@p7 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL3 +// pin@p8 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL4 +// pin@p9 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL5 +// pin@p10 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL6 +// pin@p11 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL7 + pin@p12 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR0 + pin@p13 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR1 + pin@p14 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR2 + pin@p15 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR3 + pin@p16 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR4 + pin@p17 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR5 + pin@p18 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR6 + pin@p19 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR7 +// pin@p20 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD0 +// pin@p21 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD1 +// pin@p22 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD2 +// pin@p23 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD3 +// pin@p24 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD4 +// pin@p25 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD5 +// pin@p26 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD6 +// pin@p27 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD7 + + pin@p28 { function = "input"; termination = "pull_up"; }; // I2C 0 SDA + pin@p29 { function = "input"; termination = "pull_up"; }; // I2C 0 SCL + pin@p32 { function = "output"; termination = "pull_down"; }; // Camera LED + pin@p41 { function = "output"; termination = "no_pulling"; }; // Camera shutdown + pin@p46 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Hotplug + pin@p47 { function = "output"; termination = "pull_up"; polarity="active_low"; }; // activity LED + pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK + pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD + pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 + pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 + pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 + pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 + }; // pin_config + + pin_defines { + pin_define@HDMI_CONTROL_ATTACHED { + type = "internal"; + number = <46>; + }; + pin_define@NUM_CAMERAS { + type = "internal"; + number = <1>; + }; + pin_define@CAMERA_0_I2C_PORT { + type = "internal"; + number = <0>; + }; + pin_define@CAMERA_0_SDA_PIN { + type = "internal"; + number = <28>; + }; + pin_define@CAMERA_0_SCL_PIN { + type = "internal"; + number = <29>; + }; + pin_define@CAMERA_0_SHUTDOWN { + type = "internal"; + number = <41>; + }; + pin_define@CAMERA_0_UNICAM_PORT { + type = "internal"; + number = <1>; + }; + pin_define@CAMERA_0_LED { + type = "internal"; + number = <32>; + }; + pin_define@FLASH_0_ENABLE { + type = "absent"; + }; + pin_define@FLASH_0_INDICATOR { + type = "absent"; + }; + pin_define@FLASH_1_ENABLE { + type = "absent"; + }; + pin_define@FLASH_1_INDICATOR { + type = "absent"; + }; + pin_define@POWER_LOW { + type = "absent"; + }; + pin_define@LEDS_DISK_ACTIVITY { + type = "internal"; + number = <47>; + }; + pin_define@LAN_RUN { + type = "absent"; + }; + pin_define@SMPS_SDA { + type = "absent"; + }; + pin_define@SMPS_SCL { + type = "absent"; + }; + pin_define@ETH_CLK { + type = "absent"; + }; + pin_define@USB_LIMIT_1A2 { + type = "absent"; + }; + pin_define@SIO_1V8_SEL { + type = "absent"; + }; + pin_define@PWML { + type = "absent"; + }; + pin_define@PWMR { + type = "absent"; + }; + pin_define@SAFE_MODE { + type = "absent"; + }; + pin_define@SD_CARD_DETECT { + type = "absent"; + }; + pin_define@ID_SDA { + type = "internal"; + number = <0>; + }; + pin_define@ID_SCL { + type = "internal"; + number = <1>; + }; + pin_define@DISPLAY_I2C_PORT { + type = "absent"; + }; + pin_define@DISPLAY_SDA { + type = "absent"; + }; + pin_define@DISPLAY_SCL { + type = "absent"; + }; + }; // pin_defines + }; // pins + + + + pins_pi0w { // Pi zero W + pin_config { + pin@default { + polarity = "active_high"; + termination = "pull_down"; + startup_state = "inactive"; + function = "input"; + }; // pin + pin@p0 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //CLK + pin@p1 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //DEN + pin@p2 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //VSYN + pin@p3 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //HSYN +// pin@p4 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL0 +// pin@p5 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL1 +// pin@p6 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL2 +// pin@p7 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL3 +// pin@p8 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL4 +// pin@p9 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL5 +// pin@p10 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL6 +// pin@p11 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //BL7 + pin@p12 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR0 + pin@p13 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR1 + pin@p14 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR2 + pin@p15 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR3 + pin@p16 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR4 + pin@p17 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR5 + pin@p18 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR6 + pin@p19 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //GR7 +// pin@p20 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD0 +// pin@p21 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD1 +// pin@p22 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD2 +// pin@p23 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD3 +// pin@p24 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD4 +// pin@p25 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD5 +// pin@p26 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD6 +// pin@p27 { function = "dpi"; termination = "no_pulling"; drive_strength_mA = < 0 >; }; //RD7 + + pin@p28 { function = "input"; termination = "pull_up"; }; // I2C 0 SDA + pin@p29 { function = "input"; termination = "pull_up"; }; // I2C 0 SCL + pin@p32 { function = "output"; termination = "pull_down"; }; // Camera LED + pin@p41 { function = "output"; termination = "no_pulling"; }; // Camera shutdown + pin@p46 { function = "input"; termination = "no_pulling"; polarity = "active_low"; }; // Hotplug + pin@p47 { function = "output"; termination = "pull_up"; polarity="active_low"; }; // activity LED + pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK + pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD + pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 + pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 + pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 + pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 + }; // pin_config + + pin_defines { + pin_define@HDMI_CONTROL_ATTACHED { + type = "internal"; + number = <46>; + }; + pin_define@NUM_CAMERAS { + type = "internal"; + number = <1>; + }; + pin_define@CAMERA_0_I2C_PORT { + type = "internal"; + number = <0>; + }; + pin_define@CAMERA_0_SDA_PIN { + type = "internal"; + number = <28>; + }; + pin_define@CAMERA_0_SCL_PIN { + type = "internal"; + number = <29>; + }; + pin_define@CAMERA_0_SHUTDOWN { + type = "internal"; + number = <44>; + }; + pin_define@CAMERA_0_UNICAM_PORT { + type = "internal"; + number = <1>; + }; + pin_define@CAMERA_0_LED { + type = "internal"; + number = <40>; + }; + pin_define@FLASH_0_ENABLE { + type = "absent"; + }; + pin_define@FLASH_0_INDICATOR { + type = "absent"; + }; + pin_define@FLASH_1_ENABLE { + type = "absent"; + }; + pin_define@FLASH_1_INDICATOR { + type = "absent"; + }; + pin_define@POWER_LOW { + type = "absent"; + }; + pin_define@LEDS_DISK_ACTIVITY { + type = "internal"; + number = <47>; + }; + pin_define@LAN_RUN { + type = "absent"; + }; + pin_define@BT_ON { + type = "internal"; + number = <45>; + }; + pin_define@WL_ON { + type = "internal"; + number = <41>; + }; + pin_define@WL_LPO_CLK { + type = "internal"; + number = <43>; + }; + pin_define@SMPS_SDA { + type = "absent"; + }; + pin_define@SMPS_SCL { + type = "absent"; + }; + pin_define@ETH_CLK { + type = "absent"; + }; + pin_define@USB_LIMIT_1A2 { + type = "absent"; + }; + pin_define@SIO_1V8_SEL { + type = "absent"; + }; + pin_define@PWML { + type = "absent"; + }; + pin_define@PWMR { + type = "absent"; + }; + pin_define@SAFE_MODE { + type = "absent"; + }; + pin_define@SD_CARD_DETECT { + type = "absent"; + }; + pin_define@ID_SDA { + type = "internal"; + number = <0>; + }; + pin_define@ID_SCL { + type = "internal"; + number = <1>; + }; + pin_define@DISPLAY_I2C_PORT { + type = "absent"; + }; + pin_define@DISPLAY_SDA { + type = "absent"; + }; + pin_define@DISPLAY_SCL { + type = "absent"; + }; + }; // pin_defines + }; // pins + + + + pins_cm { + pin_config { + pin@default { + polarity = "active_high"; + termination = "pull_down"; + startup_state = "inactive"; + function = "input"; + }; // pin + pin@p14 { function = "uart0"; termination = "no_pulling"; }; // TX uart0 + pin@p15 { function = "uart0"; termination = "pull_up"; }; // RX uart0 + pin@p47 { function = "output"; termination = "no_pulling"; polarity = "active_low"; }; // EMMC_ENABLE_N + pin@p48 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CLK + pin@p49 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD CMD + pin@p50 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D0 + pin@p51 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D1 + pin@p52 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D2 + pin@p53 { function = "sdcard"; termination = "pull_up"; drive_strength_mA = < 8 >; }; // SD D3 + }; // pin_config + + pin_defines { + pin_define@EMMC_ENABLE { + type = "internal"; + number = <47>; + }; + }; // pin_defines + }; // pins_cm + }; +}; diff --git a/stage2/03-install-piaizu/files/dts/gpio-key.dts b/stage2/03-install-piaizu/files/dts/gpio-key.dts new file mode 100644 index 0000000..31784eb --- /dev/null +++ b/stage2/03-install-piaizu/files/dts/gpio-key.dts @@ -0,0 +1,30 @@ +/dts-v1/; + +/plugin/; + + / { + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709"; + + fragment@0 { + target-path = "/soc"; + __overlay__ { + keypad: piaizu_keys { + compatible = "gpio-keys"; + #address-cells = <1>; + #size-cells = <0>; + + button@21 { + label = "right key"; + linux,code = <106>; + gpios = <&gpio 21 1>; + }; + button@10 { + label = "left left"; + linux,code = <105>; + gpios = <&gpio 10 1>; + }; + + }; + }; + }; + }; diff --git a/stage2/03-install-piaizu/files/fb/.clang-format b/stage2/03-install-piaizu/files/fb/.clang-format new file mode 100644 index 0000000..42687ba --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/.clang-format @@ -0,0 +1,90 @@ +--- +Language: Cpp +# BasedOnStyle: LLVM +AccessModifierOffset: -2 +AlignAfterOpenBracket: false +AlignConsecutiveAssignments: true +AlignConsecutiveDeclarations: true +AlignEscapedNewlinesLeft: false +AlignOperands: true +AlignTrailingComments: false +AllowAllParametersOfDeclarationOnNextLine: false +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: None +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: false +BinPackArguments: true +BinPackParameters: true +BraceWrapping: + AfterClass: false + AfterControlStatement: false + AfterEnum: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: true + AfterUnion: false + BeforeCatch: false + BeforeElse: false + IndentBraces: false +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Attach +BreakBeforeTernaryOperators: true +BreakConstructorInitializersBeforeComma: false +ColumnLimit: 120 +CommentPragmas: '^ IWYU pragma:' +ConstructorInitializerAllOnOneLineOrOnePerLine: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: false +DisableFormat: false +ExperimentalAutoDetectBinPacking: false +ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ] +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + - Regex: '^(<|"(gtest|isl|json)/)' + Priority: 3 + - Regex: '.*' + Priority: 1 +IndentCaseLabels: true +IndentWidth: 4 +IndentWrappedFunctionNames: false +KeepEmptyLinesAtTheStartOfBlocks: true +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBlockIndentWidth: 4 +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 1000 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 80 +PointerAlignment: Right +ReflowComments: true +SortIncludes: true +SpaceAfterCStyleCast: false +SpaceBeforeAssignmentOperators: true +SpaceBeforeParens: ControlStatements +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Cpp11 +TabWidth: 8 +UseTab: Never +... + diff --git a/stage2/03-install-piaizu/files/fb/Makefile b/stage2/03-install-piaizu/files/fb/Makefile new file mode 100644 index 0000000..a1970ab --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/Makefile @@ -0,0 +1,62 @@ +.phony: clean format install dbg doc all analyze liblmx cgi + +include settings.mk + +VERSION = $(shell git rev-parse HEAD) +DATE = $(shell date) + +SOURCE = $(wildcard *.c) +OBJS = $(SOURCE:.c=.o) +HEADERS = $(wildcard lib/*.h) $(wildcard cgi-src/*.h) $(wildcard ./*.h) + +CFLAGS +=-Wall -std=c11 -D_DEFAULT_SOURCE -D_GNU_SOURCE -Wextra -Werror +CFLAGS += -DGITSHA='"$(VERSION)"' -DDATE='"$(DATE)"' -I./cgi-src/ -I./lib/ $(DBG_FLAGS) + +LDFLAGS = -L./lib/ -llmx $(LDEXTRA) +PREFIX ?= / + +CC ?= gcc + +all: liblmx cgi lmx + +liblmx: + $(MAKE) -C ./lib/ all + +cgi: + $(MAKE) -C ./cgi-src/ all + +dbg: + $(MAKE) -C ./cgi-src/ $@ + $(MAKE) -C ./lib/ $@ + $(MAKE) lmx DBG_FLAGS="-DDBG -O0 -save-temps -g" + +$(OBJS): $(SOURCE) $(HEADERS) + +lmx: $(OBJS) + $(CC) -o $@ $^ $(LDFLAGS) + +format: $(SOURCE) $(HEADERS) + clang-format -i $^ + +$(PREFIX)/usr/bin/graphics/: + mkdir -p $@ + +install: clean all $(PREFIX)/usr/bin/graphics/ + $(MAKE) -C ./lib/ install PREFIX="$(PREFIX)" + $(MAKE) -C ./cgi-src/ install PREFIX="$(PREFIX)" + cp -rfv graphics/* $(PREFIX)/usr/bin/graphics/ + install -m 755 lmx $(PREFIX)/usr/bin + install -m 755 lmx001 $(PREFIX)/etc/init.d + update-rc.d lmx001 defaults + update-rc.d lmx001 enable + +analyze: clean + scan-build -analyze-headers -enable-checker alpha -enable-checker unix -enable-checker security -enable-checker deadcode -enable-checker nullability $(MAKE) + +doc: + doxygen doxy.cfg + +clean: + -rm lmx *.o *.i *.s + $(MAKE) -C ./lib/ $@ + $(MAKE) -C ./cgi-src/ $@ diff --git a/stage2/03-install-piaizu/files/fb/cgi-src/.clang-format b/stage2/03-install-piaizu/files/fb/cgi-src/.clang-format new file mode 100644 index 0000000..44c0ad4 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/cgi-src/.clang-format @@ -0,0 +1,90 @@ +--- +Language: Cpp +# BasedOnStyle: LLVM +AccessModifierOffset: -2 +AlignAfterOpenBracket: false +AlignConsecutiveAssignments: true +AlignConsecutiveDeclarations: true +AlignEscapedNewlinesLeft: false +AlignOperands: true +AlignTrailingComments: false +AllowAllParametersOfDeclarationOnNextLine: false +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: None +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: false +BinPackArguments: true +BinPackParameters: true +BraceWrapping: + AfterClass: false + AfterControlStatement: false + AfterEnum: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: true + AfterUnion: false + BeforeCatch: false + BeforeElse: false + IndentBraces: false +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Attach +BreakBeforeTernaryOperators: true +BreakConstructorInitializersBeforeComma: false +ColumnLimit: 120 +CommentPragmas: '^ IWYU pragma:' +ConstructorInitializerAllOnOneLineOrOnePerLine: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: false +DisableFormat: false +ExperimentalAutoDetectBinPacking: false +ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ] +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + - Regex: '^(<|"(gtest|isl|json)/)' + Priority: 3 + - Regex: '.*' + Priority: 1 +IndentCaseLabels: false +IndentWidth: 4 +IndentWrappedFunctionNames: false +KeepEmptyLinesAtTheStartOfBlocks: true +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBlockIndentWidth: 4 +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 1000 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 80 +PointerAlignment: Right +ReflowComments: true +SortIncludes: true +SpaceAfterCStyleCast: false +SpaceBeforeAssignmentOperators: true +SpaceBeforeParens: ControlStatements +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Cpp11 +TabWidth: 8 +UseTab: Never +... + diff --git a/stage2/03-install-piaizu/files/fb/cgi-src/.fuse_hidden0000001e00000001 b/stage2/03-install-piaizu/files/fb/cgi-src/.fuse_hidden0000001e00000001 new file mode 100755 index 0000000..cdf141d Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/cgi-src/.fuse_hidden0000001e00000001 differ diff --git a/stage2/03-install-piaizu/files/fb/cgi-src/Makefile b/stage2/03-install-piaizu/files/fb/cgi-src/Makefile new file mode 100644 index 0000000..27ad471 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/cgi-src/Makefile @@ -0,0 +1,41 @@ +.phony: clean format install dbg all analyze + +VERSION = $(shell git rev-parse HEAD) +DATE = $(shell date) + +SOURCE = lmxjson.c +OBJS = $(SOURCE:.c=.o) +HEADERS = $(wildcard *.h) + +CFLAGS +=-Wall -std=c11 -D_DEFAULT_SOURCE -D_GNU_SOURCE -pthread -Wextra -Werror -save-temps -I../src +CFLAGS += -DGITSHA='"$(VERSION)"' -DDATE='"$(DATE)"' $(DBG_FLAGS) + +LDFLAGS = -lfcgi -ljansson +PREFIX ?= / + +CC ?= gcc + +all: lmx.cgi + +dbg: + $(MAKE) lmx.cgi DBG_FLAGS="-DDBG -O0 -save-temps -g" + +$(OBJS): $(SOURCE) $(HEADERS) + +lmx.cgi: $(OBJS) + $(CC) -o $@ $^ $(LDFLAGS) + +format: $(SOURCE) $(HEADERS) + clang-format -i $^ + +install: clean lmx.cgi + -mkdir -p $(PREFIX)/var/www/html/cgi-bin/ + cp -rfv lmxindex.html $(PREFIX)/var/www/html/ + install -m 755 lmx.cgi $(PREFIX)/var/www/html/cgi-bin/ + +analyze: clean + scan-build -analyze-headers -enable-checker alpha -enable-checker unix -enable-checker security -enable-checker deadcode -enable-checker nullability make + +clean: + -rm lmx.cgi *.o *.i *.s + diff --git a/stage2/03-install-piaizu/files/fb/cgi-src/lighttpd.conf b/stage2/03-install-piaizu/files/fb/cgi-src/lighttpd.conf new file mode 100644 index 0000000..090b2cb --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/cgi-src/lighttpd.conf @@ -0,0 +1,39 @@ +server.modules = ( + "mod_access", + "mod_alias", + "mod_compress", + "mod_redirect", +# "mod_rewrite", + "mod_cgi", +) + +server.document-root = "/var/www/html" +server.upload-dirs = ( "/var/cache/lighttpd/uploads" ) +server.errorlog = "/var/log/lighttpd/error.log" +server.pid-file = "/var/run/lighttpd.pid" +server.username = "www-data" +server.groupname = "www-data" +server.port = 80 + + +index-file.names = ( "index.php", "index.html", "index.lighttpd.html" ) +url.access-deny = ( "~", ".inc" ) +static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".cgi" ) + +compress.cache-dir = "/var/cache/lighttpd/compress/" +compress.filetype = ( "application/javascript", "text/css", "text/html", "text/plain" ) + +# default listening port for IPv6 falls back to the IPv4 port +include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port +include_shell "/usr/share/lighttpd/create-mime.assign.pl" +include_shell "/usr/share/lighttpd/include-conf-enabled.pl" + +$HTTP["url"] =~ "/cgi-bin/" { + cgi.assign = ( "" => "" ) +} + +cgi.assign = ( + ".cgi" => "" +) + + diff --git a/stage2/03-install-piaizu/files/fb/cgi-src/lmxindex.html b/stage2/03-install-piaizu/files/fb/cgi-src/lmxindex.html new file mode 100644 index 0000000..0ab8f37 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/cgi-src/lmxindex.html @@ -0,0 +1,91 @@ + + +LMX send data text page + +
+This page will post data to the PiAIZU Raspberry Pi.
+A webserver will receive the POST data and call the script: /var/www/html/cgi-bin/lmx.cgi
+
+This script will parse the received the data and if it's valid the data will be repacked into
+binary c structures. These structures will the be passed further through a UNIX socket.
+
+The lmx sample application will listen in the "other end" of the socket for incoming packages
+and handle the requests.
+
+ +

+ + + + +Send text to LMX-001 +

+ Data: + +
+

+ +Show cross hair: +

+ Data: + + +
+ +

+ +

+ + + Move the cross-hair cursor by using the buttons:
+ Container: + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +

+ + +

+The text below is a response from the LMX sample application on a regular GET request. +


+

+ + + + + + +

+ + + + + diff --git a/stage2/03-install-piaizu/files/fb/cgi-src/lmxjson.c b/stage2/03-install-piaizu/files/fb/cgi-src/lmxjson.c new file mode 100644 index 0000000..ae4ad84 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/cgi-src/lmxjson.c @@ -0,0 +1,312 @@ +#include "fcgi_stdio.h" +#include "lmxsocket.h" +#include +#include +#include +#include +#include +#include + +static char *nfo[] = { + "QUERY_STRING", "REQUEST_METHOD", "CONTENT_TYPE", "CONTENT_LENGTH", "SCRIPT_FILENAME", "SCRIPT_NAME", "PATH_INFO", + "PATH_TRANSLATED", "REQUEST_URI", "DOCUMENT_URI", "DOCUMENT_ROOT", "SERVER_PROTOCOL", "GATEWAY_INTERFACE", + "SERVER_SOFTWARE", "REMOTE_ADDR", "REMOTE_PORT", "SERVER_ADDR", "SERVER_PORT", "SERVER_NAME", "HTTPS", +}; +#if DBG + +#define HTML_COMMENT HTML_PRE +#define HTML_COMMENT_END HTML_PRE_END + + +#else + +#define HTML_COMMENT "" + +#endif + +#define HTML_PRE "
"
+#define HTML_PRE_END "
" + + +#define ARRAY_SIZE(x) sizeof(x) / sizeof(x[0]) + +#define FOR_EACH_WEB_REQUEST_STR(x) "LMX_POST_" #x, + +static char *webrequest_cmd[] = {WEBREQUEST(FOR_EACH_WEB_REQUEST_STR)}; +static int sock; + +int send_datagram(socket_datagram_header_t *data, void **response_data) { + + struct sockaddr_un name; + struct sockaddr_un my_name; + + if (!data) { + return -1; + } + + if (!data->size) { + return -1; + } + + sock = socket(AF_UNIX, SOCK_DGRAM, 0); + if (sock < 0) { + printf("

Error opening datagram socket"); + return -1; + } + + /* Server name */ + name.sun_family = AF_UNIX; + strncpy(name.sun_path, SOCKET_NAME, sizeof(name.sun_path)); + + /* Client name*/ + memset(&my_name, 0, sizeof(struct sockaddr_un)); + my_name.sun_family = AF_UNIX; + snprintf(my_name.sun_path, sizeof(my_name.sun_path), "/tmp/lmx_cgi.socket.%ld", (long)getpid()); + + if (bind(sock, (struct sockaddr *)&my_name, sizeof(struct sockaddr_un)) == -1) { + printf("error binding socket: %s\n", my_name.sun_path); + } + + chmod(my_name.sun_path, 0777); + + /* Send message. */ + printf(HTML_COMMENT "Sending %d byte datagram via socket %s to the lmx-001 sample " + "application.." HTML_COMMENT_END, + data->size, name.sun_path); + + if (sendto(sock, data, data->size, 0, &name, sizeof(struct sockaddr_un)) < 0) { + printf("

Error sending datagram message"); + close(sock); + return -1; + } + + if (response_data != NULL) { + int readsize; + char receive_buf[DATAGRAM_SIZE]; + readsize = recvfrom(sock, receive_buf, DATAGRAM_SIZE, 0, NULL, NULL); + if (readsize > 0) { + *response_data = malloc(readsize); + memcpy(*response_data, receive_buf, readsize); + } + } + + close(sock); + unlink(my_name.sun_path); + return 0; +} + +int handle_request_get() { + socket_datagram_lmx_info_t lmx_info; + socket_datagram_lmx_info_t *response = NULL; + + int i; + int ret = 0; + + lmx_info.header.type = SOCKET_DATAGRAM_TYPE_INFO; + lmx_info.header.size = sizeof(socket_datagram_lmx_info_t); + + ret = send_datagram((socket_datagram_header_t *)&lmx_info, (void **)&response); + if (ret != 0) { + printf("

Error sending datagram socket, lmx sample app most probably not " + "started\n"); + return -1; + } + if (response == NULL) { + printf("

Response is NULL\n"); + return -1; + } + printf("

Current container setup in the LMX sample application

\n");
+
+    printf("Index, "
+           "offset x, "
+           "offset y, "
+           "width, "
+           "height,  "
+           "transparent,"
+           "visible, "
+           "frame,  "
+           "framesize_mem,"
+           "Description\n========================================================================================\n");
+
+    for (i = 0; i < response->n_containers; i++) {
+        container_info_t *ci = &response->containers[i];
+
+        printf("%02d "
+               "      %3d "
+               "      %3d "
+               "     %3d "
+               "     %3d "
+               "   %d "
+               "           %d "
+               "        %d "
+               "   %8d"
+               "    %s\n",
+            i, ci->x, ci->y, ci->width, ci->height, ci->transparent, ci->visible, ci->frame, ci->framesize_mem,
+            ci->description);
+    }
+    printf(" 
\n"); + free(response); + return ret; +} + +int handle_request_post() { + + int postlen = atoi(getenv("CONTENT_LENGTH")); + socket_datagram_type_t i; + int container = 0; + if (postlen > 0) { + + char buf[1024]; + char *cmd; + char *data; + int len = postlen > 1024 ? 1024 - 1 : postlen; + FCGI_fread(buf, len, 1, FCGI_stdin); + printf(HTML_COMMENT "Raw post data:\n=================\n%s\n=================\n" HTML_COMMENT_END, buf); + for (i = 0; i < SOCKET_DATAGRAM_TYPE_LAST; i++) { + cmd = strstr(buf, webrequest_cmd[i]); + printf(HTML_COMMENT "Testing cmd %s against \n{%s}\nResult: %s" HTML_COMMENT_END, webrequest_cmd[i],buf, cmd); + if (cmd == NULL) { + continue; + } else { + data = cmd + strlen(webrequest_cmd[i]) + 1; + printf(HTML_COMMENT "Found command: %.*s and data: " HTML_COMMENT_END, + strlen(webrequest_cmd[i]), cmd, data); + switch (i) { + case SOCKET_DATAGRAM_TYPE_CONTAINER: + container = atoi(data); + printf(HTML_COMMENT "Will use container: %d\n" HTML_COMMENT_END, container); + break; + case SOCKET_DATAGRAM_TYPE_MOVE: { + movment_e x; + static char *web_move_sub_cmd[] = {"MOVE_UP", "MOVE_DOWN", "MOVE_LEFT", "MOVE_RIGHT", + "MOVE_UP_LEFT", "MOVE_UP_RIGHT", "MOVE_DOWN_LEFT", "MOVE_DOWN_RIGHT", "MOVE_CLEAR"}; + + for (x = 0; x < sizeof(web_move_sub_cmd) / sizeof(web_move_sub_cmd[0]); x++) { + int y; + y = strcmp(data, web_move_sub_cmd[x]); + if (y != 0) { + continue; + } else { + socket_datagram_lmx_move_t req; + req.header.type = SOCKET_DATAGRAM_TYPE_MOVE; + req.header.size = sizeof(socket_datagram_lmx_move_t); + req.header.container = container; + req.move = x; + printf(HTML_PRE "%s container %d" HTML_PRE_END,data, req.header.container); + printf(HTML_COMMENT "

Sending move :%s result: %d" HTML_COMMENT_END, data, + send_datagram((socket_datagram_header_t *)&req, NULL)); + } + } + + break; + } + case SOCKET_DATAGRAM_TYPE_COORD: { + socket_datagram_lmx_coordinate_t dgcoord; + json_t * jcoord; + json_t * c; + json_t * x; + json_t * y; + + dgcoord.header.type = SOCKET_DATAGRAM_TYPE_COORD; + dgcoord.header.size = sizeof(socket_datagram_lmx_coordinate_t); + + json_error_t error; + jcoord = json_loads(data, 0, &error); + + if (!jcoord) { + printf("error: on line %d: %s\n", error.line, error.text); + return -1; + } + + c = json_object_get(jcoord, "coord"); + if (!json_is_object(c)) { + printf("error: on line %d: %s\n", error.line, error.text); + return -1; + } + + x = json_object_get(c, "x"); + if (!json_is_integer(x)) { + printf("error: on line %d: %s\n", error.line, error.text); + return -1; + } + + y = json_object_get(c, "y"); + if (!json_is_integer(y)) { + printf("error: on line %d: %s\n", error.line, error.text); + return -1; + } + dgcoord.coord.x = json_integer_value(x); + dgcoord.coord.y = json_integer_value(y); + + printf(HTML_COMMENT "

Sending coordinates datagram %d " + "struct size %d bytes, stream len %d " + "data

 x:%d "
+                                        "y:%d

" HTML_COMMENT_END, + send_datagram((socket_datagram_header_t *)&dgcoord, NULL), dgcoord.header.size, len, + dgcoord.coord.x, dgcoord.coord.y); + printf("

x:%d y:%d
", dgcoord.coord.x, dgcoord.coord.y); + + json_decref(x); + json_decref(y); + json_decref(c); + json_decref(jcoord); + } + + break; + case SOCKET_DATAGRAM_TYPE_TEXT: { + socket_datagram_lmx_text_t dgdata; + dgdata.header.type = SOCKET_DATAGRAM_TYPE_TEXT; + dgdata.header.size = sizeof(socket_datagram_lmx_text_t); + strncpy((char *)&dgdata.text, data, TEXT_LENGTH); + dgdata.text[TEXT_LENGTH - 1] = '\0'; + printf(HTML_COMMENT "\n

Sending text datagram %d data %d struct size %d " + "bytes, stream len %d, data " + "

%s

" HTML_COMMENT_END, + send_datagram((socket_datagram_header_t *)&dgdata, NULL), TEXT_LENGTH, dgdata.header.size, len, + dgdata.text); + printf("

%s
", dgdata.text); + break; + } + case SOCKET_DATAGRAM_TYPE_INFO: + case SOCKET_DATAGRAM_TYPE_LAST: + default: + break; + + } + } + } + } + return 0; +} + +int main(void) { + + int count = 0; + unsigned int i; + + /* Response loop. */ + while (FCGI_Accept() >= 0) { + printf("Content-type: text/html\r\n" + "\r\n" + "PiAIZU CGI"); + + char *method = getenv("REQUEST_METHOD"); + + if (!strcmp(method, "POST")) { + handle_request_post(); + } else if (!strcmp(method, "GET")) { + handle_request_get(); + } else { + + printf("

No data posted
"); + } + } + + printf(HTML_COMMENT); + for (i = 0; i < sizeof(nfo) / sizeof(nfo[0]); i++) { + printf("%02d: %s: %s" "\n", ++count, nfo[i], getenv(nfo[i])); + } + printf(HTML_COMMENT_END); + return 0; +} diff --git a/stage2/03-install-piaizu/files/fb/cgi-src/lmxsocket.h b/stage2/03-install-piaizu/files/fb/cgi-src/lmxsocket.h new file mode 100644 index 0000000..b908f0c --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/cgi-src/lmxsocket.h @@ -0,0 +1,75 @@ +#pragma once + +#include +#include +#include +#include +#include +#include + +#define SOCKET_NAME "/tmp/lmx.socket" +#define DATAGRAM_SIZE (10 * 1024) +#define TEXT_LENGTH 0x100 +#define DESCRIPTION_LENGHT 256 + +#define WEBREQUEST(x) x(CONTAINER) x(COORD) x(TEXT) x(INFO) x(MOVE) + +#define FOR_EACH_WEBREQUEST_ENUM(x) SOCKET_DATAGRAM_TYPE_##x, + +typedef enum { WEBREQUEST(FOR_EACH_WEBREQUEST_ENUM) FOR_EACH_WEBREQUEST_ENUM(LAST) } socket_datagram_type_t; + +typedef struct { + socket_datagram_type_t type; + int container; + size_t size; +} socket_datagram_header_t; + +typedef struct { + uint16_t x; + uint16_t y; +} coordinate_t; + +typedef struct { + socket_datagram_header_t header; + coordinate_t coord; +} socket_datagram_lmx_coordinate_t; + +typedef enum { + MOVE_UP, + MOVE_DOWN, + MOVE_LEFT, + MOVE_RIGHT, + MOVE_UP_LEFT, + MOVE_UP_RIGHT, + MOVE_DOWN_LEFT, + MOVE_DOWN_RIGHT, + MOVE_CLEAR, +} movment_e; + +typedef struct { + socket_datagram_header_t header; + movment_e move; +} socket_datagram_lmx_move_t; + +typedef struct { + socket_datagram_header_t header; + char text[TEXT_LENGTH]; +} socket_datagram_lmx_text_t; + +typedef struct { + int x; + int y; + unsigned int width; + unsigned int height; + bool transparent; + bool visible; + char frame; + size_t framesize_mem; + char description[DESCRIPTION_LENGHT]; +} container_info_t; + +typedef struct { + socket_datagram_header_t header; + int n_containers; + container_info_t containers[]; +} socket_datagram_lmx_info_t; diff --git a/stage2/03-install-piaizu/files/fb/define_containers.h b/stage2/03-install-piaizu/files/fb/define_containers.h new file mode 100644 index 0000000..316c02a --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/define_containers.h @@ -0,0 +1,75 @@ +#pragma once + +#if DBG +#define FRAME(x) 1 +#else +#define FRAME(x) x +#endif + +#if DBG +#define FRAMES_VISIBLE(x) 1 +#else +#define FRAMES_VISIBLE(x) x +#endif + +// clang-format off +/* HANDLE, X, Y, WIDTH, HEIGHT, TRANSPARENT, VISIBLE, SHOW_FRAME, DESCRIPTION) */ +#define CONTAINER_DEFINE(x) \ + /* 00 */ x(FB_COPY , 0 ,0 , LMX_W, LMX_H, false, true, FRAME(0), "Master container, copy of HW framebuffer") \ + /* 01 */ x(FULL_SCREEN , 0 ,0 , LMX_W, LMX_H, false, true, FRAME(0), "Full screen, not used") \ + /* 02 */ x(SONY_LOGO , 20 ,10 , 246 , 52, true , true, FRAME(0), "Master container, copy of HW framebuffer") \ + /* 03 */ x(AP_A , 360 , 1 , 57 , 70, false, true, FRAME(0), "Access point symbol A") \ + /* 04 */ x(AP_B , 360 , 1 , 57 , 70, true , true, FRAME(0), "Access point symbol B") \ + /* 05 */ x(AP_C , 360 , 1 , 57 , 70, true , true, FRAME(0), "Access point symbol C") \ + /* 06 */ x(AP_D , 360 , 1 , 57 , 70, true , true, FRAME(0), "Access point symbol D") \ + /* 07 */ x(TEXT , 375 ,75 , 30 , 30, true , true, FRAME(0), "Text") \ + /* 08 */ x(WIFI_TEXTBOX , 20 ,80 , 280 , 48, true , true, FRAME(0), "Connect to wifi textbox") \ + /* 09 */ x(KEY_INFO , 290 ,10 , 65 , 62, true , true, FRAME(0), "Key event information") \ + /* 10 */ x(WEB_MESSAGES , 0 ,LMX_H - 21, LMX_W, 20, true , true, FRAME(0), "Web message area") \ + /* 11 */ x(POINTER , 0 ,0 , LMX_W, LMX_H, true , true, FRAME(0), "Cross-hair area") + +#define CONTAINER_HANDLE_ENUM(HANDLE, X, Y, WIDTH, HEIGHT, TRANSPARENT, VISIBLE, SHOW_FRAME, DESCRIPTION) HANDLE, +#define CONTAINER_HANDLE_STR(HANDLE, X, Y, WIDTH, HEIGHT, TRANSPARENT, VISIBLE, SHOW_FRAME, DESCRIPTION) #HANDLE , + +typedef enum { + CONTAINER_DEFINE(CONTAINER_HANDLE_ENUM) + N_CONTAINERS +} container_handle_e; + +#define CONTAINER_ARRAY(HANDLE, X, Y, WIDTH, HEIGHT, TRANSPARENT, VISIBLE, SHOW_FRAME, DESCRIPTION) \ + { \ + .x = X, \ + .y = Y, \ + .width = WIDTH, \ + .height = HEIGHT, \ + .bits_per_pixel = 32, \ + .transparent = TRANSPARENT, \ + .visible = VISIBLE, \ + .frame = SHOW_FRAME, \ + .bg_color = {0x00, 0x00, 0x00, 0x00}, \ + .description = DESCRIPTION, \ + .data = NULL, \ + }, + +#if 0 + +typedef struct { + size_t n; + container_t c[]; +} containers_t; + + +static container_t containers[] = { + CONTAINER_DEFINE(CONTAINER_ARRAY) +}; + +#endif + +static containers_t containers = { + .n = N_CONTAINERS, + .c = + { + CONTAINER_DEFINE(CONTAINER_ARRAY) + } +}; +// clang-format on diff --git a/stage2/03-install-piaizu/files/fb/docs/html/annotated.html b/stage2/03-install-piaizu/files/fb/docs/html/annotated.html new file mode 100644 index 0000000..240db67 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/annotated.html @@ -0,0 +1,118 @@ + + + + + + +PiAIZU: Data Structures + + + + + + + + + + +

+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Data Structures
+
+ + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/arrowdown.png b/stage2/03-install-piaizu/files/fb/docs/html/arrowdown.png new file mode 100644 index 0000000..0b63f6d Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/arrowdown.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/arrowright.png b/stage2/03-install-piaizu/files/fb/docs/html/arrowright.png new file mode 100644 index 0000000..c6ee22f Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/arrowright.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/bc_s.png b/stage2/03-install-piaizu/files/fb/docs/html/bc_s.png new file mode 100644 index 0000000..224b29a Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/bc_s.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/bdwn.png b/stage2/03-install-piaizu/files/fb/docs/html/bdwn.png new file mode 100644 index 0000000..940a0b9 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/bdwn.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/bmp_8c.html b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8c.html new file mode 100644 index 0000000..aafae33 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8c.html @@ -0,0 +1,268 @@ + + + + + + +PiAIZU: lib/bmp.c File Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
bmp.c File Reference
+
+
+
#include "container.h"
+#include "framebuffer.h"
+#include "log.h"
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+Include dependency graph for bmp.c:
+
+
+ + + + + +
+
+

Go to the source code of this file.

+ + + + +

+Data Structures

struct  bmp_header_t
 
+ + + +

+Macros

#define GRAY_SCALE(rgb)   (rgb)
 
+ + + + + + + +

+Functions

int bmp_open_path (const char *path, const char *file, gimp_bitmap_t **bitmap)
 
int bmp_open (const char *file, gimp_bitmap_t **bitmap)
 
void bmp_free (gimp_bitmap_t **bitmap)
 
+

Macro Definition Documentation

+ +
+
+ + + + + + + + +
#define GRAY_SCALE( rgb)   (rgb)
+
+ +

Definition at line 47 of file bmp.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
void bmp_free (gimp_bitmap_t ** bitmap)
+
+
Parameters
+ + +
bitmapbitmap to destroy and free
 Frees the bitmap and sets the pointer to null.
+
+
+ +

Definition at line 183 of file bmp.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int bmp_open (const char * file,
gimp_bitmap_t ** bitmap 
)
+
+
Parameters
+ + + +
filefilename to open, like logo.bmp
bitmapbitmap that later can be used in a container
+
+
+
Returns
Returns 0 on success, -1 on failure.
 Opens a .bmp file, decodes it and creates a gimp_bitmap_t bitmap
+ that can be printed in a container.
+ +

Definition at line 179 of file bmp.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int bmp_open_path (const char * path,
const char * file,
gimp_bitmap_t ** bitmap 
)
+
+
Parameters
+ + + + +
pathpath to file
filefilename to open, like logo.bmp
bitmapbitmap that later can be used in a container
+
+
+
Returns
Returns 0 on success, -1 on failure.
 Opens a .bmp file, decodes it and creates a gimp_bitmap_t bitmap
+ that can be printed in a container.
+ +

Definition at line 74 of file bmp.c.

+ +
+
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/bmp_8c__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8c__incl.map new file mode 100644 index 0000000..0c6bbbc --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8c__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/bmp_8c__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8c__incl.md5 new file mode 100644 index 0000000..7bf71ac --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8c__incl.md5 @@ -0,0 +1 @@ +14080f40dcee1f3d5c7b66c4f07c607c \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/bmp_8c__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8c__incl.png new file mode 100644 index 0000000..79e1c0b Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8c__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/bmp_8c_source.html b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8c_source.html new file mode 100644 index 0000000..2d07042 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8c_source.html @@ -0,0 +1,126 @@ + + + + + + +PiAIZU: lib/bmp.c Source File + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
bmp.c
+
+
+Go to the documentation of this file.
1 #include "container.h"
2 #include "framebuffer.h"
3 #include "log.h"
4 #include <fcntl.h>
5 #include <stdio.h>
6 #include <stdlib.h>
7 #include <unistd.h>
8 /*
9  offset size description
10  00 2 signature, must be 4D42 hex
11  02 4 size of BMP file in bytes (unreliable)
12  06 2 reserved, must be zero
13  08 2 reserved, must be zero
14  10 4 offset to start of image data in bytes
15  14 4 size of BITMAPINFOHEADER structure, must be 40.
16  18 4 image width in pixels
17  22 4 image height in pixels
18  26 2 number of planes in the image, must be 1.
19  28 2 number of bits per pixel (1, 4, 8, or 24)
20  30 4 compression type (0=none, 1=RLE-8, 2=RLE-4)
21  34 4 size of image data in bytes (including padding)
22  38 4 horizontal resolution in pixels per meter (unreliable)
23  42 4 vertical resolution in pixels per meter (unreliable)
24  46 4 number of colors in image, or zero
25  50 4 number of important colors, or zero
26 */
27 
28 // clang-format off
29 #if GRAYSCALE_LUMINOSITY
30 
31  #define GRAY_SCALE(rgb) \
32  (((((((rgb) & 0x000000FF) * 7) + /*B*/ \
33  ((((rgb) >> 8) & 0x000000FF) * 72) + /*G*/ \
34  ((((rgb) >> 16) & 0x000000FF) * 21) ) / 100) << 8) & /*R*/ \
35  0x0000FF00)
36 
37 #elif GRAYSCALE_AVERAGE
38 
39  #define GRAY_SCALE(rgb) \
40  (((((((rgb) & 0x000000FF)) + /*B*/ \
41  ((((rgb) >> 8) & 0x000000FF)) + /*G*/ \
42  ((((rgb) >> 16) & 0x000000FF)) ) / 3) << 8) & /*R*/ \
43  0x0000FF00)
44 
45 #else
46 
47  #define GRAY_SCALE(rgb) (rgb)
48 
49 #endif
50 // clang-format on
51 
52 #pragma pack(2)
53 typedef struct {
54 
55  uint8_t signature[2];
56  uint32_t filesize;
57  uint16_t reserved_a;
58  uint16_t reserved_b;
59  uint32_t data_offset;
60  uint32_t header_size;
61  uint32_t width;
62  uint32_t height;
63  uint16_t planes;
64  uint16_t bits_per_pixel;
65  uint32_t compression;
66  uint32_t img_size_bytes;
67  uint32_t x_res;
68  uint32_t y_res;
69  uint32_t n_colors;
71 
72 } bmp_header_t;
73 
74 int bmp_open_path(const char *path, const char *file, gimp_bitmap_t **bitmap) {
75  bmp_header_t header;
76  char filepath[255];
77  ssize_t n;
78  unsigned char *bmp_data = NULL;
79 
80  int fd;
81 
82  if (bitmap == NULL) {
83  return -1;
84  }
85  sprintf(filepath, "%s/%s", path, file);
86  fd = open(filepath, O_RDONLY);
87  if (fd == -1) {
88  LOG("Couldn't open %s %m\n", filepath);
89  return -1;
90  }
91 
92  lseek(fd, 0L, SEEK_SET);
93 
94  n = read(fd, &header, sizeof(header));
95  if (n == -1) {
96  LOG("Error reading filepath: %m");
97  }
98 
99  bmp_data = calloc(header.img_size_bytes + sizeof(gimp_bitmap_t), 1);
100  if (bmp_data == NULL) {
101  return -1;
102  }
103 
104  *bitmap = calloc((header.height * (header.width + 2) * 4) + sizeof(gimp_bitmap_t), 1);
105  if (*bitmap == NULL) {
106 
107  free(bmp_data);
108  return -1;
109  }
110 
111  (*bitmap)->width = header.width;
112  (*bitmap)->height = header.height;
113 
114  (*bitmap)->bytes_per_pixel = 4; /* We use RGBA in as STD */
115 
116  lseek(fd, header.data_offset, SEEK_SET);
117  n = read(fd, bmp_data, header.img_size_bytes);
118  if (n == -1) {
119  LOG("Error reading file %m\n");
120  return n;
121  }
122  close(fd);
123 
124 #ifdef DBG
125  LOG("\nFilename: %s\nsignature: %c%c \n"
126  "filesize: %d\n"
127  "reserved_a: %d\n"
128  "reserved_b: %d\n"
129  "data_offset: 0x%x\n"
130  "header_size: %d\n"
131  "width: %d\n"
132  "height: %d\n"
133  "planes: %d\n"
134  "bits_per_pixel: %d\n"
135  "compression: %d\n"
136  "img_size_bytes: %d\n"
137  "x_res: %d\n"
138  "y_res: %d\n"
139  "n_colors: %d\n"
140  "n_important_colors: %d\n",
141  filepath, header.signature[0], header.signature[1], header.filesize, header.reserved_a, header.reserved_b,
142  header.data_offset, header.header_size, header.width, header.height, header.planes, header.bits_per_pixel,
143  header.compression, header.img_size_bytes, header.x_res, header.y_res, header.n_colors,
144  header.n_important_colors);
145 #endif
146  {
147  unsigned int x, y;
148  int padding = 0;
149 
150  if ((header.width * (header.bits_per_pixel / 8)) % 4) {
151  padding = 4 - (header.width * (header.bits_per_pixel / 8)) % 4;
152  }
153 
154  for (y = 0; y < ((*bitmap)->height); y++) {
155  for (x = 0; x < (*bitmap)->width; x++) {
156 
157  uint32_t *src;
158  uint32_t *dst;
159 
160  src = (uint32_t *)&bmp_data[(x * (header.bits_per_pixel / 8)) +
161  ((((header.height - 1) - y) * header.width) * (header.bits_per_pixel / 8)) +
162  (((header.height - 1) - y) * padding)];
163 
164  dst = (uint32_t *)&(*bitmap)->pixel_data[(y * ((*bitmap)->width) + x) * (*bitmap)->bytes_per_pixel];
165 
166  if (header.bits_per_pixel == 32) {
167  *dst = GRAY_SCALE((*src >> 8));
168  } else {
169  *dst = GRAY_SCALE((*src));
170  }
171  }
172  }
173  free(bmp_data);
174  }
175 
176  return 0;
177 }
178 
179 int bmp_open(const char *file, gimp_bitmap_t **bitmap) {
180  return bmp_open_path(".", file, bitmap);
181 }
182 
183 void bmp_free(gimp_bitmap_t **bitmap) {
184  if (bitmap) {
185  free(*bitmap);
186  *bitmap = NULL;
187  }
188 }
+
uint16_t planes
Definition: bmp.c:63
+
uint32_t n_important_colors
Definition: bmp.c:70
+
#define GRAY_SCALE(rgb)
Definition: bmp.c:47
+
#define LOG(str,...)
Definition: log.h:7
+
uint32_t height
Definition: bmp.c:62
+ +
uint8_t signature[2]
Definition: bmp.c:55
+
uint32_t img_size_bytes
Definition: bmp.c:66
+
uint32_t filesize
Definition: bmp.c:56
+
uint32_t header_size
Definition: bmp.c:60
+
uint16_t bits_per_pixel
Definition: bmp.c:64
+
uint32_t n_colors
Definition: bmp.c:69
+ +
int bmp_open(const char *file, gimp_bitmap_t **bitmap)
Definition: bmp.c:179
+
int bmp_open_path(const char *path, const char *file, gimp_bitmap_t **bitmap)
Definition: bmp.c:74
+
uint16_t reserved_a
Definition: bmp.c:57
+ +
uint32_t compression
Definition: bmp.c:65
+
uint32_t x_res
Definition: bmp.c:67
+
uint32_t width
Definition: bmp.c:61
+
uint16_t reserved_b
Definition: bmp.c:58
+
uint32_t y_res
Definition: bmp.c:68
+
void bmp_free(gimp_bitmap_t **bitmap)
Definition: bmp.c:183
+
uint32_t data_offset
Definition: bmp.c:59
+ +
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/bmp_8h.html b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8h.html new file mode 100644 index 0000000..dfe24ba --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8h.html @@ -0,0 +1,239 @@ + + + + + + +PiAIZU: lib/bmp.h File Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
bmp.h File Reference
+
+
+
#include "container.h"
+
+Include dependency graph for bmp.h:
+
+
+ + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + +
+
+

Go to the source code of this file.

+ + + + + + + + +

+Functions

int bmp_open (const char *file, gimp_bitmap_t **bitmap)
 
int bmp_open_path (const char *path, const char *file, gimp_bitmap_t **bitmap)
 
void bmp_free (gimp_bitmap_t **bitmap)
 
+

Function Documentation

+ +
+
+ + + + + + + + +
void bmp_free (gimp_bitmap_t ** bitmap)
+
+
Parameters
+ + +
bitmapbitmap to destroy and free
 Frees the bitmap and sets the pointer to null.
+
+
+ +

Definition at line 183 of file bmp.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int bmp_open (const char * file,
gimp_bitmap_t ** bitmap 
)
+
+
Parameters
+ + + +
filefilename to open, like logo.bmp
bitmapbitmap that later can be used in a container
+
+
+
Returns
Returns 0 on success, -1 on failure.
 Opens a .bmp file, decodes it and creates a gimp_bitmap_t bitmap
+ that can be printed in a container.
+ +

Definition at line 179 of file bmp.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int bmp_open_path (const char * path,
const char * file,
gimp_bitmap_t ** bitmap 
)
+
+
Parameters
+ + + + +
pathpath to file
filefilename to open, like logo.bmp
bitmapbitmap that later can be used in a container
+
+
+
Returns
Returns 0 on success, -1 on failure.
 Opens a .bmp file, decodes it and creates a gimp_bitmap_t bitmap
+ that can be printed in a container.
+ +

Definition at line 74 of file bmp.c.

+ +
+
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/bmp_8h__dep__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8h__dep__incl.map new file mode 100644 index 0000000..21cf91c --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8h__dep__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/bmp_8h__dep__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8h__dep__incl.md5 new file mode 100644 index 0000000..e9f1546 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8h__dep__incl.md5 @@ -0,0 +1 @@ +040d3470c2197882a955d2d07abb0439 \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/bmp_8h__dep__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8h__dep__incl.png new file mode 100644 index 0000000..4de4550 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8h__dep__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/bmp_8h__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8h__incl.map new file mode 100644 index 0000000..0b0a41f --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8h__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/bmp_8h__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8h__incl.md5 new file mode 100644 index 0000000..31538aa --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8h__incl.md5 @@ -0,0 +1 @@ +70f62fde35c5bd148323543c398a520e \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/bmp_8h__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8h__incl.png new file mode 100644 index 0000000..4778dc5 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8h__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/bmp_8h_source.html b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8h_source.html new file mode 100644 index 0000000..c90c62e --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/bmp_8h_source.html @@ -0,0 +1,105 @@ + + + + + + +PiAIZU: lib/bmp.h Source File + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
bmp.h
+
+
+Go to the documentation of this file.
1 #pragma once
2 #include "container.h"
3 
4 /**
5  *
6  * @param file filename to open, like logo.bmp
7  * @param bitmap bitmap that later can be used in a container
8  * @return Returns 0 on success, -1 on failure.
9  *
10  * Opens a .bmp file, decodes it and creates a gimp_bitmap_t bitmap
11  * that can be printed in a container.
12  */
13 int bmp_open(const char *file, gimp_bitmap_t **bitmap);
14 
15 /**
16  * @param path path to file
17  * @param file filename to open, like logo.bmp
18  * @param bitmap bitmap that later can be used in a container
19  * @return Returns 0 on success, -1 on failure.
20  *
21  * Opens a .bmp file, decodes it and creates a gimp_bitmap_t bitmap
22  * that can be printed in a container.
23  */
24 int bmp_open_path(const char *path, const char *file, gimp_bitmap_t **bitmap);
25 
26 /**
27  *
28  * @param bitmap bitmap to destroy and free
29  *
30  * Frees the bitmap and sets the pointer to null.
31  */
32 void bmp_free(gimp_bitmap_t **bitmap);
int bmp_open(const char *file, gimp_bitmap_t **bitmap)
Definition: bmp.c:179
+
int bmp_open_path(const char *path, const char *file, gimp_bitmap_t **bitmap)
Definition: bmp.c:74
+
void bmp_free(gimp_bitmap_t **bitmap)
Definition: bmp.c:183
+ + +
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/classes.html b/stage2/03-install-piaizu/files/fb/docs/html/classes.html new file mode 100644 index 0000000..03dcc25 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/classes.html @@ -0,0 +1,115 @@ + + + + + + +PiAIZU: Data Structure Index + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Data Structure Index
+
+
+
B | C | F | G | K | S
+ + + + + + + + + +
  b  
+
container_t   frame_buffer   
  k  
+
socket_datagram_lmx_coordinate_t   
containers_t   fwatch_client_t   socket_datagram_lmx_info_t   
bmp_header_t   coordinate_t   fwatch_t   key_action_t   socket_datagram_lmx_move_t   
  c  
+
  f  
+
  g  
+
key_press_event_t   socket_datagram_lmx_text_t   
  s  
+
container_info_t   font_character_t   gimp_bitmap_t   
socket_datagram_header_t   
+
B | C | F | G | K | S
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/closed.png b/stage2/03-install-piaizu/files/fb/docs/html/closed.png new file mode 100644 index 0000000..98cc2c9 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/closed.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/container_8c.html b/stage2/03-install-piaizu/files/fb/docs/html/container_8c.html new file mode 100644 index 0000000..d930891 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/container_8c.html @@ -0,0 +1,633 @@ + + + + + + +PiAIZU: lib/container.c File Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
container.c File Reference
+
+
+
#include "container.h"
+#include "log.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+Include dependency graph for container.c:
+
+
+ + + + + +
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Macros

#define ALPHA   3
 
#define RED   2
 
#define GREEN   1
 
#define BLUE   0
 
#define FRAMES_VISIBLE(x)   x
 
#define RGB_BITMASK   0x00FFFFFF
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

int container_valid (unsigned int container)
 
container_tcontainer_get (int container)
 
void container_reset (unsigned int container)
 
void container_visible (unsigned int container, bool visible)
 
int container_compile ()
 
int container_bitmap_at_xy (unsigned int container, int x, int y, gimp_bitmap_t *bm, bool transparent)
 
int container_fill_bitmap (unsigned int container, gimp_bitmap_t *bm, bool transparent)
 
int container_get_n (void)
 
void container_close ()
 
void container_new (containers_t *containers)
 
void container_move (unsigned int container, int delta_x, int delta_y)
 
int container_draw_line (unsigned int container, unsigned int from_x, unsigned int from_y, unsigned int to_x, unsigned int to_y)
 
+

Macro Definition Documentation

+ +
+
+ + + + +
#define ALPHA   3
+
+ +

Definition at line 7 of file container.c.

+ +
+
+ +
+
+ + + + +
#define BLUE   0
+
+ +

Definition at line 10 of file container.c.

+ +
+
+ +
+
+ + + + + + + + +
#define FRAMES_VISIBLE( x)   x
+
+ +

Definition at line 15 of file container.c.

+ +
+
+ +
+
+ + + + +
#define GREEN   1
+
+ +

Definition at line 9 of file container.c.

+ +
+
+ +
+
+ + + + +
#define RED   2
+
+ +

Definition at line 8 of file container.c.

+ +
+
+ +
+
+ + + + +
#define RGB_BITMASK   0x00FFFFFF
+
+ +

Definition at line 58 of file container.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int container_bitmap_at_xy (unsigned int container,
int x,
int y,
gimp_bitmap_tbm,
bool transparent 
)
+
+
Parameters
+ + + + + + +
containerContainer to fill with bitmap
xStart filling at offset x
yStart filling at offset y
bmbitmap image to fill
transparentDark pixels are not overwriting background for transparancy
 Calls container_bitmap_at_xy with x,y set to 0.
+
+ Places a bitmap image at coordinates x,y in container at index
+
"container"
+
+
+ +

Definition at line 156 of file container.c.

+ +
+
+ +
+
+ + + + + + + +
void container_close ()
+
+

Closes the framebuffer, frees all memory used for containers etc. Use this on exit.

+ +

Definition at line 197 of file container.c.

+ +
+
+ +
+
+ + + + + + + +
int container_compile ()
+
+

Will compile all containers into container 0 which is a copy of the framebuffer, and then the data is set to the real framebuffer to be displayed on the screen.

+ +

Definition at line 121 of file container.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int container_draw_line (unsigned int container,
unsigned int from_x,
unsigned int from_y,
unsigned int to_x,
unsigned int to_y 
)
+
+
Parameters
+ + + + + + +
containerContainer to draw in
from_xStart x point of line
from_yStart y point of line
to_xEnd x point of line
to_yEnd y point of line
+
+
+
Returns
0 on success, -1 on error.
+

This function will draw a line in a container

+ +

Definition at line 271 of file container.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int container_fill_bitmap (unsigned int container,
gimp_bitmap_tbm,
bool transparent 
)
+
+
Parameters
+ + + + +
containerContainer to fill with bitmap
bmbitmap image to fill
transparentDark pixels are not overwriting background for transparancy
 Calls container_bitmap_at_xy with x,y set to 0.
+
+
+ +

Definition at line 186 of file container.c.

+ +
+
+ +
+
+ + + + + + + + +
container_t * container_get (int container)
+
+
Parameters
+ + +
containerContainer to container_get
+
+
+
Returns
pointer to container.
+ +

Definition at line 190 of file container.c.

+ +
+
+ +
+
+ + + + + + + + +
int container_get_n (void )
+
+
Returns
returns amount of defined containers.
+ +

Definition at line 193 of file container.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void container_move (unsigned int container,
int delta_x,
int delta_y 
)
+
+
Parameters
+ + + + +
containerContainer to move
delta_xMove steps in x axis
delta_yMove steps in y axis
 Move container with delta_x and delta_y
+
+
+ +

Definition at line 263 of file container.c.

+ +
+
+ +
+
+ + + + + + + + +
void container_new (containers_tcontainers)
+
+

Creates a new set of containers, allocates memory, reads out the current framebuffer size etc..

+

todo Do not allocate this amount for each container.

+ +

Definition at line 209 of file container.c.

+ +
+
+ +
+
+ + + + + + + + +
void container_reset (unsigned int container)
+
+
Parameters
+ + +
containerContainer to reset to inital value
 Resets the container to initial state. Destroys
+ all contents.
+
+
+ +

Definition at line 73 of file container.c.

+ +
+
+ +
+
+ + + + + + + + +
int container_valid (unsigned int container)
+
+ +

Definition at line 62 of file container.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void container_visible (unsigned int container,
bool visible 
)
+
+
Parameters
+ + + +
containerContainer to show/hide
visibleSet to true to show and false hide.
  Set a container to be visible or hidden.
+  Content of container is not destroyed
+
+
+ +

Definition at line 109 of file container.c.

+ +
+
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/container_8c__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/container_8c__incl.map new file mode 100644 index 0000000..630a03d --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/container_8c__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/container_8c__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/container_8c__incl.md5 new file mode 100644 index 0000000..e7a9b10 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/container_8c__incl.md5 @@ -0,0 +1 @@ +8c47f00e606c940d761badbef2a8b799 \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/container_8c__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/container_8c__incl.png new file mode 100644 index 0000000..1b2eea1 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/container_8c__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/container_8c_source.html b/stage2/03-install-piaizu/files/fb/docs/html/container_8c_source.html new file mode 100644 index 0000000..1474e80 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/container_8c_source.html @@ -0,0 +1,147 @@ + + + + + + +PiAIZU: lib/container.c Source File + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
container.c
+
+
+Go to the documentation of this file.
1 #include "container.h"
2 #include "log.h"
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <string.h>
6 
7 #define ALPHA 3
8 #define RED 2
9 #define GREEN 1
10 #define BLUE 0
11 
12 #if DBG
13 #define FRAMES_VISIBLE(x) 1
14 #else
15 #define FRAMES_VISIBLE(x) x
16 #endif
17 
18 static containers_t default_container_data = {
19  .n = 2,
20  .c =
21  {
22  {
23  /* 0 master layer */
24  .x = 0,
25  .y = 0,
26  .width = LMX_PIXEL_WIDTH,
27  .height = LMX_PIXEL_HEIGHT,
28  .bits_per_pixel = 32,
29  .transparent = false,
30  .visible = true,
31  .frame = FRAMES_VISIBLE(0),
32  .bg_color = {0x00, 0x00, 0x00, 0x00},
33  .description = "Master container, copy of HW framebuffer",
34  .data = NULL,
35  },
36  {
37  /* 1 */
38  .x = 0,
39  .y = 0,
40  .width = LMX_PIXEL_WIDTH,
41  .height = LMX_PIXEL_HEIGHT,
42  .bits_per_pixel = 32,
43  .transparent = false,
44  .visible = true,
45  .frame = FRAMES_VISIBLE(0),
46  .bg_color = {0x00, 0x00, 0x00, 0x00},
47  .description = "Full screen",
48  .data = NULL,
49  },
50  },
51 };
52 
53 static containers_t *container_data;
54 
55 #ifdef GREEN_MONOCHROME
56 #define RGB_BITMASK 0x0000FF00
57 #else
58 #define RGB_BITMASK 0x00FFFFFF
59 #endif
60 
61 /* Static functions*/
62 int container_valid(unsigned int container) {
63  if (container == 0 || container >= container_data->n) {
64  return -1;
65  } else {
66  return 0;
67  }
68 }
69 
70 /* Public functions */
71 container_t *container_get(int container);
72 
73 void container_reset(unsigned int container) {
74 
75  memset(container_get(container)->data, 0x00, container_get(container)->framesize_mem);
76 
77  if (container_get(container)->frame) {
78  container_draw_line(container, 0, 0, container_get(container)->width - 1, 0);
79  container_draw_line(container, 0, container_get(container)->height - 1, container_get(container)->width - 1,
80  container_get(container)->height - 1);
81  container_draw_line(container, 0, 1, 0, container_get(container)->height - 1);
82 
83  container_draw_line(container, container_get(container)->width - 1, 0, container_get(container)->width - 1,
84  container_get(container)->height - 1);
85  }
86 }
87 
88 static inline int container_get_pixel(unsigned int c, int col, int row, uint32_t *rgba) {
89  uint32_t *px;
90 
91  px = (uint32_t *)container_data->c[c].data;
92 
93  *rgba = px[(col + row * (container_data->c[c].width + container_data->c[c].padding))];
94 
95  return 0;
96 }
97 
98 static inline int container_set_pixel(unsigned int c, int col, int row, uint32_t rgba) {
99 
100  uint32_t *px;
101 
102  px = (uint32_t *)container_data->c[c].data;
103 
104  px[(col + row * (container_data->c[c].width + container_data->c[c].padding))] = rgba & RGB_BITMASK;
105 
106  return 0;
107 }
108 
109 void container_visible(unsigned int container, bool visible) {
110  if (container_valid(container)) {
111  return;
112  }
113 
114 #ifdef DBG
115  LOG("Container: %d is %s\n", container, visible ? "Visible" : "Invisible");
116 #endif
117  container_data->c[container].visible = visible;
118  return;
119 }
120 
122 
123  unsigned int c = 0;
124 
125  for (c = 1; c < container_data->n; c++) {
126  if (!container_data->c[c].visible) {
127  continue;
128  }
129 
130  for (unsigned int row = 0; row < container_data->c[c].height; row++) {
131  for (unsigned int col = 0; col < container_data->c[c].width; col++) {
132  uint32_t rgba;
133 
134  container_get_pixel(c, col, row, &rgba);
135  if (container_data->c[c].transparent) {
136  if ((rgba & 0x00FFFFFF) == 0x00) {
137  continue;
138  }
139  }
140 #ifdef ROTATE_180
141  container_set_pixel(0, (container_data->c[0].width - 1) - (container_data->c[c].x + col),
142  (container_data->c[0].height - 1) - (container_data->c[c].y + row), rgba);
143 #else
144  container_set_pixel(0, container_data->c[c].x + col, container_data->c[c].y + row, rgba);
145 #endif
146  }
147  }
148  }
149 
150  framebuffer_update(container_data->c[0].data);
151  memset(container_data->c[0].data, 0x00,
152  container_data->c[0].width * container_data->c[0].height * sizeof(uint8_t) * 4);
153  return 0;
154 }
155 
156 int container_bitmap_at_xy(unsigned int container, int x, int y, gimp_bitmap_t *bm, bool transparent) {
157  unsigned int w;
158  unsigned int h;
159 
160  uint32_t *px;
161 
162  if (container_valid(container)) {
163  return -1;
164  }
165  if (bm == NULL) {
166  return -1;
167  }
168 
169  for (h = 0; h < bm->height; h++) {
170 
171  for (w = 0; w < bm->width; w++) {
172  px = (uint32_t *)bm->pixel_data;
173  if (transparent) {
174  if ((px[(w + h * bm->width)] & 0x00FFFFFF) == 0x00) {
175  continue;
176  }
177  }
178 
179  container_set_pixel(container, w + x, y + h, px[(w + h * bm->width)]);
180  }
181  }
182 
183  return 0;
184 }
185 
186 int container_fill_bitmap(unsigned int container, gimp_bitmap_t *bm, bool transparent) {
187  return container_bitmap_at_xy(container, 0, 0, bm, transparent);
188 }
189 
190 container_t *container_get(int container) {
191  return &container_data->c[container];
192 }
193 int container_get_n(void) {
194  return container_data->n;
195 }
196 
198  unsigned int i;
199  for (i = 0; i < container_data->n; i++) {
200  container_t *l = &container_data->c[i];
201  if (l->data) {
202  free(l->data);
203  }
204  }
205  free(container_data);
207 }
208 
209 void container_new(containers_t *containers) {
210  /* Initialise all containers */
211  unsigned int i;
212  struct frame_buffer fb;
213  size_t total_bytes = 0;
214 
215  fb = new_frame_buffer();
216 
217  if (containers == NULL) {
218  size_t s = sizeof(containers_t) + default_container_data.n * sizeof(container_t);
219  container_data = malloc(s);
220  memcpy(container_data, &default_container_data, s);
221 
222  } else {
223  size_t s = sizeof(containers_t) + containers->n * sizeof(container_t);
224 
225  container_data = malloc(s);
226  memcpy(container_data, containers, s);
227  }
228 
229  for (i = 0; i < container_data->n; i++) {
230  void * data;
231  size_t allocsize = 0;
232  container_t *l = &container_data->c[i];
233 
234  /* Layer 0 must have same dimension than the framebuffer */
235  if (i == 0) {
236  allocsize = fb.buffer_size;
237  l->width = fb.width;
238  l->height = fb.height;
239  l->padding = fb.padding;
240  } else {
241  allocsize = (l->width) * l->height * (fb.var_info.bits_per_pixel / 8);
242  l->padding = 0;
243  }
244 
245  data = calloc(allocsize, 1); /** todo Do not allocate this amount for each container. */
246 
247  l->framesize_mem = allocsize;
248  total_bytes += l->framesize_mem;
249  LOG("Container %02d: % 5d x% 5d bits/pix %d Visible: %s Transparent: %s "
250  "size: % 8zd bytes padding: %2d %s\n",
251  i, l->width, l->height, fb.var_info.bits_per_pixel, l->visible ? "True " : "False",
252  l->transparent ? "True " : "False", l->framesize_mem, l->padding, l->description);
253 
254  /* All containers must have same color format, at least to start with */
255  l->bits_per_pixel = fb.var_info.bits_per_pixel;
256  l->data = data;
257 
258  container_reset(i);
259  }
260  LOG("Total bytes allocated to %zd containers is: %zd bytes\n", container_data->n - 1, total_bytes);
261 }
262 
263 void container_move(unsigned int container, int delta_x, int delta_y) {
264  if (container_valid(container)) {
265  return;
266  }
267  container_data->c[container].x += delta_x;
268  container_data->c[container].y += delta_y;
269 }
270 
272  unsigned int container, unsigned int from_x, unsigned int from_y, unsigned int to_x, unsigned int to_y) {
273  double k;
274  int m;
275  unsigned int x, y;
276  uint32_t rgba = 0x0;
277 
278  if (container_valid(container)) {
279  return -1;
280  }
281  if (to_x >= container_data->c[container].width || to_y >= container_data->c[container].height ||
282  from_x >= container_data->c[container].width || from_y >= container_data->c[container].height) {
283  return -1;
284  }
285 
286  rgba = 0x0000FF00;
287 
288  if ((to_x - from_x) == 0) {
289 
290  for (y = from_y; y < to_y; y++) {
291  container_set_pixel(container, to_x, y, rgba);
292  }
293 
294  return 0;
295  }
296 
297  k = (double)to_y - from_y;
298  k = k / (to_x - from_x);
299 
300  m = (to_y - k * to_x);
301 
302  for (x = from_x; x <= to_x; x++) {
303  y = (k * x) + m;
304  container_set_pixel(container, x, y, rgba);
305  }
306 
307  return 0;
308 }
unsigned char pixel_data[]
Definition: container.h:41
+ + +
container_t c[]
Definition: container.h:33
+ +
bool visible
Definition: container.h:23
+
#define LOG(str,...)
Definition: log.h:7
+ +
int bits_per_pixel
Definition: container.h:20
+
int container_fill_bitmap(unsigned int container, gimp_bitmap_t *bm, bool transparent)
Definition: container.c:186
+ +
#define RGB_BITMASK
Definition: container.c:58
+
#define LMX_PIXEL_WIDTH
Definition: container.h:8
+
struct frame_buffer new_frame_buffer()
Definition: framebuffer.c:13
+
bool transparent
Definition: container.h:22
+
container_t * container_get(int container)
Definition: container.c:190
+
int container_get_n(void)
Definition: container.c:193
+
long int buffer_size
Definition: framebuffer.h:17
+
void container_visible(unsigned int container, bool visible)
Definition: container.c:109
+
#define LMX_PIXEL_HEIGHT
Definition: container.h:9
+
int container_draw_line(unsigned int container, unsigned int from_x, unsigned int from_y, unsigned int to_x, unsigned int to_y)
Definition: container.c:271
+
unsigned int width
Definition: container.h:18
+ +
unsigned int width
Definition: container.h:38
+
uint8_t(* data)[]
Definition: container.h:28
+
void container_move(unsigned int container, int delta_x, int delta_y)
Definition: container.c:263
+
void container_reset(unsigned int container)
Definition: container.c:73
+
int container_compile()
Definition: container.c:121
+
size_t n
Definition: container.h:32
+
size_t framesize_mem
Definition: container.h:25
+
#define FRAMES_VISIBLE(x)
Definition: container.c:15
+ + +
int container_valid(unsigned int container)
Definition: container.c:62
+
void container_new(containers_t *containers)
Definition: container.c:209
+
unsigned int height
Definition: container.h:19
+ +
int container_bitmap_at_xy(unsigned int container, int x, int y, gimp_bitmap_t *bm, bool transparent)
Definition: container.c:156
+
void container_close()
Definition: container.c:197
+ +
unsigned int height
Definition: container.h:39
+
void framebuffer_update(void *mem)
Definition: framebuffer.c:60
+
char * description
Definition: container.h:27
+
struct fb_var_screeninfo var_info
Definition: framebuffer.h:10
+ +
int padding
Definition: container.h:21
+
void destroy_frame_buffer()
Definition: framebuffer.c:55
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/container_8h.html b/stage2/03-install-piaizu/files/fb/docs/html/container_8h.html new file mode 100644 index 0000000..389887a --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/container_8h.html @@ -0,0 +1,617 @@ + + + + + + +PiAIZU: lib/container.h File Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
container.h File Reference
+
+
+
#include "framebuffer.h"
+#include <stdlib.h>
+
+Include dependency graph for container.h:
+
+
+ + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + + + + + +
+
+

Go to the source code of this file.

+ + + + + + + + +

+Data Structures

struct  container_t
 
struct  containers_t
 
struct  gimp_bitmap_t
 
+ + + + + + + + + +

+Macros

#define LMX_PIXEL_WIDTH   419
 
#define LMX_PIXEL_HEIGHT   138
 
#define LMX_W   LMX_PIXEL_WIDTH
 
#define LMX_H   LMX_PIXEL_HEIGHT
 
+ + + +

+Typedefs

typedef uint8_t rgba_t[4]
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Functions

void container_new (containers_t *containers)
 
int container_bitmap_at_xy (unsigned int container, int x, int y, gimp_bitmap_t *bm, bool transparent)
 
int container_fill_bitmap (unsigned int container, gimp_bitmap_t *bm, bool transparent)
 
int container_compile ()
 
void container_visible (unsigned int container, bool visible)
 
void container_move (unsigned int container, int delta_x, int delta_y)
 
void container_reset (unsigned int container)
 
void container_close ()
 
int container_draw_line (unsigned int container, unsigned int from_x, unsigned int from_y, unsigned int to_x, unsigned int to_y)
 
int container_get_n (void)
 
container_tcontainer_get (int container)
 
+

Macro Definition Documentation

+ +
+
+ + + + +
#define LMX_H   LMX_PIXEL_HEIGHT
+
+ +

Definition at line 12 of file container.h.

+ +
+
+ +
+
+ + + + +
#define LMX_PIXEL_HEIGHT   138
+
+ +

Definition at line 9 of file container.h.

+ +
+
+ +
+
+ + + + +
#define LMX_PIXEL_WIDTH   419
+
+ +

Definition at line 8 of file container.h.

+ +
+
+ +
+
+ + + + +
#define LMX_W   LMX_PIXEL_WIDTH
+
+ +

Definition at line 11 of file container.h.

+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
typedef uint8_t rgba_t[4]
+
+ +

Definition at line 6 of file container.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int container_bitmap_at_xy (unsigned int container,
int x,
int y,
gimp_bitmap_tbm,
bool transparent 
)
+
+
Parameters
+ + + + + + +
containerContainer to fill with bitmap
xStart filling at offset x
yStart filling at offset y
bmbitmap image to fill
transparentDark pixels are not overwriting background for transparancy
 Calls container_bitmap_at_xy with x,y set to 0.
+
+ Places a bitmap image at coordinates x,y in container at index
+
"container"
+
+
+ +

Definition at line 156 of file container.c.

+ +
+
+ +
+
+ + + + + + + +
void container_close ()
+
+

Closes the framebuffer, frees all memory used for containers etc. Use this on exit.

+ +

Definition at line 197 of file container.c.

+ +
+
+ +
+
+ + + + + + + +
int container_compile ()
+
+

Will compile all containers into container 0 which is a copy of the framebuffer, and then the data is set to the real framebuffer to be displayed on the screen.

+ +

Definition at line 121 of file container.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int container_draw_line (unsigned int container,
unsigned int from_x,
unsigned int from_y,
unsigned int to_x,
unsigned int to_y 
)
+
+
Parameters
+ + + + + + +
containerContainer to draw in
from_xStart x point of line
from_yStart y point of line
to_xEnd x point of line
to_yEnd y point of line
+
+
+
Returns
0 on success, -1 on error.
+

This function will draw a line in a container

+ +

Definition at line 271 of file container.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int container_fill_bitmap (unsigned int container,
gimp_bitmap_tbm,
bool transparent 
)
+
+
Parameters
+ + + + +
containerContainer to fill with bitmap
bmbitmap image to fill
transparentDark pixels are not overwriting background for transparancy
 Calls container_bitmap_at_xy with x,y set to 0.
+
+
+ +

Definition at line 186 of file container.c.

+ +
+
+ +
+
+ + + + + + + + +
container_t* container_get (int container)
+
+
Parameters
+ + +
containerContainer to container_get
+
+
+
Returns
pointer to container.
+ +

Definition at line 190 of file container.c.

+ +
+
+ +
+
+ + + + + + + + +
int container_get_n (void )
+
+
Returns
returns amount of defined containers.
+ +

Definition at line 193 of file container.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void container_move (unsigned int container,
int delta_x,
int delta_y 
)
+
+
Parameters
+ + + + +
containerContainer to move
delta_xMove steps in x axis
delta_yMove steps in y axis
 Move container with delta_x and delta_y
+
+
+ +

Definition at line 263 of file container.c.

+ +
+
+ +
+
+ + + + + + + + +
void container_new (containers_tcontainers)
+
+

Creates a new set of containers, allocates memory, reads out the current framebuffer size etc..

+

todo Do not allocate this amount for each container.

+ +

Definition at line 209 of file container.c.

+ +
+
+ +
+
+ + + + + + + + +
void container_reset (unsigned int container)
+
+
Parameters
+ + +
containerContainer to reset to inital value
 Resets the container to initial state. Destroys
+ all contents.
+
+
+ +

Definition at line 73 of file container.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void container_visible (unsigned int container,
bool visible 
)
+
+
Parameters
+ + + +
containerContainer to show/hide
visibleSet to true to show and false hide.
  Set a container to be visible or hidden.
+  Content of container is not destroyed
+
+
+ +

Definition at line 109 of file container.c.

+ +
+
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/container_8h__dep__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/container_8h__dep__incl.map new file mode 100644 index 0000000..01314e0 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/container_8h__dep__incl.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/container_8h__dep__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/container_8h__dep__incl.md5 new file mode 100644 index 0000000..789118a --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/container_8h__dep__incl.md5 @@ -0,0 +1 @@ +8690c24bdf9e8cc0554d9f8d60a8d7f0 \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/container_8h__dep__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/container_8h__dep__incl.png new file mode 100644 index 0000000..d0d0e18 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/container_8h__dep__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/container_8h__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/container_8h__incl.map new file mode 100644 index 0000000..e30cea7 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/container_8h__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/container_8h__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/container_8h__incl.md5 new file mode 100644 index 0000000..76423cd --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/container_8h__incl.md5 @@ -0,0 +1 @@ +744326d8a5114a3e15d346567b1ef23b \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/container_8h__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/container_8h__incl.png new file mode 100644 index 0000000..0e58edb Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/container_8h__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/container_8h_source.html b/stage2/03-install-piaizu/files/fb/docs/html/container_8h_source.html new file mode 100644 index 0000000..278362d --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/container_8h_source.html @@ -0,0 +1,133 @@ + + + + + + +PiAIZU: lib/container.h Source File + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
container.h
+
+
+Go to the documentation of this file.
1 #pragma once
2 
3 #include "framebuffer.h"
4 #include <stdlib.h>
5 
6 typedef uint8_t rgba_t[4];
7 
8 #define LMX_PIXEL_WIDTH 419
9 #define LMX_PIXEL_HEIGHT 138
10 
11 #define LMX_W LMX_PIXEL_WIDTH
12 #define LMX_H LMX_PIXEL_HEIGHT
13 
14 typedef struct {
15  int handle;
16  int x;
17  int y;
18  unsigned int width;
19  unsigned int height;
21  int padding;
23  bool visible;
24  char frame;
25  size_t framesize_mem;
27  char * description;
28  uint8_t (*data)[];
29 } container_t;
30 
31 typedef struct {
32  size_t n;
34 } containers_t;
35 
36 #pragma pack(2)
37 typedef struct {
38  unsigned int width;
39  unsigned int height;
40  unsigned int bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA */
41  unsigned char pixel_data[];
43 
44 /**
45  *
46  * Creates a new set of containers, allocates memory,
47  * reads out the current framebuffer size etc..
48  */
49 void container_new(containers_t *containers);
50 
51 /**
52  *
53  * @param container Container to fill with bitmap
54  * @param x Start filling at offset x
55  * @param y Start filling at offset y
56  * @param bm bitmap image to fill
57  * @param transparent Dark pixels are not overwriting background for
58  * transparancy
59  *
60  * Calls container_bitmap_at_xy with x,y set to 0.
61  *
62  * Places a bitmap image at coordinates x,y in container at index
63  * "container"
64  */
65 int container_bitmap_at_xy(unsigned int container, int x, int y, gimp_bitmap_t *bm, bool transparent);
66 
67 /**
68  *
69  * @param container Container to fill with bitmap
70  * @param bm bitmap image to fill
71  * @param transparent Dark pixels are not overwriting background for
72  * transparancy
73  *
74  * Calls container_bitmap_at_xy with x,y set to 0.
75  */
76 int container_fill_bitmap(unsigned int container, gimp_bitmap_t *bm, bool transparent);
77 
78 /**
79  *
80  * Will compile all containers into container 0 which is a copy of the
81  * framebuffer, and then the data is set to the real framebuffer
82  * to be displayed on the screen.
83  */
84 int container_compile();
85 
86 /**
87  * @param container Container to show/hide
88  * @param visible Set to true to show and false hide.
89  *
90  * Set a container to be visible or hidden.
91  * Content of container is not destroyed
92  */
93 void container_visible(unsigned int container, bool visible);
94 
95 /**
96  * @param container Container to move
97  * @param delta_x Move steps in x axis
98  * @param delta_y Move steps in y axis
99  *
100  * Move container with delta_x and delta_y
101  */
102 void container_move(unsigned int container, int delta_x, int delta_y);
103 
104 /**
105  * @param container Container to reset to inital value
106  *
107  * Resets the container to initial state. Destroys
108  * all contents.
109  */
110 void container_reset(unsigned int container);
111 
112 /**
113  *
114  * Closes the framebuffer, frees all memory used for containers etc.
115  * Use this on exit.
116  */
117 void container_close();
118 
119 /**
120  * @param container Container to draw in
121  * @param from_x Start x point of line
122  * @param from_y Start y point of line
123  * @param to_x End x point of line
124  * @param to_y End y point of line
125  *
126  * @return 0 on success, -1 on error.
127  *
128  * This function will draw a line in a container
129  */
130 
132  unsigned int container, unsigned int from_x, unsigned int from_y, unsigned int to_x, unsigned int to_y);
133 
134 /**
135  *
136  * @return returns amount of defined containers.
137  */
138 int container_get_n(void);
139 
140 /**
141  * @param container Container to container_get
142  *
143  * @return pointer to container.
144  */
145 container_t *container_get(int container);
+ +
bool visible
Definition: container.h:23
+
int container_fill_bitmap(unsigned int container, gimp_bitmap_t *bm, bool transparent)
Definition: container.c:186
+
int bits_per_pixel
Definition: container.h:20
+ +
int container_get_n(void)
Definition: container.c:193
+
int container_draw_line(unsigned int container, unsigned int from_x, unsigned int from_y, unsigned int to_x, unsigned int to_y)
Definition: container.c:271
+
uint8_t rgba_t[4]
Definition: container.h:6
+
unsigned int bytes_per_pixel
Definition: container.h:40
+
void container_visible(unsigned int container, bool visible)
Definition: container.c:109
+
bool transparent
Definition: container.h:22
+
void container_reset(unsigned int container)
Definition: container.c:73
+
unsigned int width
Definition: container.h:18
+
void container_new(containers_t *containers)
Definition: container.c:209
+
container_t * container_get(int container)
Definition: container.c:190
+ +
unsigned int width
Definition: container.h:38
+
size_t n
Definition: container.h:32
+
size_t framesize_mem
Definition: container.h:25
+
void container_move(unsigned int container, int delta_x, int delta_y)
Definition: container.c:263
+
unsigned int height
Definition: container.h:19
+ +
int container_compile()
Definition: container.c:121
+ +
char frame
Definition: container.h:24
+
unsigned int height
Definition: container.h:39
+
char * description
Definition: container.h:27
+
void container_close()
Definition: container.c:197
+
rgba_t bg_color
Definition: container.h:26
+
int handle
Definition: container.h:15
+
int padding
Definition: container.h:21
+
int container_bitmap_at_xy(unsigned int container, int x, int y, gimp_bitmap_t *bm, bool transparent)
Definition: container.c:156
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/define__containers_8h.html b/stage2/03-install-piaizu/files/fb/docs/html/define__containers_8h.html new file mode 100644 index 0000000..28f657c --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/define__containers_8h.html @@ -0,0 +1,418 @@ + + + + + + +PiAIZU: define_containers.h File Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
define_containers.h File Reference
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + +
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Macros

#define FRAME(x)   x
 
#define FRAMES_VISIBLE(x)   x
 
#define CONTAINER_DEFINE(x)
 
#define CONTAINER_HANDLE_ENUM(HANDLE, X, Y, WIDTH, HEIGHT, TRANSPARENT, VISIBLE, SHOW_FRAME, DESCRIPTION)   HANDLE,
 
#define CONTAINER_HANDLE_STR(HANDLE, X, Y, WIDTH, HEIGHT, TRANSPARENT, VISIBLE, SHOW_FRAME, DESCRIPTION)   #HANDLE ,
 
#define CONTAINER_ARRAY(HANDLE, X, Y, WIDTH, HEIGHT, TRANSPARENT, VISIBLE, SHOW_FRAME, DESCRIPTION)
 
+ + + +

+Enumerations

enum  container_handle_e { N_CONTAINERS + }
 
+

Macro Definition Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define CONTAINER_ARRAY( HANDLE,
 X,
 Y,
 WIDTH,
 HEIGHT,
 TRANSPARENT,
 VISIBLE,
 SHOW_FRAME,
 DESCRIPTION 
)
+
+Value:
{ \
.x = X, \
.y = Y, \
.width = WIDTH, \
.height = HEIGHT, \
.bits_per_pixel = 32, \
.transparent = TRANSPARENT, \
.visible = VISIBLE, \
.frame = SHOW_FRAME, \
.bg_color = {0x00, 0x00, 0x00, 0x00}, \
.description = DESCRIPTION, \
.data = NULL, \
},
+

Definition at line 39 of file define_containers.h.

+ +
+
+ +
+
+ + + + + + + + +
#define CONTAINER_DEFINE( x)
+
+Value:
/* 00 */ x(FB_COPY , 0 ,0 , LMX_W, LMX_H, false, true, FRAME(0), "Master container, copy of HW framebuffer") \
/* 01 */ x(FULL_SCREEN , 0 ,0 , LMX_W, LMX_H, false, true, FRAME(0), "Full screen, not used") \
/* 02 */ x(SONY_LOGO , 20 ,10 , 246 , 52, true , true, FRAME(0), "Master container, copy of HW framebuffer") \
/* 03 */ x(AP_A , 360 , 1 , 57 , 70, false, true, FRAME(0), "Access point symbol A") \
/* 04 */ x(AP_B , 360 , 1 , 57 , 70, true , true, FRAME(0), "Access point symbol B") \
/* 05 */ x(AP_C , 360 , 1 , 57 , 70, true , true, FRAME(0), "Access point symbol C") \
/* 06 */ x(AP_D , 360 , 1 , 57 , 70, true , true, FRAME(0), "Access point symbol D") \
/* 07 */ x(TEXT , 375 ,75 , 30 , 30, true , true, FRAME(0), "Text") \
/* 08 */ x(WIFI_TEXTBOX , 20 ,80 , 280 , 48, true , true, FRAME(0), "Connect to wifi textbox") \
/* 09 */ x(KEY_INFO , 290 ,10 , 65 , 62, true , true, FRAME(0), "Key event information") \
/* 10 */ x(WEB_MESSAGES , 0 ,LMX_H - 21, LMX_W, 20, true , true, FRAME(0), "Web message area") \
/* 11 */ x(POINTER , 0 ,0 , LMX_W, LMX_H, true , true, FRAME(0), "Cross-hair area")
#define LMX_H
Definition: container.h:12
+
#define FRAME(x)
+
#define LMX_W
Definition: container.h:11
+
+

Definition at line 17 of file define_containers.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define CONTAINER_HANDLE_ENUM( HANDLE,
 X,
 Y,
 WIDTH,
 HEIGHT,
 TRANSPARENT,
 VISIBLE,
 SHOW_FRAME,
 DESCRIPTION 
)   HANDLE,
+
+ +

Definition at line 31 of file define_containers.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define CONTAINER_HANDLE_STR( HANDLE,
 X,
 Y,
 WIDTH,
 HEIGHT,
 TRANSPARENT,
 VISIBLE,
 SHOW_FRAME,
 DESCRIPTION 
)   #HANDLE ,
+
+ +

Definition at line 32 of file define_containers.h.

+ +
+
+ +
+
+ + + + + + + + +
#define FRAME( x)   x
+
+ +

Definition at line 6 of file define_containers.h.

+ +
+
+ +
+
+ + + + + + + + +
#define FRAMES_VISIBLE( x)   x
+
+ +

Definition at line 12 of file define_containers.h.

+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum container_handle_e
+
+ + +
Enumerator
N_CONTAINERS  +
+ +

Definition at line 34 of file define_containers.h.

+ +
+
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/define__containers_8h__dep__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/define__containers_8h__dep__incl.map new file mode 100644 index 0000000..6a700cc --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/define__containers_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/define__containers_8h__dep__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/define__containers_8h__dep__incl.md5 new file mode 100644 index 0000000..b02f244 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/define__containers_8h__dep__incl.md5 @@ -0,0 +1 @@ +1d719b03c3bc49f52477b18d25433750 \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/define__containers_8h__dep__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/define__containers_8h__dep__incl.png new file mode 100644 index 0000000..82435d8 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/define__containers_8h__dep__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/define__containers_8h_source.html b/stage2/03-install-piaizu/files/fb/docs/html/define__containers_8h_source.html new file mode 100644 index 0000000..9c41f79 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/define__containers_8h_source.html @@ -0,0 +1,103 @@ + + + + + + +PiAIZU: define_containers.h Source File + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + +
+ +
+
+ + +
+ +
+ +
+
+
define_containers.h
+
+
+Go to the documentation of this file.
1 #pragma once
2 
3 #if DBG
4 #define FRAME(x) 1
5 #else
6 #define FRAME(x) x
7 #endif
8 
9 #if DBG
10 #define FRAMES_VISIBLE(x) 1
11 #else
12 #define FRAMES_VISIBLE(x) x
13 #endif
14 
15 // clang-format off
16 /* HANDLE, X, Y, WIDTH, HEIGHT, TRANSPARENT, VISIBLE, SHOW_FRAME, DESCRIPTION) */
17 #define CONTAINER_DEFINE(x) \
18  /* 00 */ x(FB_COPY , 0 ,0 , LMX_W, LMX_H, false, true, FRAME(0), "Master container, copy of HW framebuffer") \
19  /* 01 */ x(FULL_SCREEN , 0 ,0 , LMX_W, LMX_H, false, true, FRAME(0), "Full screen, not used") \
20  /* 02 */ x(SONY_LOGO , 20 ,10 , 246 , 52, true , true, FRAME(0), "Master container, copy of HW framebuffer") \
21  /* 03 */ x(AP_A , 360 , 1 , 57 , 70, false, true, FRAME(0), "Access point symbol A") \
22  /* 04 */ x(AP_B , 360 , 1 , 57 , 70, true , true, FRAME(0), "Access point symbol B") \
23  /* 05 */ x(AP_C , 360 , 1 , 57 , 70, true , true, FRAME(0), "Access point symbol C") \
24  /* 06 */ x(AP_D , 360 , 1 , 57 , 70, true , true, FRAME(0), "Access point symbol D") \
25  /* 07 */ x(TEXT , 375 ,75 , 30 , 30, true , true, FRAME(0), "Text") \
26  /* 08 */ x(WIFI_TEXTBOX , 20 ,80 , 280 , 48, true , true, FRAME(0), "Connect to wifi textbox") \
27  /* 09 */ x(KEY_INFO , 290 ,10 , 65 , 62, true , true, FRAME(0), "Key event information") \
28  /* 10 */ x(WEB_MESSAGES , 0 ,LMX_H - 21, LMX_W, 20, true , true, FRAME(0), "Web message area") \
29  /* 11 */ x(POINTER , 0 ,0 , LMX_W, LMX_H, true , true, FRAME(0), "Cross-hair area")
30 
31 #define CONTAINER_HANDLE_ENUM(HANDLE, X, Y, WIDTH, HEIGHT, TRANSPARENT, VISIBLE, SHOW_FRAME, DESCRIPTION) HANDLE,
32 #define CONTAINER_HANDLE_STR(HANDLE, X, Y, WIDTH, HEIGHT, TRANSPARENT, VISIBLE, SHOW_FRAME, DESCRIPTION) #HANDLE ,
33 
34 typedef enum {
38 
39 #define CONTAINER_ARRAY(HANDLE, X, Y, WIDTH, HEIGHT, TRANSPARENT, VISIBLE, SHOW_FRAME, DESCRIPTION) \
40  { \
41  .x = X, \
42  .y = Y, \
43  .width = WIDTH, \
44  .height = HEIGHT, \
45  .bits_per_pixel = 32, \
46  .transparent = TRANSPARENT, \
47  .visible = VISIBLE, \
48  .frame = SHOW_FRAME, \
49  .bg_color = {0x00, 0x00, 0x00, 0x00}, \
50  .description = DESCRIPTION, \
51  .data = NULL, \
52  },
53 
54 #if 0
55 
56 typedef struct {
57  size_t n;
58  container_t c[];
59 } containers_t;
60 
61 
62 static container_t containers[] = {
64 };
65 
66 #endif
67 
68 static containers_t containers = {
69  .n = N_CONTAINERS,
70  .c =
71  {
73  }
74 };
75 // clang-format on
+
#define CONTAINER_DEFINE(x)
+ + +
#define CONTAINER_HANDLE_ENUM(HANDLE, X, Y, WIDTH, HEIGHT, TRANSPARENT, VISIBLE, SHOW_FRAME, DESCRIPTION)
+
#define CONTAINER_ARRAY(HANDLE, X, Y, WIDTH, HEIGHT, TRANSPARENT, VISIBLE, SHOW_FRAME, DESCRIPTION)
+
container_handle_e
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/dir_000001_000000.html b/stage2/03-install-piaizu/files/fb/docs/html/dir_000001_000000.html new file mode 100644 index 0000000..2c782a9 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/dir_000001_000000.html @@ -0,0 +1,90 @@ + + + + + + +PiAIZU: lib -> cgi-src Relation + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + +
+
+ + +
+ +
+ + +
+
+

lib → cgi-src Relation

File in libIncludes file in cgi-src
webrequest.clmxsocket.h
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/dir_13f8d8320159c08b3eb7e184323c9bd9.html b/stage2/03-install-piaizu/files/fb/docs/html/dir_13f8d8320159c08b3eb7e184323c9bd9.html new file mode 100644 index 0000000..3289646 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/dir_13f8d8320159c08b3eb7e184323c9bd9.html @@ -0,0 +1,108 @@ + + + + + + +PiAIZU: cgi-src Directory Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
cgi-src Directory Reference
+
+
+ + + + + + +

+Files

file  lmxjson.c [code]
 
file  lmxsocket.h [code]
 
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/dir_97aefd0d527b934f1d99a682da8fe6a9.html b/stage2/03-install-piaizu/files/fb/docs/html/dir_97aefd0d527b934f1d99a682da8fe6a9.html new file mode 100644 index 0000000..ecf21b2 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/dir_97aefd0d527b934f1d99a682da8fe6a9.html @@ -0,0 +1,148 @@ + + + + + + +PiAIZU: lib Directory Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
lib Directory Reference
+
+
+
+Directory dependency graph for lib:
+
+
lib
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  bmp.c [code]
 
file  bmp.h [code]
 
file  container.c [code]
 
file  container.h [code]
 
file  framebuffer.c [code]
 
file  framebuffer.h [code]
 
file  fwatch.c [code]
 
file  fwatch.h [code]
 
file  keys.c [code]
 
file  keys.h [code]
 
file  log.h [code]
 
file  text.c [code]
 
file  text.h [code]
 
file  version.c [code]
 
file  version.h [code]
 
file  webrequest.c [code]
 
file  webrequest.h [code]
 
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/dir_97aefd0d527b934f1d99a682da8fe6a9_dep.map b/stage2/03-install-piaizu/files/fb/docs/html/dir_97aefd0d527b934f1d99a682da8fe6a9_dep.map new file mode 100644 index 0000000..7d12f46 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/dir_97aefd0d527b934f1d99a682da8fe6a9_dep.map @@ -0,0 +1,5 @@ + + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/dir_97aefd0d527b934f1d99a682da8fe6a9_dep.md5 b/stage2/03-install-piaizu/files/fb/docs/html/dir_97aefd0d527b934f1d99a682da8fe6a9_dep.md5 new file mode 100644 index 0000000..a67b72e --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/dir_97aefd0d527b934f1d99a682da8fe6a9_dep.md5 @@ -0,0 +1 @@ +30b8493800ced9027a53a59c870408d9 \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/dir_97aefd0d527b934f1d99a682da8fe6a9_dep.png b/stage2/03-install-piaizu/files/fb/docs/html/dir_97aefd0d527b934f1d99a682da8fe6a9_dep.png new file mode 100644 index 0000000..b539a57 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/dir_97aefd0d527b934f1d99a682da8fe6a9_dep.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/doc.png b/stage2/03-install-piaizu/files/fb/docs/html/doc.png new file mode 100644 index 0000000..17edabf Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/doc.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/documentation_8txt.html b/stage2/03-install-piaizu/files/fb/docs/html/documentation_8txt.html new file mode 100644 index 0000000..fe2a1a3 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/documentation_8txt.html @@ -0,0 +1,96 @@ + + + + + + +PiAIZU: documentation.txt File Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+
+
documentation.txt File Reference
+
+
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/doxygen.css b/stage2/03-install-piaizu/files/fb/docs/html/doxygen.css new file mode 100644 index 0000000..1425ec5 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/doxygen.css @@ -0,0 +1,1475 @@ +/* The standard CSS for doxygen 1.8.11 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 4px 6px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: bold; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/doxygen.png b/stage2/03-install-piaizu/files/fb/docs/html/doxygen.png new file mode 100644 index 0000000..3ff17d8 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/doxygen.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/dynsections.js b/stage2/03-install-piaizu/files/fb/docs/html/dynsections.js new file mode 100644 index 0000000..1e6bf07 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/dynsections.js @@ -0,0 +1,104 @@ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + +PiAIZU: File List + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all files with brief descriptions:
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/folderclosed.png b/stage2/03-install-piaizu/files/fb/docs/html/folderclosed.png new file mode 100644 index 0000000..bb8ab35 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/folderclosed.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/folderopen.png b/stage2/03-install-piaizu/files/fb/docs/html/folderopen.png new file mode 100644 index 0000000..d6c7f67 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/folderopen.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8c.html b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8c.html new file mode 100644 index 0000000..78e5bab --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8c.html @@ -0,0 +1,185 @@ + + + + + + +PiAIZU: lib/framebuffer.c File Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
framebuffer.c File Reference
+
+
+
#include "framebuffer.h"
+#include "log.h"
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/ioctl.h>
+#include <sys/mman.h>
+#include <unistd.h>
+
+Include dependency graph for framebuffer.c:
+
+
+ + + + +
+
+

Go to the source code of this file.

+ + + + + + + + +

+Functions

struct frame_buffer new_frame_buffer ()
 
void destroy_frame_buffer ()
 
void framebuffer_update (void *mem)
 
+

Function Documentation

+ +
+
+ + + + + + + +
void destroy_frame_buffer ()
+
+ +

Definition at line 55 of file framebuffer.c.

+ +
+
+ +
+
+ + + + + + + + +
void framebuffer_update (void * mem)
+
+ +

Definition at line 60 of file framebuffer.c.

+ +
+
+ +
+
+ + + + + + + +
struct frame_buffer new_frame_buffer ()
+
+ +

Definition at line 13 of file framebuffer.c.

+ +
+
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8c__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8c__incl.map new file mode 100644 index 0000000..2af6dd6 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8c__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8c__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8c__incl.md5 new file mode 100644 index 0000000..edb4d68 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8c__incl.md5 @@ -0,0 +1 @@ +64c6412664960cb3e3b84d1dc5263f81 \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8c__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8c__incl.png new file mode 100644 index 0000000..4417bff Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8c__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8c_source.html b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8c_source.html new file mode 100644 index 0000000..392f59f --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8c_source.html @@ -0,0 +1,116 @@ + + + + + + +PiAIZU: lib/framebuffer.c Source File + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
framebuffer.c
+
+
+Go to the documentation of this file.
1 #include "framebuffer.h"
2 #include "log.h"
3 #include <fcntl.h>
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <string.h>
7 #include <sys/ioctl.h>
8 #include <sys/mman.h>
9 #include <unistd.h>
10 
11 static struct frame_buffer fb = {0};
12 
14 
15  fb.file_descriptor = open("/dev/fb0", O_RDWR);
16  if (fb.file_descriptor == -1) {
17  perror("Error: cannot open framebuffer device");
18  exit(1);
19  }
20 
21  if (ioctl(fb.file_descriptor, FBIOGET_FSCREENINFO, &fb.fixed_info) == -1) {
22  perror("Error reading fixed information");
23  exit(2);
24  }
25 
26  if (ioctl(fb.file_descriptor, FBIOGET_VSCREENINFO, &fb.var_info) == -1) {
27  perror("Error reading variable information");
28  exit(3);
29  }
30 
31  fb.width = fb.var_info.xres;
32  fb.height = fb.var_info.yres;
33  fb.linelength = fb.fixed_info.line_length;
34  fb.padding = (fb.fixed_info.line_length / (fb.var_info.bits_per_pixel / 8)) - (fb.var_info.xres);
35 
36  LOG("Framebuffer: (width %d, height %d) bpp %d, bytesize %d (%d) linelength "
37  "%d, padding %d\n",
38  fb.var_info.xres, fb.var_info.yres, fb.var_info.bits_per_pixel, fb.fixed_info.smem_len,
39  fb.width * fb.height * fb.var_info.bits_per_pixel / 8, fb.fixed_info.line_length, fb.padding);
40 
41  fb.buffer_size = fb.fixed_info.smem_len;
42  fb.buffer = (char *)mmap(0, fb.buffer_size, PROT_READ | PROT_WRITE, MAP_SHARED, fb.file_descriptor, 0);
43 
44  if (fb.buffer == (void *)-1) {
45  perror("Error: failed to map framebuffer device to memory");
46  exit(5);
47  }
48 
49  memset(fb.buffer, 0x00, fb.buffer_size);
50 
51  /* Return a copy of the frambuffer struct */
52  return fb;
53 }
54 
56  munmap(fb.buffer, fb.buffer_size);
57  close(fb.file_descriptor);
58 }
59 
60 void framebuffer_update(void *mem) {
61  memcpy(fb.buffer, mem, fb.buffer_size);
62 }
+ + +
#define LOG(str,...)
Definition: log.h:7
+ +
struct frame_buffer new_frame_buffer()
Definition: framebuffer.c:13
+
int file_descriptor
Definition: framebuffer.h:7
+
char * buffer
Definition: framebuffer.h:18
+
long int buffer_size
Definition: framebuffer.h:17
+ +
struct fb_fix_screeninfo fixed_info
Definition: framebuffer.h:9
+
void framebuffer_update(void *mem)
Definition: framebuffer.c:60
+ +
struct fb_var_screeninfo var_info
Definition: framebuffer.h:10
+ +
void destroy_frame_buffer()
Definition: framebuffer.c:55
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8h.html b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8h.html new file mode 100644 index 0000000..3199cd4 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8h.html @@ -0,0 +1,197 @@ + + + + + + +PiAIZU: lib/framebuffer.h File Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
framebuffer.h File Reference
+
+
+
#include <linux/fb.h>
+#include <stdbool.h>
+#include <stdint.h>
+
+Include dependency graph for framebuffer.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + + + + + + + +
+
+

Go to the source code of this file.

+ + + + +

+Data Structures

struct  frame_buffer
 
+ + + + + + + +

+Functions

struct frame_buffer new_frame_buffer ()
 
void framebuffer_update (void *mem)
 
void destroy_frame_buffer ()
 
+

Function Documentation

+ +
+
+ + + + + + + +
void destroy_frame_buffer ()
+
+ +

Definition at line 55 of file framebuffer.c.

+ +
+
+ +
+
+ + + + + + + + +
void framebuffer_update (void * mem)
+
+ +

Definition at line 60 of file framebuffer.c.

+ +
+
+ +
+
+ + + + + + + +
struct frame_buffer new_frame_buffer ()
+
+ +

Definition at line 13 of file framebuffer.c.

+ +
+
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8h__dep__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8h__dep__incl.map new file mode 100644 index 0000000..21023bc --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8h__dep__incl.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8h__dep__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8h__dep__incl.md5 new file mode 100644 index 0000000..c1067e5 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8h__dep__incl.md5 @@ -0,0 +1 @@ +b7e5f8d70b90a558a32d400840a30a1d \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8h__dep__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8h__dep__incl.png new file mode 100644 index 0000000..2e515a2 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8h__dep__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8h__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8h__incl.map new file mode 100644 index 0000000..30af2cf --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8h__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8h__incl.md5 new file mode 100644 index 0000000..cfd3668 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8h__incl.md5 @@ -0,0 +1 @@ +8330de214dbac5cca23c342a9874a8d1 \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8h__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8h__incl.png new file mode 100644 index 0000000..e2fbea4 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8h__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8h_source.html b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8h_source.html new file mode 100644 index 0000000..6a8d3ab --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/framebuffer_8h_source.html @@ -0,0 +1,113 @@ + + + + + + +PiAIZU: lib/framebuffer.h Source File + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
framebuffer.h
+
+
+Go to the documentation of this file.
1 #pragma once
2 #include <linux/fb.h>
3 #include <stdbool.h>
4 #include <stdint.h>
5 
6 struct frame_buffer {
8 
9  struct fb_fix_screeninfo fixed_info;
10  struct fb_var_screeninfo var_info;
11 
12  int padding;
14  int width;
15  int height;
16 
17  long int buffer_size;
18  char * buffer;
19 };
20 
22 
23 void framebuffer_update(void *mem);
24 
+ + +
void destroy_frame_buffer()
Definition: framebuffer.c:55
+
int file_descriptor
Definition: framebuffer.h:7
+
char * buffer
Definition: framebuffer.h:18
+
long int buffer_size
Definition: framebuffer.h:17
+
struct frame_buffer new_frame_buffer()
Definition: framebuffer.c:13
+ +
struct fb_fix_screeninfo fixed_info
Definition: framebuffer.h:9
+ +
void framebuffer_update(void *mem)
Definition: framebuffer.c:60
+
struct fb_var_screeninfo var_info
Definition: framebuffer.h:10
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/functions.html b/stage2/03-install-piaizu/files/fb/docs/html/functions.html new file mode 100644 index 0000000..3212ec1 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/functions.html @@ -0,0 +1,411 @@ + + + + + + +PiAIZU: Data Fields + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
+ +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- f -

+ + +

- h -

+ + +

- i -

+ + +

- k -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+ + +

- w -

+ + +

- x -

+ + +

- y -

+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/functions_vars.html b/stage2/03-install-piaizu/files/fb/docs/html/functions_vars.html new file mode 100644 index 0000000..0889cde --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/functions_vars.html @@ -0,0 +1,411 @@ + + + + + + +PiAIZU: Data Fields - Variables + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- f -

+ + +

- h -

+ + +

- i -

+ + +

- k -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+ + +

- w -

+ + +

- x -

+ + +

- y -

+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8c.html b/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8c.html new file mode 100644 index 0000000..fa9db0a --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8c.html @@ -0,0 +1,285 @@ + + + + + + +PiAIZU: lib/fwatch.c File Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
fwatch.c File Reference
+
+
+
#include "fwatch.h"
+#include "log.h"
+#include <fcntl.h>
+#include <linux/input.h>
+#include <pthread.h>
+#include <signal.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/select.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+Include dependency graph for fwatch.c:
+
+
+ + + + +
+
+

Go to the source code of this file.

+ + + + + + +

+Data Structures

struct  fwatch_client_t
 
struct  fwatch_t
 
+ + + + + +

+Macros

#define max(a, b)
 
#define FWATCH_CLIENTS_MAX   5
 
+ + + + + + + +

+Functions

int fwatch_add (fwatch_cb_f cb, int fd, char *fname)
 
int fwatch_start ()
 
int fwatch_do (int us)
 
+

Macro Definition Documentation

+ +
+
+ + + + +
#define FWATCH_CLIENTS_MAX   5
+
+ +

Definition at line 25 of file fwatch.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
#define max( a,
 
)
+
+Value:
({ \
__typeof__(a) _a = (a); \
__typeof__(b) _b = (b); \
_a > _b ? _a : _b; \
})
+

Definition at line 18 of file fwatch.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int fwatch_add (fwatch_cb_f cb,
int fd,
char * fname 
)
+
+
Parameters
+ + + + +
cbcallback to be called when file is ready
fdfile descriptor, if zero, fname will be used to open file
fnamefilename of the file to select on
+
+
+
Returns
0 on success, -1 on error
 This function will call function cb when select notifies that
+ the file in fd has data to be read.
+ +

Definition at line 42 of file fwatch.c.

+ +
+
+ +
+
+ + + + + + + + +
int fwatch_do (int us)
+
+
Parameters
+ + +
usTimeout time for select in µS
+
+
+
Returns
0 on success, -1 on error.
+ +

Definition at line 83 of file fwatch.c.

+ +
+
+ +
+
+ + + + + + + +
int fwatch_start ()
+
+
Returns
0
 Will start the module. No more registration should be done after start has been called.
+ +

Definition at line 67 of file fwatch.c.

+ +
+
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8c__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8c__incl.map new file mode 100644 index 0000000..2dd18d7 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8c__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8c__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8c__incl.md5 new file mode 100644 index 0000000..c799f32 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8c__incl.md5 @@ -0,0 +1 @@ +15a215206001bb38ab960c8c25d4d00b \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8c__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8c__incl.png new file mode 100644 index 0000000..a50177e Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8c__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8c_source.html b/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8c_source.html new file mode 100644 index 0000000..b73f33b --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8c_source.html @@ -0,0 +1,117 @@ + + + + + + +PiAIZU: lib/fwatch.c Source File + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
fwatch.c
+
+
+Go to the documentation of this file.
1 #include "fwatch.h"
2 #include "log.h"
3 
4 #include <fcntl.h>
5 #include <linux/input.h>
6 #include <pthread.h>
7 #include <signal.h>
8 #include <stdbool.h>
9 #include <stdint.h>
10 #include <stdio.h>
11 #include <stdlib.h>
12 #include <string.h>
13 #include <sys/select.h>
14 #include <sys/time.h>
15 #include <sys/types.h>
16 #include <unistd.h>
17 
18 #define max(a, b) \
19  ({ \
20  __typeof__(a) _a = (a); \
21  __typeof__(b) _b = (b); \
22  _a > _b ? _a : _b; \
23  })
24 
25 #define FWATCH_CLIENTS_MAX 5
26 
27 typedef struct {
29  int fd;
31 
32 typedef struct {
33  unsigned int n_registered;
34  fd_set rfds;
35  struct timeval timeout;
36  int maxfd;
38 } fwatch_t;
39 
40 static fwatch_t fwatch;
41 
42 int fwatch_add(fwatch_cb_f cb, int fd, char *fname) {
43 
44  if (!cb) {
45  return -1;
46  }
47  if (fwatch.n_registered >= FWATCH_CLIENTS_MAX) {
48  return -1;
49  }
50  if (fd == -1) {
51  fd = open(fname, O_RDONLY);
52  if (fd == -1) {
53  LOG("Registered %s fd:%d callback %p\n", fname, fd, cb);
54  return -1;
55  }
56  }
57 
58  LOG("Registered %s fd:%d callback %p\n", fname, fd, cb);
59  fwatch.clients[fwatch.n_registered].cb = cb;
60  fwatch.clients[fwatch.n_registered].fd = fd;
61 
62  fwatch.n_registered++;
63 
64  return 0;
65 }
66 
67 int fwatch_start() {
68 
69  unsigned int i;
70  int maxfd = 0;
71 
72  FD_ZERO(&fwatch.rfds);
73 
74  for (i = 0; i < fwatch.n_registered; i++) {
75  int fd = fwatch.clients[i].fd;
76  maxfd = max(maxfd, fd);
77  FD_SET(fd, &fwatch.rfds);
78  }
79  fwatch.maxfd = maxfd;
80  return 0;
81 }
82 
83 int fwatch_do(int us) {
84 
85  int retval;
86  struct timeval timeout;
87  unsigned int i;
88 
89  timeout.tv_sec = us / 1000000;
90  timeout.tv_usec = us % 1000000;
91 
92  for (i = 0; i < fwatch.n_registered; i++) {
93  int fd = fwatch.clients[i].fd;
94  FD_SET(fd, &fwatch.rfds);
95  }
96 
97  retval = select(fwatch.maxfd + 1, &fwatch.rfds, NULL, NULL, &timeout);
98 
99  if (retval == -1) {
100  LOG("Error occured while waiting for select %m\n");
101  return -1;
102  }
103 
104  if (retval == 0) {
105  return 0;
106  }
107 
108  if (retval > 0) {
109 
110  for (i = 0; i < fwatch.n_registered; i++) {
111 
112  int fd = fwatch.clients[i].fd;
113 
114  if (FD_ISSET(fd, &fwatch.rfds)) {
115 
116  if (fwatch.clients[i].cb) {
117  fwatch.clients[i].cb(fd);
118  }
119  }
120  }
121  }
122  return 0;
123 }
+
#define LOG(str,...)
Definition: log.h:7
+ +
fwatch_client_t clients[FWATCH_CLIENTS_MAX]
Definition: fwatch.c:37
+ +
fd_set rfds
Definition: fwatch.c:34
+
int fwatch_add(fwatch_cb_f cb, int fd, char *fname)
Definition: fwatch.c:42
+
#define max(a, b)
Definition: fwatch.c:18
+
int maxfd
Definition: fwatch.c:36
+
fwatch_cb_f cb
Definition: fwatch.c:28
+
void(* fwatch_cb_f)(int fd)
Definition: fwatch.h:3
+
#define FWATCH_CLIENTS_MAX
Definition: fwatch.c:25
+
int fwatch_do(int us)
Definition: fwatch.c:83
+ +
unsigned int n_registered
Definition: fwatch.c:33
+ +
int fwatch_start()
Definition: fwatch.c:67
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8h.html b/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8h.html new file mode 100644 index 0000000..a41e74d --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8h.html @@ -0,0 +1,234 @@ + + + + + + +PiAIZU: lib/fwatch.h File Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
fwatch.h File Reference
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + + +
+
+

Go to the source code of this file.

+ + + + +

+Typedefs

typedef void(* fwatch_cb_f) (int fd)
 
+ + + + + + + +

+Functions

int fwatch_do (int us)
 
int fwatch_start ()
 
int fwatch_add (fwatch_cb_f cb, int fd, char *fname)
 
+

Typedef Documentation

+ +
+
+ + + + +
typedef void(* fwatch_cb_f) (int fd)
+
+ +

Definition at line 3 of file fwatch.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int fwatch_add (fwatch_cb_f cb,
int fd,
char * fname 
)
+
+
Parameters
+ + + + +
cbcallback to be called when file is ready
fdfile descriptor, if zero, fname will be used to open file
fnamefilename of the file to select on
+
+
+
Returns
0 on success, -1 on error
 This function will call function cb when select notifies that
+ the file in fd has data to be read.
+ +

Definition at line 42 of file fwatch.c.

+ +
+
+ +
+
+ + + + + + + + +
int fwatch_do (int us)
+
+
Parameters
+ + +
usTimeout time for select in µS
+
+
+
Returns
0 on success, -1 on error.
+ +

Definition at line 83 of file fwatch.c.

+ +
+
+ +
+
+ + + + + + + +
int fwatch_start ()
+
+
Returns
0
 Will start the module. No more registration should be done after start has been called.
+ +

Definition at line 67 of file fwatch.c.

+ +
+
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8h__dep__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8h__dep__incl.map new file mode 100644 index 0000000..69f4be3 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8h__dep__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8h__dep__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8h__dep__incl.md5 new file mode 100644 index 0000000..98234f8 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8h__dep__incl.md5 @@ -0,0 +1 @@ +077f080395e100a31922f25c699158a4 \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8h__dep__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8h__dep__incl.png new file mode 100644 index 0000000..db36428 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8h__dep__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8h_source.html b/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8h_source.html new file mode 100644 index 0000000..2ffa105 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/fwatch_8h_source.html @@ -0,0 +1,104 @@ + + + + + + +PiAIZU: lib/fwatch.h Source File + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
fwatch.h
+
+
+Go to the documentation of this file.
1 #pragma once
2 
3 typedef void (*fwatch_cb_f)(int fd);
4 
5 /**
6  * @param us Timeout time for select in µS
7  *
8  * @returns 0 on success, -1 on error.
9  */
10 int fwatch_do(int us);
11 
12 /**
13  *
14  * @returns 0
15  *
16  * Will start the module. No more registration should be done after start has been called.
17  */
18 int fwatch_start();
19 
20 /**
21  * @param cb callback to be called when file is ready
22  * @param fd file descriptor, if zero, fname will be used to open file
23  * @param fname filename of the file to select on
24  *
25  * @returns 0 on success, -1 on error
26  *
27  * This function will call function cb when select notifies that
28  * the file in fd has data to be read.
29  */
30 int fwatch_add(fwatch_cb_f cb, int fd, char *fname);
int fwatch_start()
Definition: fwatch.c:67
+
int fwatch_add(fwatch_cb_f cb, int fd, char *fname)
Definition: fwatch.c:42
+
void(* fwatch_cb_f)(int fd)
Definition: fwatch.h:3
+
int fwatch_do(int us)
Definition: fwatch.c:83
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/globals.html b/stage2/03-install-piaizu/files/fb/docs/html/globals.html new file mode 100644 index 0000000..0f67128 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/globals.html @@ -0,0 +1,579 @@ + + + + + + +PiAIZU: Globals + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
+ +

- _ -

    +
  • __FILENAME__ +: log.h +
  • +
+ + +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

    +
  • EVENT_FILE +: keys.c +
  • +
  • event_key_handle_e +: main.c +
  • +
  • EVENT_LEFT_PRESS_LONG +: main.c +
  • +
  • EVENT_LEFT_PRESS_SHORT +: main.c +
  • +
  • EVENT_N +: main.c +
  • +
  • EVENT_RIGHT_PRESS_LONG +: main.c +
  • +
  • EVENT_RIGHT_PRESS_SHORT +: main.c +
  • +
  • EVENT_TEXT_SIZE +: main.c +
  • +
+ + +

- f -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- k -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+ + +

- w -

+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/globals_defs.html b/stage2/03-install-piaizu/files/fb/docs/html/globals_defs.html new file mode 100644 index 0000000..d96fb01 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/globals_defs.html @@ -0,0 +1,318 @@ + + + + + + +PiAIZU: Globals + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- _ -

    +
  • __FILENAME__ +: log.h +
  • +
+ + +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- h -

+ + +

- l -

+ + +

- m -

+ + +

- n -

    +
  • N_BUTTONS +: keys.c +
  • +
  • N_KEY_PRESS_CALLBACKS +: keys.c +
  • +
+ + +

- o -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- w -

+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/globals_enum.html b/stage2/03-install-piaizu/files/fb/docs/html/globals_enum.html new file mode 100644 index 0000000..f1a1052 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/globals_enum.html @@ -0,0 +1,119 @@ + + + + + + +PiAIZU: Globals + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/globals_eval.html b/stage2/03-install-piaizu/files/fb/docs/html/globals_eval.html new file mode 100644 index 0000000..2b8c450 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/globals_eval.html @@ -0,0 +1,158 @@ + + + + + + +PiAIZU: Globals + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/globals_func.html b/stage2/03-install-piaizu/files/fb/docs/html/globals_func.html new file mode 100644 index 0000000..c984946 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/globals_func.html @@ -0,0 +1,347 @@ + + + + + + +PiAIZU: Globals + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

    +
  • animate_sony_logi() +: main.c +
  • +
  • animate_wifi_ap() +: main.c +
  • +
+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- f -

+ + +

- h -

+ + +

- i -

+ + +

- k -

+ + +

- m -

+ + +

- n -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+ + +

- w -

+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/globals_type.html b/stage2/03-install-piaizu/files/fb/docs/html/globals_type.html new file mode 100644 index 0000000..40a002d --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/globals_type.html @@ -0,0 +1,113 @@ + + + + + + +PiAIZU: Globals + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/graph_legend.html b/stage2/03-install-piaizu/files/fb/docs/html/graph_legend.html new file mode 100644 index 0000000..7f09930 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/graph_legend.html @@ -0,0 +1,119 @@ + + + + + + +PiAIZU: Graph Legend + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + +
+ +
+
+ + +
+ +
+ +
+
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

1 /*! Invisible class because of truncation */
2 class Invisible { };
3 
4 /*! Truncated class, inheritance relation is hidden */
5 class Truncated : public Invisible { };
6 
7 /* Class not documented with doxygen comments */
8 class Undocumented { };
9 
10 /*! Class that is inherited using public inheritance */
11 class PublicBase : public Truncated { };
12 
13 /*! A template class */
14 template<class T> class Templ { };
15 
16 /*! Class that is inherited using protected inheritance */
17 class ProtectedBase { };
18 
19 /*! Class that is inherited using private inheritance */
20 class PrivateBase { };
21 
22 /*! Class that is used by the Inherited class */
23 class Used { };
24 
25 /*! Super class that inherits a number of other classes */
26 class Inherited : public PublicBase,
27  protected ProtectedBase,
28  private PrivateBase,
29  public Undocumented,
30  public Templ<int>
31 {
32  private:
33  Used *m_usedClass;
34 };

This will result in the following graph:

+
+ +
+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance.
  • +
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/graph_legend.md5 b/stage2/03-install-piaizu/files/fb/docs/html/graph_legend.md5 new file mode 100644 index 0000000..a06ed05 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/graph_legend.md5 @@ -0,0 +1 @@ +387ff8eb65306fa251338d3c9bd7bfff \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/graph_legend.png b/stage2/03-install-piaizu/files/fb/docs/html/graph_legend.png new file mode 100644 index 0000000..37f264e Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/graph_legend.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/index.html b/stage2/03-install-piaizu/files/fb/docs/html/index.html new file mode 100644 index 0000000..dad4a7a --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/index.html @@ -0,0 +1,167 @@ + + + + + + +PiAIZU: PiAIZU webserver + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + +
+ +
+
+ + +
+ +
+ +
+
+
PiAIZU webserver
+
+
+

LMX interactive page

+
Build date:
Git describe:

+Introduction

+

You have now successfully connected to the Raspberry PIs webserver. This documentation has been compiled with Doxygen and will describe how to use this Raspberry PI to control the Sony LMX-001 display. This setup is called the PiAIZU.

+

When this PiAIZU is powered up it boots Linux (Raspbian lite) and an sample application is started. This app will display an animation in the LMX-001 and some basic information. The PiAIZU will also act as a WiFi access point and since you can read this document you have probably already successfully connected to it.

+

This setup has all the nescessary tools and compilers pre-installed to be able to both edit and recompile this sample application.

+

A few useful tools that has been added:

    +
  • GCC
  • +
  • Python
  • +
  • sshfs
  • +
  • gdb
  • +
  • gdb-server
  • +
+

+How to access the Raspberry

+

The Raspberry Pi has a SSH server running and it has been configured with a static IP address that is 192.168.1.1 To connect to the Raspberry Pi via ssh:

+

In Linux

+

Open a terminal and type:

+
ssh pi@192.168.1.1

In Windows

+

Download and install Putty and setup a SSH connection.

+

Password is: raspberry

+

+About the sample application

+

The sample application and library provided with source code and resides in:

/home/pi/lmx_example
+

It basically starts with memory mapping the framebuffer:

/dev/fb0
+

and then a software layer is put over that to enable the user to specifiy layers or containers that the user then can put various kind of information in. This could be text, shapes like lines or dots, or fill the container with a bitmap image. Each container has x,y coordinate together with height and width. Each container can be set to be visible or hidden runtime.

+

To start working the framebuffer needs to be mapped to memory, memory has to be allocated for the containers and some initialisation has do be done, this is done by calling the function:

+

In the first version the containers are statically defined before compile time. This is done in the file: define_containers.h Every time a containers contents has been updated the whole container system needs to be compiled before the actual change is displayed on the screen. This is done by calling the funcion:

To close the system the funcion

must be called to free all the allocated memory and to unmap the framebuffer. Similar approach has been used in the text/font system regarding init and close.

+

There are various function to add or manipulate the contents of the containers. The handle for each container is basically an integer that is an index that points out which container it is in the array or container_t in define_containers.h.

+

Functions to decode .bmp files has been implemented and tested on both 24 bit and 32 bit bmp files. The difference is basically that in the 32 bit case you have RGBA and in 24 bit it's only RGB information stored The 'A' in RGBA is not being used at the moment.

+

A simple font has been added that supports uppercase and lower case letters together with numbers and only a few special characters.

+

+Buttons

+

The shield connected to the Raspberry has two small button, a lib has been written to be able to register events from these buttons. Try to click the buttons while running the sample application to see, for events has been registered that will be trigged depending on how long each key press is and on what button.

+

+Webinterface

+

The sample application has an interface to be able to receive commands from the web. To evaluate this functionality enter LMX interactive page. From here it is possible to send text and show a cross-hair cursor directly on the LMX-001 display.

+

This functionality works like this:

+

The web server (lighttpd) shows the LMX interactive page. When a button is clicked, a cgi script is called. The source code of this script is available in the sample applicationlication folder under /hopme/pi/lmx_example/cgi-src. This cgi script will via a UNIX socket in /tmp/lmx.socket connect to the LMX sample application. The sample application can also reply with data.

+

+Compilation

+

The application consist of a library and two sample applicationlications. One written in C and one written in Python, they are called main.c and main.py. Both the main.c and main.py use the provided library. The whole buildsystem can be configured by changing the settings in settings.mk. For development it can be convenient to to set the flag

LDEXTRA=-Wl,-rpath,./lib/

to tell the linker to use the locally built liblmx.so instead of the pre-installed one. This is done in settings.mk.

+

The Makefile contains a few targets:

    +
  • all Will build the sample application
  • +
  • clean Will remove all build files, binaries, object files. Compiled documentation is not affected
  • +
  • format Runs clang-format on all source, this requires clang-format to be installed which it isn't on the Raspberry
  • +
  • install Installs the lmx binary into /usr/bin and activates startup scripts in init.d
  • +
  • dbg Compiles the all with extra prints for debugging, forces a frame to be printed around all containers
  • +
  • doc Will run Doxygen to recompile this documentation, requires Doxygen to be installed
  • +
  • analyze Runs scan-build to perform a static code analysis

    +

    It is possible to run this program on a Linux computer too. Then the sample applicationlication will use the PC:s framebuffer. On Ubuntu you will have to press Ctrl+Alt+F1 to get into a console. From there you can start the sample application and you will see the same output as if the program was used on the PiAIZU. Example app must first be recompiled for the x86 architecture for that to work, that is a matter of rebuilding it but doing that on the host computer.

    +
  • +
+

To simply rebuild the sample application, type:

make

to install your changes on the Raspberry Pi rootfs:

sudo make install

There are a few buildflags that can be added to get special functions:

+

The following buildflag will mask out red and blue color, this is usefull when testing the software on a PC to get a picture more similar to the one in LMX-001.

SETTING+=-DGREEN_MONOCHROME

To convert a RGB BMP to green scale two methods are implemented, Average and Luminosity. To activate try one of the following:

SETTING+=-DGRAYSCALE_LUMINOSITY
SETTING+=-DGRAYSCALE_AVERAGE

+Rebuilding Raspbian

+

To update or add new packages to the Raspbian rootfs you either have to provide Internet to the Raspberry Pi or recompile the whole Raspbian.

+

The modified Raspbian buildsystem is provided on the PiAIZU SD card image, it resides under:

/home/pi/piaizu_"v2.0.0"

the postfix is the git describe –tags output. In this directory you will find more information on how to rebuild the SD card image.

+

Second option is to provide a Internet connection If you have two network connections on your PC you could most probably share your one Internet connection with while your WLAN is connected to the Raspberry Pi AP PiAIZU. To do that successfully you need to enable ip forwarding and setup your iptables for NAT. The Internet is full information on how to do this.

+

+Change log

+
Version
v2.1.0
    +
  • Minor changes to the container api
  • +
  • Added python sample application
  • +
  • Created a lib, (liblmx.so) of almost all sample application, leaving only main.c outside
  • +
+
+
+v2.0.0
    +
  • New webinterface
  • +
+
+
+v1.0.0
    +
  • First release
  • +
+
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/jquery.js b/stage2/03-install-piaizu/files/fb/docs/html/jquery.js new file mode 100644 index 0000000..d52a1c7 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/jquery.js @@ -0,0 +1,68 @@ +/* + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/* + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/* + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/* + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/* + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/* + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + + + +
+ +
+
keys.c File Reference
+
+
+
#include "keys.h"
+#include "fwatch.h"
+#include "log.h"
+#include <fcntl.h>
+#include <linux/input.h>
+#include <pthread.h>
+#include <signal.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/select.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+Include dependency graph for keys.c:
+
+
+ + + + + +
+
+

Go to the source code of this file.

+
+ + + + + +

+Data Structures

struct  key_action_t
 
struct  key_press_event_t
 
+ + + + + + + + + +

+Macros

#define N_KEY_PRESS_CALLBACKS   10
 
#define N_BUTTONS   2
 
#define WAIT_TIMEOUT_S   30
 
#define EVENT_FILE   "/dev/input/event0"
 
+ + + + + + + + + + + +

+Functions

int key_time_down (key_action_t *key)
 
int keys_register_cb (key_press_f cb, key_e key, double time, int handle)
 
void keys_file_watch_callback (int fd)
 
void keys_sort_registered_callbacks ()
 
int keys_start ()
 
+

Macro Definition Documentation

+ +
+
+ + + + +
#define EVENT_FILE   "/dev/input/event0"
+
+ +

Definition at line 21 of file keys.c.

+ +
+
+ +
+
+ + + + +
#define N_BUTTONS   2
+
+ +

Definition at line 19 of file keys.c.

+ +
+
+ +
+
+ + + + +
#define N_KEY_PRESS_CALLBACKS   10
+
+ +

Definition at line 18 of file keys.c.

+ +
+
+ +
+
+ + + + +
#define WAIT_TIMEOUT_S   30
+
+ +

Definition at line 20 of file keys.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
int key_time_down (key_action_tkey)
+
+ +

Definition at line 44 of file keys.c.

+ +
+
+ +
+
+ + + + + + + + +
void keys_file_watch_callback (int fd)
+
+ +

Definition at line 103 of file keys.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int keys_register_cb (key_press_f cb,
key_e key,
double time,
int handle 
)
+
+
Parameters
+ + + + + +
cbCallback function pointer
keyKey to register, aka "button"
timeTime the key has to be held low before an event is triggered
handlepassed as parameter into the callback function
 This function must be called before start. After start has been called
+ no new events can be registered.
+
+
+ +

Definition at line 81 of file keys.c.

+ +
+
+ +
+
+ + + + + + + +
void keys_sort_registered_callbacks ()
+
+ +

Definition at line 156 of file keys.c.

+ +
+
+ +
+
+ + + + + + + +
int keys_start ()
+
+

Call this function to start the thread watching the low level events.

+ +

Definition at line 171 of file keys.c.

+ +
+
+ + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/keys_8c__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/keys_8c__incl.map new file mode 100644 index 0000000..a186aa9 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/keys_8c__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/keys_8c__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/keys_8c__incl.md5 new file mode 100644 index 0000000..004dc6d --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/keys_8c__incl.md5 @@ -0,0 +1 @@ +3a33af055a95741b67f7996812acf9bc \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/keys_8c__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/keys_8c__incl.png new file mode 100644 index 0000000..f56e797 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/keys_8c__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/keys_8c_source.html b/stage2/03-install-piaizu/files/fb/docs/html/keys_8c_source.html new file mode 100644 index 0000000..bd0b71e --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/keys_8c_source.html @@ -0,0 +1,126 @@ + + + + + + +PiAIZU: lib/keys.c Source File + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
keys.c
+
+
+Go to the documentation of this file.
1 #include "keys.h"
2 #include "fwatch.h"
3 #include "log.h"
4 #include <fcntl.h>
5 #include <linux/input.h>
6 #include <pthread.h>
7 #include <signal.h>
8 #include <stdbool.h>
9 #include <stdint.h>
10 #include <stdio.h>
11 #include <stdlib.h>
12 #include <string.h>
13 #include <sys/select.h>
14 #include <sys/time.h>
15 #include <sys/types.h>
16 #include <unistd.h>
17 
18 #define N_KEY_PRESS_CALLBACKS 10
19 #define N_BUTTONS 2
20 #define WAIT_TIMEOUT_S 30
21 #define EVENT_FILE "/dev/input/event0"
22 
23 /* internal typedefs */
24 typedef struct {
26  struct timeval time_pressed;
27  struct timeval time_released;
28  double time_hold;
29 } key_action_t;
30 
31 typedef struct {
34  double time;
35  int handle;
37 
38 static bool already_started = false;
39 
40 static key_press_event_t client_callbacks[N_KEY_PRESS_CALLBACKS] = {{0}};
41 
42 static unsigned int key_press_callback_index = 0;
43 
45 
46  struct timeval result;
47  if (key == NULL) {
48  return -1;
49  }
50 
51  timersub(&key->time_released, &key->time_pressed, &result);
52  key->time_hold = (double)result.tv_sec + ((double)result.tv_usec / 1000000);
53 
54  return 0;
55 }
56 
57 static int keys_parse_callbacks(key_action_t *keyaction) {
58  unsigned int i;
59  if (!keyaction) {
60  return -1;
61  }
62 
63  for (i = 0; i < key_press_callback_index && i < N_KEY_PRESS_CALLBACKS; i++) {
64 
65  if (keyaction->key == client_callbacks[i].key) {
66 
67  if (keyaction->time_hold >= client_callbacks[i].time) {
68  if (client_callbacks[i].cb != NULL) {
69  client_callbacks[i].cb(keyaction->time_hold, keyaction->key, client_callbacks[i].handle);
70 
71  keyaction->time_hold = 0.0;
72  return 0;
73  }
74  }
75  }
76  }
77 
78  return 1;
79 }
80 
81 int keys_register_cb(key_press_f cb, key_e key, double time, int handle) {
82 
83  if (!cb)
84  return -1;
85 
86  if (already_started) {
87  return -1;
88  }
89 
90  if (key_press_callback_index < N_KEY_PRESS_CALLBACKS) {
91 
92  client_callbacks[key_press_callback_index].cb = cb;
93  client_callbacks[key_press_callback_index].key = key;
94  client_callbacks[key_press_callback_index].time = time;
95  client_callbacks[key_press_callback_index].handle = handle;
96 
97  key_press_callback_index++;
98  return 0;
99  }
100  return -1;
101 }
102 
104  struct input_event evt;
105 
106  // clang-format off
107  static key_action_t buttons[N_BUTTONS] = {
108  {
109  .key = KEY_CHAR_LEFT, .time_pressed = {0}, .time_released = {0}, .time_hold = 0,
110  },
111  {
112  .key = KEY_CHAR_RIGHT, .time_pressed = {0}, .time_released = {0}, .time_hold = 0,
113  }};
114  // clang-format on
115 
116  read(fd, &evt, sizeof(struct input_event));
117  if (evt.type == EV_SYN && evt.code == SYN_DROPPED) {
118 
119  } else if (evt.type == EV_KEY) {
120 
121  if (evt.value == 1) {
122 
123  switch (evt.code) {
124  case KEY_CHAR_LEFT:
125  case KEY_CHAR_RIGHT:
126  buttons[evt.code - KEY_CHAR_LEFT].time_pressed.tv_sec = evt.time.tv_sec;
127  buttons[evt.code - KEY_CHAR_LEFT].time_pressed.tv_usec = evt.time.tv_usec;
128  buttons[evt.code - KEY_CHAR_LEFT].time_hold = 0;
129 
130  break;
131  default:
132  // continue;
133  break;
134  }
135 
136  } else {
137 
138  switch (evt.code) {
139  case KEY_CHAR_LEFT:
140  case KEY_CHAR_RIGHT:
141  buttons[evt.code - KEY_CHAR_LEFT].time_released.tv_sec = evt.time.tv_sec;
142  buttons[evt.code - KEY_CHAR_LEFT].time_released.tv_usec = evt.time.tv_usec;
143  key_time_down(&buttons[evt.code - KEY_CHAR_LEFT]);
144  keys_parse_callbacks(&buttons[evt.code - KEY_CHAR_LEFT]);
145  break;
146  default:
147  // continue;
148  break;
149  }
150  }
151  }
152 
153  return;
154 }
155 
157  unsigned int a;
158  unsigned int b;
159  key_press_event_t tmp;
160  for (a = 0; a < key_press_callback_index; a++) {
161  for (b = a + 1; b < key_press_callback_index; b++) {
162  if (client_callbacks[a].time < client_callbacks[b].time) {
163  memcpy(&tmp, &client_callbacks[b], sizeof(key_press_event_t));
164  memcpy(&client_callbacks[b], &client_callbacks[a], sizeof(key_press_event_t));
165  memcpy(&client_callbacks[a], &tmp, sizeof(key_press_event_t));
166  }
167  }
168  }
169 }
170 
171 int keys_start() {
172 
173  if (already_started) {
174 
175  return -1;
176  }
177  already_started = true;
178 
181  return 0;
182  }
183 
184  return 0;
185 }
double time
Definition: keys.c:34
+ +
void keys_file_watch_callback(int fd)
Definition: keys.c:103
+
int keys_register_cb(key_press_f cb, key_e key, double time, int handle)
Definition: keys.c:81
+
struct timeval time_released
Definition: keys.c:27
+
int keys_start()
Definition: keys.c:171
+
#define EVENT_FILE
Definition: keys.c:21
+
int fwatch_add(fwatch_cb_f cb, int fd, char *fname)
Definition: fwatch.c:42
+
void(* key_press_f)(double downtime, key_e key, int handle)
Definition: keys.h:16
+
key_press_f cb
Definition: keys.c:32
+ + + + +
key_e key
Definition: keys.c:33
+ +
key_e key
Definition: keys.c:25
+
struct timeval time_pressed
Definition: keys.c:26
+
key_e
Definition: keys.h:7
+ +
double time_hold
Definition: keys.c:28
+
void keys_sort_registered_callbacks()
Definition: keys.c:156
+
int key_time_down(key_action_t *key)
Definition: keys.c:44
+
#define N_BUTTONS
Definition: keys.c:19
+ +
#define N_KEY_PRESS_CALLBACKS
Definition: keys.c:18
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/keys_8h.html b/stage2/03-install-piaizu/files/fb/docs/html/keys_8h.html new file mode 100644 index 0000000..f24dc95 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/keys_8h.html @@ -0,0 +1,260 @@ + + + + + + +PiAIZU: lib/keys.h File Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
keys.h File Reference
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + +
+
+

Go to the source code of this file.

+ + + + +

+Typedefs

typedef void(* key_press_f) (double downtime, key_e key, int handle)
 
+ + + +

+Enumerations

enum  key_e { KEY_CHAR_LEFT = 105, +KEY_CHAR_RIGHT + }
 
+ + + + + + + +

+Functions

int keys_register_cb (key_press_f cb, key_e key, double time, int handle)
 
int keys_start ()
 
int keys_close ()
 
+

Typedef Documentation

+ +
+
+ + + + +
typedef void(* key_press_f) (double downtime, key_e key, int handle)
+
+

The callback format to be used when registering for an event.

+ +

Definition at line 16 of file keys.h.

+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum key_e
+
+

Two buttons exist on the PiAIZU EXT shield.

+ + + +
Enumerator
KEY_CHAR_LEFT  +
KEY_CHAR_RIGHT  +
+ +

Definition at line 7 of file keys.h.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + +
int keys_close ()
+
+

Clean up and close down thread

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int keys_register_cb (key_press_f cb,
key_e key,
double time,
int handle 
)
+
+
Parameters
+ + + + + +
cbCallback function pointer
keyKey to register, aka "button"
timeTime the key has to be held low before an event is triggered
handlepassed as parameter into the callback function
 This function must be called before start. After start has been called
+ no new events can be registered.
+
+
+ +

Definition at line 81 of file keys.c.

+ +
+
+ +
+
+ + + + + + + +
int keys_start ()
+
+

Call this function to start the thread watching the low level events.

+ +

Definition at line 171 of file keys.c.

+ +
+
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/keys_8h__dep__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/keys_8h__dep__incl.map new file mode 100644 index 0000000..437ab84 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/keys_8h__dep__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/keys_8h__dep__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/keys_8h__dep__incl.md5 new file mode 100644 index 0000000..3c80dd2 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/keys_8h__dep__incl.md5 @@ -0,0 +1 @@ +7f1e4907f0ec034522a4a0971d118841 \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/keys_8h__dep__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/keys_8h__dep__incl.png new file mode 100644 index 0000000..ab54920 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/keys_8h__dep__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/keys_8h_source.html b/stage2/03-install-piaizu/files/fb/docs/html/keys_8h_source.html new file mode 100644 index 0000000..33be0ae --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/keys_8h_source.html @@ -0,0 +1,107 @@ + + + + + + +PiAIZU: lib/keys.h Source File + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
keys.h
+
+
+Go to the documentation of this file.
1 #pragma once
2 
3 /**
4  *
5  * Two buttons exist on the PiAIZU EXT shield.
6  */
7 typedef enum {
8  KEY_CHAR_LEFT = 105,
10 } key_e;
11 
12 /**
13  * The callback format to be used when registering for an
14  * event.
15  */
16 typedef void (*key_press_f)(double downtime, key_e key, int handle);
17 
18 /**
19  * @param cb Callback function pointer
20  * @param key Key to register, aka "button"
21  * @param time Time the key has to be held low before an event is
22  * triggered
23  * @param handle passed as parameter into the callback function
24  *
25  * This function must be called before start. After start has been called
26  * no new events can be registered.
27  */
28 int keys_register_cb(key_press_f cb, key_e key, double time, int handle);
29 
30 /**
31  *
32  * Call this function to start the thread watching the low level events.
33  */
34 int keys_start();
35 
36 /**
37  * Clean up and close down thread
38  */
39 int keys_close();
int keys_close()
+
int keys_start()
Definition: keys.c:171
+
int keys_register_cb(key_press_f cb, key_e key, double time, int handle)
Definition: keys.c:81
+
void(* key_press_f)(double downtime, key_e key, int handle)
Definition: keys.h:16
+ +
key_e
Definition: keys.h:7
+ +
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/lmxindex.html b/stage2/03-install-piaizu/files/fb/docs/html/lmxindex.html new file mode 100644 index 0000000..0ab8f37 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/lmxindex.html @@ -0,0 +1,91 @@ + + +LMX send data text page + +
+This page will post data to the PiAIZU Raspberry Pi.
+A webserver will receive the POST data and call the script: /var/www/html/cgi-bin/lmx.cgi
+
+This script will parse the received the data and if it's valid the data will be repacked into
+binary c structures. These structures will the be passed further through a UNIX socket.
+
+The lmx sample application will listen in the "other end" of the socket for incoming packages
+and handle the requests.
+
+ +

+ + + + +Send text to LMX-001 +

+ Data: + +
+

+ +Show cross hair: +

+ Data: + + +
+ +

+ +

+ + + Move the cross-hair cursor by using the buttons:
+ Container: + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+
+ + +

+ + +

+The text below is a response from the LMX sample application on a regular GET request. +


+

+ + + + + + +

+ + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/lmxjson_8c.html b/stage2/03-install-piaizu/files/fb/docs/html/lmxjson_8c.html new file mode 100644 index 0000000..6300bac --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/lmxjson_8c.html @@ -0,0 +1,322 @@ + + + + + + +PiAIZU: cgi-src/lmxjson.c File Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
lmxjson.c File Reference
+
+
+
#include "fcgi_stdio.h"
+#include "lmxsocket.h"
+#include <jansson.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+Include dependency graph for lmxjson.c:
+
+
+ + + +
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Macros

#define HTML_COMMENT   "<!--"
 
#define HTML_COMMENT_END   "-->"
 
#define HTML_PRE   "<PRE>"
 
#define HTML_PRE_END   "</PRE>"
 
#define ARRAY_SIZE(x)   sizeof(x) / sizeof(x[0])
 
#define FOR_EACH_WEB_REQUEST_STR(x)   "LMX_POST_" #x,
 
+ + + + + + + + + +

+Functions

int send_datagram (socket_datagram_header_t *data, void **response_data)
 
int handle_request_get ()
 
int handle_request_post ()
 
int main (void)
 
+

Macro Definition Documentation

+ +
+
+ + + + + + + + +
#define ARRAY_SIZE( x)   sizeof(x) / sizeof(x[0])
+
+ +

Definition at line 32 of file lmxjson.c.

+ +
+
+ +
+
+ + + + + + + + +
#define FOR_EACH_WEB_REQUEST_STR( x)   "LMX_POST_" #x,
+
+ +

Definition at line 34 of file lmxjson.c.

+ +
+
+ +
+
+ + + + +
#define HTML_COMMENT   "<!--"
+
+ +

Definition at line 23 of file lmxjson.c.

+ +
+
+ +
+
+ + + + +
#define HTML_COMMENT_END   "-->"
+
+ +

Definition at line 24 of file lmxjson.c.

+ +
+
+ +
+
+ + + + +
#define HTML_PRE   "<PRE>"
+
+ +

Definition at line 28 of file lmxjson.c.

+ +
+
+ +
+
+ + + + +
#define HTML_PRE_END   "</PRE>"
+
+ +

Definition at line 29 of file lmxjson.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + +
int handle_request_get ()
+
+ +

Definition at line 99 of file lmxjson.c.

+ +
+
+ +
+
+ + + + + + + +
int handle_request_post ()
+
+ +

Definition at line 153 of file lmxjson.c.

+ +
+
+ +
+
+ + + + + + + + +
int main (void )
+
+ +

Definition at line 283 of file lmxjson.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int send_datagram (socket_datagram_header_tdata,
void ** response_data 
)
+
+ +

Definition at line 39 of file lmxjson.c.

+ +
+
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/lmxjson_8c__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/lmxjson_8c__incl.map new file mode 100644 index 0000000..06684fa --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/lmxjson_8c__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/lmxjson_8c__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/lmxjson_8c__incl.md5 new file mode 100644 index 0000000..35e2c32 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/lmxjson_8c__incl.md5 @@ -0,0 +1 @@ +8a3db9922ac2088ccd20e9588bba998a \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/lmxjson_8c__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/lmxjson_8c__incl.png new file mode 100644 index 0000000..2b3fe71 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/lmxjson_8c__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/lmxjson_8c_source.html b/stage2/03-install-piaizu/files/fb/docs/html/lmxjson_8c_source.html new file mode 100644 index 0000000..fbc86d6 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/lmxjson_8c_source.html @@ -0,0 +1,145 @@ + + + + + + +PiAIZU: cgi-src/lmxjson.c Source File + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
lmxjson.c
+
+
+Go to the documentation of this file.
1 #include "fcgi_stdio.h"
2 #include "lmxsocket.h"
3 #include <jansson.h>
4 #include <stdint.h>
5 #include <stdlib.h>
6 #include <string.h>
7 #include <sys/stat.h>
8 #include <unistd.h>
9 
10 static char *nfo[] = {
11  "QUERY_STRING", "REQUEST_METHOD", "CONTENT_TYPE", "CONTENT_LENGTH", "SCRIPT_FILENAME", "SCRIPT_NAME", "PATH_INFO",
12  "PATH_TRANSLATED", "REQUEST_URI", "DOCUMENT_URI", "DOCUMENT_ROOT", "SERVER_PROTOCOL", "GATEWAY_INTERFACE",
13  "SERVER_SOFTWARE", "REMOTE_ADDR", "REMOTE_PORT", "SERVER_ADDR", "SERVER_PORT", "SERVER_NAME", "HTTPS",
14 };
15 #if DBG
16 
17 #define HTML_COMMENT HTML_PRE
18 #define HTML_COMMENT_END HTML_PRE_END
19 
20 
21 #else
22 
23 #define HTML_COMMENT "<!--"
24 #define HTML_COMMENT_END "-->"
25 
26 #endif
27 
28 #define HTML_PRE "<PRE>"
29 #define HTML_PRE_END "</PRE>"
30 
31 
32 #define ARRAY_SIZE(x) sizeof(x) / sizeof(x[0])
33 
34 #define FOR_EACH_WEB_REQUEST_STR(x) "LMX_POST_" #x,
35 
36 static char *webrequest_cmd[] = {WEBREQUEST(FOR_EACH_WEB_REQUEST_STR)};
37 static int sock;
38 
39 int send_datagram(socket_datagram_header_t *data, void **response_data) {
40 
41  struct sockaddr_un name;
42  struct sockaddr_un my_name;
43 
44  if (!data) {
45  return -1;
46  }
47 
48  if (!data->size) {
49  return -1;
50  }
51 
52  sock = socket(AF_UNIX, SOCK_DGRAM, 0);
53  if (sock < 0) {
54  printf("<P><B>Error opening datagram socket</B>");
55  return -1;
56  }
57 
58  /* Server name */
59  name.sun_family = AF_UNIX;
60  strncpy(name.sun_path, SOCKET_NAME, sizeof(name.sun_path));
61 
62  /* Client name*/
63  memset(&my_name, 0, sizeof(struct sockaddr_un));
64  my_name.sun_family = AF_UNIX;
65  snprintf(my_name.sun_path, sizeof(my_name.sun_path), "/tmp/lmx_cgi.socket.%ld", (long)getpid());
66 
67  if (bind(sock, (struct sockaddr *)&my_name, sizeof(struct sockaddr_un)) == -1) {
68  printf("error binding socket: %s\n", my_name.sun_path);
69  }
70 
71  chmod(my_name.sun_path, 0777);
72 
73  /* Send message. */
74  printf(HTML_COMMENT "Sending %d byte datagram via socket %s to the lmx-001 sample "
75  "application.." HTML_COMMENT_END,
76  data->size, name.sun_path);
77 
78  if (sendto(sock, data, data->size, 0, &name, sizeof(struct sockaddr_un)) < 0) {
79  printf("<P><B>Error sending datagram message</B>");
80  close(sock);
81  return -1;
82  }
83 
84  if (response_data != NULL) {
85  int readsize;
86  char receive_buf[DATAGRAM_SIZE];
87  readsize = recvfrom(sock, receive_buf, DATAGRAM_SIZE, 0, NULL, NULL);
88  if (readsize > 0) {
89  *response_data = malloc(readsize);
90  memcpy(*response_data, receive_buf, readsize);
91  }
92  }
93 
94  close(sock);
95  unlink(my_name.sun_path);
96  return 0;
97 }
98 
101  socket_datagram_lmx_info_t *response = NULL;
102 
103  int i;
104  int ret = 0;
105 
106  lmx_info.header.type = SOCKET_DATAGRAM_TYPE_INFO;
107  lmx_info.header.size = sizeof(socket_datagram_lmx_info_t);
108 
109  ret = send_datagram((socket_datagram_header_t *)&lmx_info, (void **)&response);
110  if (ret != 0) {
111  printf("<P>Error sending datagram socket, lmx sample app most probably not "
112  "started\n");
113  return -1;
114  }
115  if (response == NULL) {
116  printf("<P>Response is NULL\n");
117  return -1;
118  }
119  printf("<P>Current container setup in the LMX sample application <PRE>\n");
120 
121  printf("Index, "
122  "offset x, "
123  "offset y, "
124  "width, "
125  "height, "
126  "transparent,"
127  "visible, "
128  "frame, "
129  "framesize_mem,"
130  "Description\n========================================================================================\n");
131 
132  for (i = 0; i < response->n_containers; i++) {
133  container_info_t *ci = &response->containers[i];
134 
135  printf("%02d "
136  " %3d "
137  " %3d "
138  " %3d "
139  " %3d "
140  " %d "
141  " %d "
142  " %d "
143  " %8d"
144  " %s\n",
145  i, ci->x, ci->y, ci->width, ci->height, ci->transparent, ci->visible, ci->frame, ci->framesize_mem,
146  ci->description);
147  }
148  printf(" </PRE>\n");
149  free(response);
150  return ret;
151 }
152 
154 
155  int postlen = atoi(getenv("CONTENT_LENGTH"));
157  int container = 0;
158  if (postlen > 0) {
159 
160  char buf[1024];
161  char *cmd;
162  char *data;
163  int len = postlen > 1024 ? 1024 - 1 : postlen;
164  FCGI_fread(buf, len, 1, FCGI_stdin);
165  printf(HTML_COMMENT "Raw post data:\n=================\n%s\n=================\n" HTML_COMMENT_END, buf);
166  for (i = 0; i < SOCKET_DATAGRAM_TYPE_LAST; i++) {
167  cmd = strstr(buf, webrequest_cmd[i]);
168  printf(HTML_COMMENT "Testing cmd %s against \n{%s}\nResult: %s" HTML_COMMENT_END, webrequest_cmd[i],buf, cmd);
169  if (cmd == NULL) {
170  continue;
171  } else {
172  data = cmd + strlen(webrequest_cmd[i]) + 1;
173  printf(HTML_COMMENT "Found command: <B>%.*s</B> and data: " HTML_COMMENT_END,
174  strlen(webrequest_cmd[i]), cmd, data);
175  switch (i) {
176  case SOCKET_DATAGRAM_TYPE_CONTAINER:
177  container = atoi(data);
178  printf(HTML_COMMENT "Will use container: %d\n" HTML_COMMENT_END, container);
179  break;
180  case SOCKET_DATAGRAM_TYPE_MOVE: {
181  movment_e x;
182  static char *web_move_sub_cmd[] = {"MOVE_UP", "MOVE_DOWN", "MOVE_LEFT", "MOVE_RIGHT",
183  "MOVE_UP_LEFT", "MOVE_UP_RIGHT", "MOVE_DOWN_LEFT", "MOVE_DOWN_RIGHT", "MOVE_CLEAR"};
184 
185  for (x = 0; x < sizeof(web_move_sub_cmd) / sizeof(web_move_sub_cmd[0]); x++) {
186  int y;
187  y = strcmp(data, web_move_sub_cmd[x]);
188  if (y != 0) {
189  continue;
190  } else {
192  req.header.type = SOCKET_DATAGRAM_TYPE_MOVE;
193  req.header.size = sizeof(socket_datagram_lmx_move_t);
194  req.header.container = container;
195  req.move = x;
196  printf(HTML_PRE "%s container %d" HTML_PRE_END,data, req.header.container);
197  printf(HTML_COMMENT "<P> Sending move :%s result: %d" HTML_COMMENT_END, data,
198  send_datagram((socket_datagram_header_t *)&req, NULL));
199  }
200  }
201 
202  break;
203  }
204  case SOCKET_DATAGRAM_TYPE_COORD: {
206  json_t * jcoord;
207  json_t * c;
208  json_t * x;
209  json_t * y;
210 
211  dgcoord.header.type = SOCKET_DATAGRAM_TYPE_COORD;
212  dgcoord.header.size = sizeof(socket_datagram_lmx_coordinate_t);
213 
214  json_error_t error;
215  jcoord = json_loads(data, 0, &error);
216 
217  if (!jcoord) {
218  printf("error: on line %d: %s\n", error.line, error.text);
219  return -1;
220  }
221 
222  c = json_object_get(jcoord, "coord");
223  if (!json_is_object(c)) {
224  printf("error: on line %d: %s\n", error.line, error.text);
225  return -1;
226  }
227 
228  x = json_object_get(c, "x");
229  if (!json_is_integer(x)) {
230  printf("error: on line %d: %s\n", error.line, error.text);
231  return -1;
232  }
233 
234  y = json_object_get(c, "y");
235  if (!json_is_integer(y)) {
236  printf("error: on line %d: %s\n", error.line, error.text);
237  return -1;
238  }
239  dgcoord.coord.x = json_integer_value(x);
240  dgcoord.coord.y = json_integer_value(y);
241 
242  printf(HTML_COMMENT "<P><B>Sending coordinates datagram %d "
243  "struct size %d bytes, stream len %d "
244  "data</B><PRE> x:%d "
245  "y:%d<PRE><P>" HTML_COMMENT_END,
246  send_datagram((socket_datagram_header_t *)&dgcoord, NULL), dgcoord.header.size, len,
247  dgcoord.coord.x, dgcoord.coord.y);
248  printf("<P><PRE>x:%d y:%d</PRE>", dgcoord.coord.x, dgcoord.coord.y);
249 
250  json_decref(x);
251  json_decref(y);
252  json_decref(c);
253  json_decref(jcoord);
254  }
255 
256  break;
257  case SOCKET_DATAGRAM_TYPE_TEXT: {
259  dgdata.header.type = SOCKET_DATAGRAM_TYPE_TEXT;
260  dgdata.header.size = sizeof(socket_datagram_lmx_text_t);
261  strncpy((char *)&dgdata.text, data, TEXT_LENGTH);
262  dgdata.text[TEXT_LENGTH - 1] = '\0';
263  printf(HTML_COMMENT "\n<P><B>Sending text datagram %d data %d struct size %d "
264  "bytes, stream len %d, data "
265  "</B><PRE>%s</PRE><P>" HTML_COMMENT_END,
266  send_datagram((socket_datagram_header_t *)&dgdata, NULL), TEXT_LENGTH, dgdata.header.size, len,
267  dgdata.text);
268  printf("<P><PRE>%s</PRE>", dgdata.text);
269  break;
270  }
271  case SOCKET_DATAGRAM_TYPE_INFO:
272  case SOCKET_DATAGRAM_TYPE_LAST:
273  default:
274  break;
275 
276  }
277  }
278  }
279  }
280  return 0;
281 }
282 
283 int main(void) {
284 
285  int count = 0;
286  unsigned int i;
287 
288  /* Response loop. */
289  while (FCGI_Accept() >= 0) {
290  printf("Content-type: text/html\r\n"
291  "\r\n"
292  "<title>PiAIZU CGI</title>");
293 
294  char *method = getenv("REQUEST_METHOD");
295 
296  if (!strcmp(method, "POST")) {
298  } else if (!strcmp(method, "GET")) {
300  } else {
301 
302  printf("<P>No data posted<BR>");
303  }
304  }
305 
306  printf(HTML_COMMENT);
307  for (i = 0; i < sizeof(nfo) / sizeof(nfo[0]); i++) {
308  printf("%02d: %s: %s" "\n", ++count, nfo[i], getenv(nfo[i]));
309  }
310  printf(HTML_COMMENT_END);
311  return 0;
312 }
#define FOR_EACH_WEB_REQUEST_STR(x)
Definition: lmxjson.c:34
+
container_info_t containers[]
Definition: lmxsocket.h:74
+
socket_datagram_header_t header
Definition: lmxsocket.h:33
+
#define HTML_PRE_END
Definition: lmxjson.c:29
+
char description[DESCRIPTION_LENGHT]
Definition: lmxsocket.h:68
+
int send_datagram(socket_datagram_header_t *data, void **response_data)
Definition: lmxjson.c:39
+ +
int handle_request_post()
Definition: lmxjson.c:153
+ + +
uint16_t y
Definition: lmxsocket.h:29
+
int main(void)
Definition: lmxjson.c:283
+
socket_datagram_type_t
Definition: lmxsocket.h:19
+
#define HTML_COMMENT
Definition: lmxjson.c:23
+
size_t framesize_mem
Definition: lmxsocket.h:67
+
unsigned int height
Definition: lmxsocket.h:63
+
socket_datagram_type_t type
Definition: lmxsocket.h:22
+ + + +
#define DATAGRAM_SIZE
Definition: lmxsocket.h:11
+ + + +
char text[TEXT_LENGTH]
Definition: lmxsocket.h:56
+
#define SOCKET_NAME
Definition: lmxsocket.h:10
+
uint16_t x
Definition: lmxsocket.h:28
+ +
socket_datagram_header_t header
Definition: lmxsocket.h:50
+
#define TEXT_LENGTH
Definition: lmxsocket.h:12
+ + +
socket_datagram_header_t header
Definition: lmxsocket.h:55
+ + + +
socket_datagram_header_t header
Definition: lmxsocket.h:72
+ +
#define HTML_PRE
Definition: lmxjson.c:28
+ +
#define HTML_COMMENT_END
Definition: lmxjson.c:24
+
movment_e
Definition: lmxsocket.h:37
+
unsigned int width
Definition: lmxsocket.h:62
+
int handle_request_get()
Definition: lmxjson.c:99
+ +
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/lmxsocket_8h.html b/stage2/03-install-piaizu/files/fb/docs/html/lmxsocket_8h.html new file mode 100644 index 0000000..a392ac0 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/lmxsocket_8h.html @@ -0,0 +1,326 @@ + + + + + + +PiAIZU: cgi-src/lmxsocket.h File Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
lmxsocket.h File Reference
+
+
+
#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <sys/un.h>
+
+Include dependency graph for lmxsocket.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + +
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + +

+Data Structures

struct  socket_datagram_header_t
 
struct  coordinate_t
 
struct  socket_datagram_lmx_coordinate_t
 
struct  socket_datagram_lmx_move_t
 
struct  socket_datagram_lmx_text_t
 
struct  container_info_t
 
struct  socket_datagram_lmx_info_t
 
+ + + + + + + + + + + + + +

+Macros

#define SOCKET_NAME   "/tmp/lmx.socket"
 
#define DATAGRAM_SIZE   (10 * 1024)
 
#define TEXT_LENGTH   0x100
 
#define DESCRIPTION_LENGHT   256
 
#define WEBREQUEST(x)   x(CONTAINER) x(COORD) x(TEXT) x(INFO) x(MOVE)
 
#define FOR_EACH_WEBREQUEST_ENUM(x)   SOCKET_DATAGRAM_TYPE_##x,
 
+ + + + + +

+Enumerations

enum  socket_datagram_type_t { WEBREQUEST =(FOR_EACH_WEBREQUEST_ENUM) FOR_EACH_WEBREQUEST_ENUM(LAST) + }
 
enum  movment_e {
+  MOVE_UP, +MOVE_DOWN, +MOVE_LEFT, +MOVE_RIGHT, +
+  MOVE_UP_LEFT, +MOVE_UP_RIGHT, +MOVE_DOWN_LEFT, +MOVE_DOWN_RIGHT, +
+  MOVE_CLEAR +
+ }
 
+

Macro Definition Documentation

+ +
+
+ + + + +
#define DATAGRAM_SIZE   (10 * 1024)
+
+ +

Definition at line 11 of file lmxsocket.h.

+ +
+
+ +
+
+ + + + +
#define DESCRIPTION_LENGHT   256
+
+ +

Definition at line 13 of file lmxsocket.h.

+ +
+
+ +
+
+ + + + + + + + +
#define FOR_EACH_WEBREQUEST_ENUM( x)   SOCKET_DATAGRAM_TYPE_##x,
+
+ +

Definition at line 17 of file lmxsocket.h.

+ +
+
+ +
+
+ + + + +
#define SOCKET_NAME   "/tmp/lmx.socket"
+
+ +

Definition at line 10 of file lmxsocket.h.

+ +
+
+ +
+
+ + + + +
#define TEXT_LENGTH   0x100
+
+ +

Definition at line 12 of file lmxsocket.h.

+ +
+
+ +
+
+ + + + + + + + +
#define WEBREQUEST( x)   x(CONTAINER) x(COORD) x(TEXT) x(INFO) x(MOVE)
+
+ +

Definition at line 15 of file lmxsocket.h.

+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum movment_e
+
+ + + + + + + + + + +
Enumerator
MOVE_UP  +
MOVE_DOWN  +
MOVE_LEFT  +
MOVE_RIGHT  +
MOVE_UP_LEFT  +
MOVE_UP_RIGHT  +
MOVE_DOWN_LEFT  +
MOVE_DOWN_RIGHT  +
MOVE_CLEAR  +
+ +

Definition at line 37 of file lmxsocket.h.

+ +
+
+ +
+
+ + + + +
enum socket_datagram_type_t
+
+ + +
Enumerator
WEBREQUEST  +
+ +

Definition at line 19 of file lmxsocket.h.

+ +
+
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/lmxsocket_8h__dep__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/lmxsocket_8h__dep__incl.map new file mode 100644 index 0000000..4eb6390 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/lmxsocket_8h__dep__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/lmxsocket_8h__dep__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/lmxsocket_8h__dep__incl.md5 new file mode 100644 index 0000000..2e34f27 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/lmxsocket_8h__dep__incl.md5 @@ -0,0 +1 @@ +93da2ff7d01f5a12fa068307442c1f86 \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/lmxsocket_8h__dep__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/lmxsocket_8h__dep__incl.png new file mode 100644 index 0000000..c26db61 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/lmxsocket_8h__dep__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/lmxsocket_8h__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/lmxsocket_8h__incl.map new file mode 100644 index 0000000..938b2b7 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/lmxsocket_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/lmxsocket_8h__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/lmxsocket_8h__incl.md5 new file mode 100644 index 0000000..6770986 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/lmxsocket_8h__incl.md5 @@ -0,0 +1 @@ +215a3b93ea43e77f771bdec46b1d2118 \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/lmxsocket_8h__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/lmxsocket_8h__incl.png new file mode 100644 index 0000000..6920e86 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/lmxsocket_8h__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/lmxsocket_8h_source.html b/stage2/03-install-piaizu/files/fb/docs/html/lmxsocket_8h_source.html new file mode 100644 index 0000000..47eab02 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/lmxsocket_8h_source.html @@ -0,0 +1,142 @@ + + + + + + +PiAIZU: cgi-src/lmxsocket.h Source File + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
lmxsocket.h
+
+
+Go to the documentation of this file.
1 #pragma once
2 
3 #include <stdbool.h>
4 #include <stdint.h>
5 #include <stdio.h>
6 #include <sys/socket.h>
7 #include <sys/types.h>
8 #include <sys/un.h>
9 
10 #define SOCKET_NAME "/tmp/lmx.socket"
11 #define DATAGRAM_SIZE (10 * 1024)
12 #define TEXT_LENGTH 0x100
13 #define DESCRIPTION_LENGHT 256
14 
15 #define WEBREQUEST(x) x(CONTAINER) x(COORD) x(TEXT) x(INFO) x(MOVE)
16 
17 #define FOR_EACH_WEBREQUEST_ENUM(x) SOCKET_DATAGRAM_TYPE_##x,
18 
20 
21 typedef struct {
23  int container;
24  size_t size;
26 
27 typedef struct {
28  uint16_t x;
29  uint16_t y;
30 } coordinate_t;
31 
32 typedef struct {
36 
37 typedef enum {
47 } movment_e;
48 
49 typedef struct {
53 
54 typedef struct {
56  char text[TEXT_LENGTH];
58 
59 typedef struct {
60  int x;
61  int y;
62  unsigned int width;
63  unsigned int height;
65  bool visible;
66  char frame;
67  size_t framesize_mem;
68  char description[DESCRIPTION_LENGHT];
70 
71 typedef struct {
74  container_info_t containers[];
socket_datagram_header_t header
Definition: lmxsocket.h:33
+ + + + +
uint16_t y
Definition: lmxsocket.h:29
+ +
socket_datagram_type_t
Definition: lmxsocket.h:19
+ +
size_t framesize_mem
Definition: lmxsocket.h:67
+
unsigned int height
Definition: lmxsocket.h:63
+
socket_datagram_type_t type
Definition: lmxsocket.h:22
+ + + +
#define DESCRIPTION_LENGHT
Definition: lmxsocket.h:13
+ + + + +
#define WEBREQUEST(x)
Definition: lmxsocket.h:15
+
uint16_t x
Definition: lmxsocket.h:28
+ +
socket_datagram_header_t header
Definition: lmxsocket.h:50
+ +
#define TEXT_LENGTH
Definition: lmxsocket.h:12
+ + +
#define FOR_EACH_WEBREQUEST_ENUM(x)
Definition: lmxsocket.h:17
+
socket_datagram_header_t header
Definition: lmxsocket.h:55
+ + + + + +
socket_datagram_header_t header
Definition: lmxsocket.h:72
+ + + +
movment_e
Definition: lmxsocket.h:37
+
unsigned int width
Definition: lmxsocket.h:62
+ +
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/log_8h.html b/stage2/03-install-piaizu/files/fb/docs/html/log_8h.html new file mode 100644 index 0000000..7a43fed --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/log_8h.html @@ -0,0 +1,178 @@ + + + + + + +PiAIZU: lib/log.h File Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
log.h File Reference
+
+
+
#include <stdio.h>
+#include <string.h>
+
+Include dependency graph for log.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + + + + + + + +
+
+

Go to the source code of this file.

+ + + + + + +

+Macros

#define __FILENAME__   (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
 
#define LOG(str, ...)   printf("[%s:%d] " str, __FILENAME__, __LINE__, ##__VA_ARGS__)
 
+

Macro Definition Documentation

+ +
+
+ + + + +
#define __FILENAME__   (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
+
+ +

Definition at line 5 of file log.h.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
#define LOG( str,
 ... 
)   printf("[%s:%d] " str, __FILENAME__, __LINE__, ##__VA_ARGS__)
+
+ +

Definition at line 7 of file log.h.

+ +
+
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/log_8h__dep__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/log_8h__dep__incl.map new file mode 100644 index 0000000..3b81707 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/log_8h__dep__incl.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/log_8h__dep__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/log_8h__dep__incl.md5 new file mode 100644 index 0000000..cbe2a31 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/log_8h__dep__incl.md5 @@ -0,0 +1 @@ +25ad103b92f7c49246b05f4ab4baebc0 \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/log_8h__dep__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/log_8h__dep__incl.png new file mode 100644 index 0000000..ac4a23c Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/log_8h__dep__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/log_8h__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/log_8h__incl.map new file mode 100644 index 0000000..9922c5f --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/log_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/log_8h__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/log_8h__incl.md5 new file mode 100644 index 0000000..d3ba4dd --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/log_8h__incl.md5 @@ -0,0 +1 @@ +7bbeeb08c3f320d4f82e5ce13aeaee7d \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/log_8h__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/log_8h__incl.png new file mode 100644 index 0000000..daf3139 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/log_8h__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/log_8h_source.html b/stage2/03-install-piaizu/files/fb/docs/html/log_8h_source.html new file mode 100644 index 0000000..0847e14 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/log_8h_source.html @@ -0,0 +1,100 @@ + + + + + + +PiAIZU: lib/log.h Source File + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
log.h
+
+
+Go to the documentation of this file.
1 #pragma once
2 #include <stdio.h>
3 #include <string.h>
4 
5 #define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
6 
7 #define LOG(str, ...) printf("[%s:%d] " str, __FILENAME__, __LINE__, ##__VA_ARGS__)
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/main_8c.html b/stage2/03-install-piaizu/files/fb/docs/html/main_8c.html new file mode 100644 index 0000000..5a97b35 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/main_8c.html @@ -0,0 +1,345 @@ + + + + + + +PiAIZU: main.c File Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
main.c File Reference
+
+
+
#include "bmp.h"
+#include "container.h"
+#include "define_containers.h"
+#include "fwatch.h"
+#include "keys.h"
+#include "log.h"
+#include "text.h"
+#include "webrequest.h"
+#include <pthread.h>
+#include <signal.h>
+#include <stdatomic.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <unistd.h>
+
+Include dependency graph for main.c:
+
+
+ + + + + + + + + + + +
+
+

Go to the source code of this file.

+ + + + + + + + +

+Macros

#define START_FRAME   0
 
#define AP_ANIM_EVERY_FRAME   45
 
#define EVENT_TEXT_SIZE   50
 
+ + + +

+Enumerations

enum  event_key_handle_e {
+  EVENT_LEFT_PRESS_SHORT, +EVENT_LEFT_PRESS_LONG, +EVENT_RIGHT_PRESS_SHORT, +EVENT_RIGHT_PRESS_LONG, +
+  EVENT_N +
+ }
 
+ + + + + + + + + + + +

+Functions

void animate_wifi_ap ()
 
void animate_sony_logi (bool fade_out)
 
void intShutdown (int sign)
 
void key_press_callback (double presstime, key_e key, int handle)
 
int main ()
 
+

Macro Definition Documentation

+ +
+
+ + + + +
#define AP_ANIM_EVERY_FRAME   45
+
+ +

Definition at line 18 of file main.c.

+ +
+
+ +
+
+ + + + +
#define EVENT_TEXT_SIZE   50
+
+ +

Definition at line 74 of file main.c.

+ +
+
+ +
+
+ + + + +
#define START_FRAME   0
+
+ +

Definition at line 17 of file main.c.

+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum event_key_handle_e
+
+ + + + + + +
Enumerator
EVENT_LEFT_PRESS_SHORT  +
EVENT_LEFT_PRESS_LONG  +
EVENT_RIGHT_PRESS_SHORT  +
EVENT_RIGHT_PRESS_LONG  +
EVENT_N  +
+ +

Definition at line 66 of file main.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
void animate_sony_logi (bool fade_out)
+
+ +

Definition at line 223 of file main.c.

+ +
+
+ +
+
+ + + + + + + +
void animate_wifi_ap ()
+
+ +

Definition at line 205 of file main.c.

+ +
+
+ +
+
+ + + + + + + + +
void intShutdown (int sign)
+
+ +

Definition at line 61 of file main.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void key_press_callback (double presstime,
key_e key,
int handle 
)
+
+ +

Definition at line 75 of file main.c.

+ +
+
+ +
+
+ + + + + + + + +
int main (void )
+
+ +

Definition at line 105 of file main.c.

+ +
+
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/main_8c__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/main_8c__incl.map new file mode 100644 index 0000000..e9995dd --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/main_8c__incl.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/main_8c__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/main_8c__incl.md5 new file mode 100644 index 0000000..65a8ae6 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/main_8c__incl.md5 @@ -0,0 +1 @@ +793e5e5cd342b1f739115d01c64f2e44 \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/main_8c__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/main_8c__incl.png new file mode 100644 index 0000000..242f54a Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/main_8c__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/main_8c_source.html b/stage2/03-install-piaizu/files/fb/docs/html/main_8c_source.html new file mode 100644 index 0000000..25357e5 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/main_8c_source.html @@ -0,0 +1,140 @@ + + + + + + +PiAIZU: main.c Source File + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + +
+ +
+
+ + +
+ +
+ +
+
+
main.c
+
+
+Go to the documentation of this file.
1 #include "bmp.h"
2 #include "container.h"
3 #include "define_containers.h"
4 #include "fwatch.h"
5 #include "keys.h"
6 #include "log.h"
7 #include "text.h"
8 #include "webrequest.h"
9 #include <pthread.h>
10 #include <signal.h>
11 #include <stdatomic.h>
12 #include <stdio.h>
13 #include <stdlib.h>
14 #include <time.h>
15 #include <unistd.h>
16 
17 #define START_FRAME 0
18 #define AP_ANIM_EVERY_FRAME 45
19 
20 void animate_wifi_ap();
21 void animate_sony_logi(bool fade_out);
22 static bool shutdown = false;
23 
24 static const char *logoanim[] = {
25  "sonylogo_00001.bmp", "sonylogo_00002.bmp", "sonylogo_00003.bmp", "sonylogo_00004.bmp", "sonylogo_00005.bmp",
26  "sonylogo_00006.bmp", "sonylogo_00007.bmp", "sonylogo_00008.bmp", "sonylogo_00009.bmp", "sonylogo_00010.bmp",
27  "sonylogo_00011.bmp", "sonylogo_00012.bmp", "sonylogo_00013.bmp", "sonylogo_00014.bmp", "sonylogo_00015.bmp",
28  "sonylogo_00016.bmp", "sonylogo_00017.bmp", "sonylogo_00018.bmp", "sonylogo_00019.bmp", "sonylogo_00020.bmp",
29  "sonylogo_00021.bmp", "sonylogo_00022.bmp", "sonylogo_00023.bmp", "sonylogo_00024.bmp", "sonylogo_00025.bmp",
30  "sonylogo_00026.bmp", "sonylogo_00027.bmp", "sonylogo_00028.bmp", "sonylogo_00029.bmp", "sonylogo_00030.bmp",
31  "sonylogo_00031.bmp", "sonylogo_00032.bmp", "sonylogo_00033.bmp", "sonylogo_00034.bmp", "sonylogo_00035.bmp",
32  "sonylogo_00036.bmp", "sonylogo_00037.bmp", "sonylogo_00038.bmp", "sonylogo_00039.bmp", "sonylogo_00040.bmp",
33  "sonylogo_00041.bmp", "sonylogo_00042.bmp", "sonylogo_00043.bmp", "sonylogo_00044.bmp", "sonylogo_00045.bmp",
34  "sonylogo_00046.bmp", "sonylogo_00047.bmp", "sonylogo_00048.bmp", "sonylogo_00049.bmp", "sonylogo_00050.bmp",
35  "sonylogo_00051.bmp", "sonylogo_00052.bmp", "sonylogo_00053.bmp", "sonylogo_00054.bmp", "sonylogo_00055.bmp",
36  "sonylogo_00056.bmp", "sonylogo_00057.bmp", "sonylogo_00058.bmp", "sonylogo_00059.bmp", "sonylogo_00060.bmp",
37  "sonylogo_00061.bmp", "sonylogo_00062.bmp", "sonylogo_00063.bmp", "sonylogo_00064.bmp", "sonylogo_00065.bmp",
38  "sonylogo_00066.bmp", "sonylogo_00067.bmp", "sonylogo_00068.bmp", "sonylogo_00069.bmp", "sonylogo_00070.bmp",
39  "sonylogo_00071.bmp", "sonylogo_00072.bmp", "sonylogo_00073.bmp", "sonylogo_00074.bmp", "sonylogo_00075.bmp",
40  "sonylogo_00076.bmp", "sonylogo_00077.bmp", "sonylogo_00078.bmp", "sonylogo_00079.bmp", "sonylogo_00080.bmp",
41  "sonylogo_00081.bmp", "sonylogo_00082.bmp", "sonylogo_00083.bmp", "sonylogo_00084.bmp", "sonylogo_00085.bmp",
42  "sonylogo_00086.bmp", "sonylogo_00087.bmp", "sonylogo_00088.bmp", "sonylogo_00089.bmp", "sonylogo_00090.bmp",
43  "sonylogo_00091.bmp", "sonylogo_00092.bmp", "sonylogo_00093.bmp", "sonylogo_00094.bmp", "sonylogo_00095.bmp",
44  "sonylogo_00096.bmp", "sonylogo_00097.bmp", "sonylogo_00098.bmp", "sonylogo_00099.bmp", "sonylogo_00100.bmp",
45  "sonylogo_00101.bmp", "sonylogo_00102.bmp", "sonylogo_00103.bmp", "sonylogo_00104.bmp", "sonylogo_00105.bmp",
46  "sonylogo_00106.bmp", "sonylogo_00107.bmp", "sonylogo_00108.bmp", "sonylogo_00109.bmp", "sonylogo_00110.bmp",
47  "sonylogo_00111.bmp", "sonylogo_00112.bmp", "sonylogo_00113.bmp", "sonylogo_00114.bmp", "sonylogo_00115.bmp",
48  "sonylogo_00116.bmp", "sonylogo_00117.bmp", "sonylogo_00118.bmp", "sonylogo_00119.bmp", "sonylogo_00120.bmp",
49  "sonylogo_00121.bmp", "sonylogo_00122.bmp", "sonylogo_00123.bmp", "sonylogo_00124.bmp", "sonylogo_00125.bmp",
50  "sonylogo_00126.bmp", "sonylogo_00127.bmp", "sonylogo_00128.bmp", "sonylogo_00129.bmp", "sonylogo_00130.bmp",
51  "sonylogo_00131.bmp", "sonylogo_00132.bmp", "sonylogo_00133.bmp", "sonylogo_00134.bmp", "sonylogo_00135.bmp",
52  "sonylogo_00136.bmp", "sonylogo_00137.bmp", "sonylogo_00138.bmp", "sonylogo_00139.bmp", "sonylogo_00140.bmp",
53  "sonylogo_00141.bmp", "sonylogo_00142.bmp", "sonylogo_00143.bmp", "sonylogo_00144.bmp", "sonylogo_00145.bmp",
54  "sonylogo_00146.bmp", "sonylogo_00147.bmp", "sonylogo_00148.bmp", "sonylogo_00149.bmp", "sonylogo_00150.bmp",
55  "sonylogo_00151.bmp", "sonylogo_00152.bmp", "sonylogo_00153.bmp", "sonylogo_00154.bmp", "sonylogo_00155.bmp",
56  "sonylogo_00156.bmp", "sonylogo_00157.bmp", "sonylogo_00158.bmp", "sonylogo_00159.bmp",
57 };
58 
59 static gimp_bitmap_t *sony_bm[sizeof(logoanim) / sizeof(logoanim[0])];
60 
61 void intShutdown(int sign) {
62  (void)sign;
63  shutdown = true;
64 }
65 
66 typedef enum {
73 
74 #define EVENT_TEXT_SIZE 50
75 void key_press_callback(double presstime, key_e key, int handle) {
76 
77  char testtext[EVENT_TEXT_SIZE] = "";
78 
79  (void)presstime;
80  (void)key;
81 
82  container_reset(9);
83  switch (handle) {
85  snprintf(testtext, EVENT_TEXT_SIZE, "Left\nShort\n%0.2fs", presstime);
86  break;
88  snprintf(testtext, EVENT_TEXT_SIZE, "Left\nLong\n%0.2fs", presstime);
89 
90  break;
92  snprintf(testtext, EVENT_TEXT_SIZE, "Right\nShort\n%0.2fs", presstime);
93 
94  break;
96  snprintf(testtext, EVENT_TEXT_SIZE, "Right\nLong\n%0.2fs", presstime);
97 
98  break;
99  default:
100  break;
101  }
102  text_put(KEY_INFO, testtext);
103 }
104 
105 int main() {
106 
107  gimp_bitmap_t *bitmap;
108 
109  /* Catch a whole bunch of signals and shutdown properly */
110  signal(SIGINT, intShutdown);
111  signal(SIGTERM, intShutdown);
112  signal(SIGSTOP, intShutdown);
113  signal(SIGKILL, intShutdown);
114 
115  LOG("Git sha: %s\nBuild date: %s\n\n", GITSHA, DATE);
116 
117  /* Initialize the framebuffer and container lib */
118  container_new(&containers);
119 
120  /* Initialize the text/font lib */
121  text_init();
122 
125 
128 
129  if (keys_start()) {
130  goto on_err;
131  }
132 
133  if (webrequest_init()) {
134  goto on_err;
135  }
136 
137  if (fwatch_start()) {
138  goto on_err;
139  }
140 
141  container_visible(SONY_LOGO, true);
142  container_visible(AP_A, true);
143  container_visible(AP_B, false);
144  container_visible(AP_C, false);
145  container_visible(AP_D, false);
146 
147  if (bmp_open_path("graphics", "wifi_ap_a.bmp", &bitmap) != 0)
148  return -1;
149  container_fill_bitmap(AP_A, bitmap, true);
150  bmp_free(&bitmap);
151 
152  if (bmp_open_path("graphics", "wifi_ap_b.bmp", &bitmap) != 0)
153  return -1;
154  container_fill_bitmap(AP_B, bitmap, true);
155  bmp_free(&bitmap);
156 
157  if (bmp_open_path("graphics", "wifi_ap_c.bmp", &bitmap) != 0)
158  return -1;
159  container_fill_bitmap(AP_C, bitmap, true);
160  bmp_free(&bitmap);
161 
162  if (bmp_open_path("graphics", "wifi_ap_d.bmp", &bitmap) != 0)
163  return -1;
164  container_fill_bitmap(AP_D, bitmap, true);
165  bmp_free(&bitmap);
166 
167  text_put(WIFI_TEXTBOX, "Connect to WiFi SSID: PiAIZU\nGoto: http://192.168.1.1/");
168 
169  container_visible(WIFI_TEXTBOX, true);
171 
172  container_fill_bitmap(AP_D, bitmap, true);
173  bmp_free(&bitmap);
174 
175  text_put(TEXT, "AP");
177  for (unsigned int anim = START_FRAME; anim < sizeof(logoanim) / sizeof(logoanim[0]); anim++) {
178  bmp_open_path("graphics/anim", logoanim[anim], &sony_bm[anim]);
179  }
180 
181  animate_sony_logi(true);
182 
183  bool do_anim = true;
184  do {
185 
186  do_anim = !do_anim;
187  animate_sony_logi(do_anim);
188  fwatch_do(25000);
189 
190  } while (!shutdown);
191  LOG("Cleaning up and shutting down...\n");
192 
193 on_err:
194  for (unsigned int anim = START_FRAME; anim < sizeof(logoanim) / sizeof(logoanim[0]); anim++) {
195  bmp_free(&sony_bm[anim]);
196  }
197 
199  container_close();
200  text_close();
201 
202  return 0;
203 }
204 static int wifi = AP_B;
206 
207  do {
208  if (wifi <= AP_D) {
209  container_visible(wifi, true);
210 
211  wifi++;
212  } else {
213  container_visible(AP_A, true);
214  container_visible(AP_B, false);
215  container_visible(AP_C, false);
216  container_visible(AP_D, false);
217 
218  wifi = AP_B;
219  }
220  } while (0);
221 }
222 
223 void animate_sony_logi(bool fade_out) {
224  unsigned int anim;
225 
226  if (fade_out) {
227  for (anim = START_FRAME; anim < sizeof(logoanim) / sizeof(logoanim[0]) && !shutdown; anim++) {
228 
229  container_fill_bitmap(SONY_LOGO, sony_bm[anim], true);
230 
231  if (anim % AP_ANIM_EVERY_FRAME == 0) {
232  animate_wifi_ap();
233  }
235  fwatch_do(4000);
236  }
237  } else {
238  for (anim = (sizeof(logoanim) / sizeof(logoanim[0])) - 1; anim > START_FRAME && !shutdown; anim--) {
239 
240  container_fill_bitmap(SONY_LOGO, sony_bm[anim], true);
241 
242  if (anim % AP_ANIM_EVERY_FRAME == 0) {
243  animate_wifi_ap();
244  }
246  fwatch_do(4000);
247  }
248  }
249 }
#define AP_ANIM_EVERY_FRAME
Definition: main.c:18
+
event_key_handle_e
Definition: main.c:66
+
int webrequest_init()
Definition: webrequest.c:165
+
#define LOG(str,...)
Definition: log.h:7
+
int container_fill_bitmap(unsigned int container, gimp_bitmap_t *bm, bool transparent)
Definition: container.c:186
+
int main()
Definition: main.c:105
+ + +
void text_close()
Definition: text.c:88
+
void text_put(int container, char *string)
Definition: text.c:175
+ + + +
void container_visible(unsigned int container, bool visible)
Definition: container.c:109
+
void key_press_callback(double presstime, key_e key, int handle)
Definition: main.c:75
+
void text_init()
Definition: text.c:99
+ +
void container_reset(unsigned int container)
Definition: container.c:73
+
int container_compile()
Definition: container.c:121
+
Definition: main.c:71
+ +
int keys_register_cb(key_press_f cb, key_e key, double time, int handle)
Definition: keys.c:81
+
void intShutdown(int sign)
Definition: main.c:61
+ +
void container_new(containers_t *containers)
Definition: container.c:209
+
int bmp_open_path(const char *path, const char *file, gimp_bitmap_t **bitmap)
Definition: bmp.c:74
+
int keys_start()
Definition: keys.c:171
+ +
void container_close()
Definition: container.c:197
+
void animate_wifi_ap()
Definition: main.c:205
+
void webrequest_close()
Definition: webrequest.c:193
+ +
#define START_FRAME
Definition: main.c:17
+ + +
void bmp_free(gimp_bitmap_t **bitmap)
Definition: bmp.c:183
+
int fwatch_do(int us)
Definition: fwatch.c:83
+
#define EVENT_TEXT_SIZE
Definition: main.c:74
+
key_e
Definition: keys.h:7
+ + + +
void animate_sony_logi(bool fade_out)
Definition: main.c:223
+
int fwatch_start()
Definition: fwatch.c:67
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/nav_f.png b/stage2/03-install-piaizu/files/fb/docs/html/nav_f.png new file mode 100644 index 0000000..72a58a5 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/nav_f.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/nav_g.png b/stage2/03-install-piaizu/files/fb/docs/html/nav_g.png new file mode 100644 index 0000000..2093a23 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/nav_g.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/nav_h.png b/stage2/03-install-piaizu/files/fb/docs/html/nav_h.png new file mode 100644 index 0000000..33389b1 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/nav_h.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/open.png b/stage2/03-install-piaizu/files/fb/docs/html/open.png new file mode 100644 index 0000000..30f75c7 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/open.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_0.html b/stage2/03-install-piaizu/files/fb/docs/html/search/all_0.html new file mode 100644 index 0000000..d54e0bd --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_0.js b/stage2/03-install-piaizu/files/fb/docs/html/search/all_0.js new file mode 100644 index 0000000..dcb9811 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_5f_5ffilename_5f_5f',['__FILENAME__',['../log_8h.html#a5fccb4fc71e44089a1b1a77fc76c0b68',1,'log.h']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_1.html b/stage2/03-install-piaizu/files/fb/docs/html/search/all_1.html new file mode 100644 index 0000000..8cc6a1d --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_1.js b/stage2/03-install-piaizu/files/fb/docs/html/search/all_1.js new file mode 100644 index 0000000..7ab38f5 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_1.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['alpha',['ALPHA',['../container_8c.html#af5abd28c44c29b7397c84f1fec4b1d84',1,'container.c']]], + ['animate_5fsony_5flogi',['animate_sony_logi',['../main_8c.html#a2ab8c93790d4e1eab20bceb8083ed5fb',1,'main.c']]], + ['animate_5fwifi_5fap',['animate_wifi_ap',['../main_8c.html#a15ce6192d420dcd6e231a59d721aefc0',1,'main.c']]], + ['ap_5fanim_5fevery_5fframe',['AP_ANIM_EVERY_FRAME',['../main_8c.html#a964b765595375d21a5ddf317666b52d7',1,'main.c']]], + ['array_5fsize',['ARRAY_SIZE',['../lmxjson_8c.html#a6242a25f9d996f0cc4f4cdb911218b75',1,'lmxjson.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_10.html b/stage2/03-install-piaizu/files/fb/docs/html/search/all_10.html new file mode 100644 index 0000000..c25484f --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_10.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_10.js b/stage2/03-install-piaizu/files/fb/docs/html/search/all_10.js new file mode 100644 index 0000000..e3e60b3 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_10.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['red',['RED',['../container_8c.html#a8d23feea868a983c8c2b661e1e16972f',1,'container.c']]], + ['reserved_5fa',['reserved_a',['../structbmp__header__t.html#a1b1b1cb513d2f42a1e6efbd79f4bdec8',1,'bmp_header_t']]], + ['reserved_5fb',['reserved_b',['../structbmp__header__t.html#af5bbd61d1ac8839a59415368aecfa1c7',1,'bmp_header_t']]], + ['rfds',['rfds',['../structfwatch__t.html#a958354695787d34346b02a9948d08968',1,'fwatch_t']]], + ['rgb_5fbitmask',['RGB_BITMASK',['../container_8c.html#ae31c7b5654038d07c0d4ac6a9b8b685d',1,'container.c']]], + ['rgba_5ft',['rgba_t',['../container_8h.html#a677f336708895229045de5be0052a3a3',1,'container.h']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_11.html b/stage2/03-install-piaizu/files/fb/docs/html/search/all_11.html new file mode 100644 index 0000000..3615c28 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_11.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_11.js b/stage2/03-install-piaizu/files/fb/docs/html/search/all_11.js new file mode 100644 index 0000000..cb03155 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_11.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['send_5fdatagram',['send_datagram',['../lmxjson_8c.html#a4818cd27c1a79914d937d05dfcf6acf6',1,'lmxjson.c']]], + ['signature',['signature',['../structbmp__header__t.html#a0990e32df654060facbca342d5381712',1,'bmp_header_t']]], + ['size',['size',['../structsocket__datagram__header__t.html#a77e3868728a23b3f23e162c1a477954f',1,'socket_datagram_header_t']]], + ['socket_5fdatagram_5fheader_5ft',['socket_datagram_header_t',['../structsocket__datagram__header__t.html',1,'']]], + ['socket_5fdatagram_5flmx_5fcoordinate_5ft',['socket_datagram_lmx_coordinate_t',['../structsocket__datagram__lmx__coordinate__t.html',1,'']]], + ['socket_5fdatagram_5flmx_5finfo_5ft',['socket_datagram_lmx_info_t',['../structsocket__datagram__lmx__info__t.html',1,'']]], + ['socket_5fdatagram_5flmx_5fmove_5ft',['socket_datagram_lmx_move_t',['../structsocket__datagram__lmx__move__t.html',1,'']]], + ['socket_5fdatagram_5flmx_5ftext_5ft',['socket_datagram_lmx_text_t',['../structsocket__datagram__lmx__text__t.html',1,'']]], + ['socket_5fdatagram_5ftype_5ft',['socket_datagram_type_t',['../lmxsocket_8h.html#a361754699a759ce3449219476b6f227f',1,'lmxsocket.h']]], + ['socket_5fname',['SOCKET_NAME',['../lmxsocket_8h.html#a8bef388d9b2673363c0069157d3beab3',1,'lmxsocket.h']]], + ['start_5fframe',['START_FRAME',['../main_8c.html#a0b51846c82f364ec10db44ad8c251bd8',1,'main.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_12.html b/stage2/03-install-piaizu/files/fb/docs/html/search/all_12.html new file mode 100644 index 0000000..abd082a --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_12.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_12.js b/stage2/03-install-piaizu/files/fb/docs/html/search/all_12.js new file mode 100644 index 0000000..8f643b4 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_12.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['text',['text',['../structsocket__datagram__lmx__text__t.html#a270dceb9979d751a37804537c3b3c8d9',1,'socket_datagram_lmx_text_t']]], + ['text_2ec',['text.c',['../text_8c.html',1,'']]], + ['text_2eh',['text.h',['../text_8h.html',1,'']]], + ['text_5fclose',['text_close',['../text_8c.html#a4dac91da42d307349880be6953933667',1,'text_close(): text.c'],['../text_8h.html#a4dac91da42d307349880be6953933667',1,'text_close(): text.c']]], + ['text_5fget_5fchar_5fbitmap',['text_get_char_bitmap',['../text_8c.html#a5c3bac04613ceb735332fcf3e54bfe36',1,'text.c']]], + ['text_5fget_5fchar_5ffont',['text_get_char_font',['../text_8c.html#aafdbf9301217d95e8e76b9946b1ffc16',1,'text.c']]], + ['text_5finit',['text_init',['../text_8c.html#a8e5b8db4a9381a196dca3500d0b4c862',1,'text_init(): text.c'],['../text_8h.html#a8e5b8db4a9381a196dca3500d0b4c862',1,'text_init(): text.c']]], + ['text_5flength',['TEXT_LENGTH',['../lmxsocket_8h.html#a14608b60296aeb2c56a375285a108c34',1,'lmxsocket.h']]], + ['text_5fput',['text_put',['../text_8c.html#a2c3d471149c5f168689e8b4a2416fb1e',1,'text_put(int container, char *string): text.c'],['../text_8h.html#a2c3d471149c5f168689e8b4a2416fb1e',1,'text_put(int container, char *string): text.c']]], + ['time',['time',['../structkey__press__event__t.html#a8e4d38d0be3e97ef0e33f87e6b2efdfd',1,'key_press_event_t']]], + ['time_5fhold',['time_hold',['../structkey__action__t.html#a985440e879772fcd7f3a1d74d35c39f6',1,'key_action_t']]], + ['time_5fpressed',['time_pressed',['../structkey__action__t.html#a3b9f04eed18e3f4900c38b0e22301f31',1,'key_action_t']]], + ['time_5freleased',['time_released',['../structkey__action__t.html#a200f2f1e9407b325f1535d80a9cc5ba4',1,'key_action_t']]], + ['timeout',['timeout',['../structfwatch__t.html#a261f6a9bc1b13ce714cbcfe4d8620a59',1,'fwatch_t']]], + ['transparent',['transparent',['../structcontainer__t.html#a9a90fbf05f28a066739f31e6fa6ebcf6',1,'container_t::transparent()'],['../structcontainer__info__t.html#a9b5e40e1889b51ea591ccea809af8880',1,'container_info_t::transparent()']]], + ['type',['type',['../structsocket__datagram__header__t.html#a61b4d7c63d263e3c00f02c7e13a82715',1,'socket_datagram_header_t']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_13.html b/stage2/03-install-piaizu/files/fb/docs/html/search/all_13.html new file mode 100644 index 0000000..88fa653 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_13.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_13.js b/stage2/03-install-piaizu/files/fb/docs/html/search/all_13.js new file mode 100644 index 0000000..6f8eede --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_13.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['var_5finfo',['var_info',['../structframe__buffer.html#a3cd2175d95cfe0d2ab3f4d8d1ffc0bf2',1,'frame_buffer']]], + ['version_2ec',['version.c',['../version_8c.html',1,'']]], + ['version_2eh',['version.h',['../version_8h.html',1,'']]], + ['version_5fdate_5fget',['version_date_get',['../version_8c.html#ac1d7273561ab179045ec7ffbbf26dd15',1,'version_date_get(void): version.c'],['../version_8h.html#ac1d7273561ab179045ec7ffbbf26dd15',1,'version_date_get(void): version.c']]], + ['version_5fgit_5fget',['version_git_get',['../version_8c.html#a312ed7725aab60a5d9a525276cd8d2c9',1,'version_git_get(void): version.c'],['../version_8h.html#a312ed7725aab60a5d9a525276cd8d2c9',1,'version_git_get(void): version.c']]], + ['visible',['visible',['../structcontainer__t.html#abc4f1b4dc74d94c2dd01a1316ac84cc7',1,'container_t::visible()'],['../structcontainer__info__t.html#a20328df479ee65c6a5e78cd1a4cd31cc',1,'container_info_t::visible()']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_14.html b/stage2/03-install-piaizu/files/fb/docs/html/search/all_14.html new file mode 100644 index 0000000..518db1d --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_14.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_14.js b/stage2/03-install-piaizu/files/fb/docs/html/search/all_14.js new file mode 100644 index 0000000..2f81e1f --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_14.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['wait_5ftimeout_5fs',['WAIT_TIMEOUT_S',['../keys_8c.html#ab8ba58644f9627d46b7cbb7134863b66',1,'keys.c']]], + ['webrequest',['WEBREQUEST',['../lmxsocket_8h.html#adc0148621a4198473edf3a2075f288f4',1,'WEBREQUEST(): lmxsocket.h'],['../lmxsocket_8h.html#a361754699a759ce3449219476b6f227fa366b0ceddad9a22be728ac0a559b2bb4',1,'WEBREQUEST(): lmxsocket.h']]], + ['webrequest_2ec',['webrequest.c',['../webrequest_8c.html',1,'']]], + ['webrequest_2eh',['webrequest.h',['../webrequest_8h.html',1,'']]], + ['webrequest_5fclose',['webrequest_close',['../webrequest_8c.html#a71593d09142e24733934de92b987363a',1,'webrequest_close(): webrequest.c'],['../webrequest_8h.html#a71593d09142e24733934de92b987363a',1,'webrequest_close(): webrequest.c']]], + ['webrequest_5fhandle',['webrequest_handle',['../webrequest_8c.html#ae180a90304442ccf67822992faf62779',1,'webrequest.c']]], + ['webrequest_5finit',['webrequest_init',['../webrequest_8c.html#a9b6c87e8646937e58d20e244528eb89c',1,'webrequest_init(): webrequest.c'],['../webrequest_8h.html#a9b6c87e8646937e58d20e244528eb89c',1,'webrequest_init(): webrequest.c']]], + ['webrequest_5fupdate_5fcrosshair',['webrequest_update_crosshair',['../webrequest_8c.html#a7b9b2c0614c1feedd25cbdb7354b2cd3',1,'webrequest.c']]], + ['webrequest_5fupdate_5ftext',['webrequest_update_text',['../webrequest_8c.html#a20a24ed4bb1c585c45381b2c9e56a5d0',1,'webrequest.c']]], + ['width',['width',['../structbmp__header__t.html#a5e2c8f9c3af00a7b3a7eddb65674fb3d',1,'bmp_header_t::width()'],['../structcontainer__t.html#a1ddd859b73bb396b91c3660d28d690e9',1,'container_t::width()'],['../structgimp__bitmap__t.html#a7c67871cc4a591dccdad8364e097729d',1,'gimp_bitmap_t::width()'],['../structframe__buffer.html#ac97cd489d8421b7a1faa897c2774ff1e',1,'frame_buffer::width()'],['../structfont__character__t.html#afc04f5ee227cbf2ba84b243d3438aee6',1,'font_character_t::width()'],['../structcontainer__info__t.html#a73f40909c3718ccadf18fe34f34f6d83',1,'container_info_t::width()']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_15.html b/stage2/03-install-piaizu/files/fb/docs/html/search/all_15.html new file mode 100644 index 0000000..1331c0d --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_15.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_15.js b/stage2/03-install-piaizu/files/fb/docs/html/search/all_15.js new file mode 100644 index 0000000..b03c903 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_15.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['x',['x',['../structcontainer__t.html#ae4abec600666b4289eb4cff6df72b40c',1,'container_t::x()'],['../structcoordinate__t.html#a8afa92b641bc97ce4e6e1ab1c5074f1b',1,'coordinate_t::x()'],['../structcontainer__info__t.html#ab412aa9e3782e5a2cbcffac58cdd7fa8',1,'container_info_t::x()']]], + ['x_5fres',['x_res',['../structbmp__header__t.html#a10f1a21504ea598dba94172983928ef0',1,'bmp_header_t']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_16.html b/stage2/03-install-piaizu/files/fb/docs/html/search/all_16.html new file mode 100644 index 0000000..bec9d5d --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_16.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_16.js b/stage2/03-install-piaizu/files/fb/docs/html/search/all_16.js new file mode 100644 index 0000000..7399fc1 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_16.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['y',['y',['../structcontainer__t.html#a03a8dfe23a6b69d788c496b8c9d8bd05',1,'container_t::y()'],['../structcoordinate__t.html#a31eef5de4d41d2c29ff62c5a19c10879',1,'coordinate_t::y()'],['../structcontainer__info__t.html#ac633ff02409cd5fe500dc6c5ef1b82da',1,'container_info_t::y()']]], + ['y_5fres',['y_res',['../structbmp__header__t.html#a48850a410b7409fedf12501a2676d3ae',1,'bmp_header_t']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_2.html b/stage2/03-install-piaizu/files/fb/docs/html/search/all_2.html new file mode 100644 index 0000000..d15ac65 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_2.js b/stage2/03-install-piaizu/files/fb/docs/html/search/all_2.js new file mode 100644 index 0000000..cb207ac --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_2.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['bg_5fcolor',['bg_color',['../structcontainer__t.html#aa15998595ab97a9183bf59d6ffb7067f',1,'container_t']]], + ['bits_5fper_5fpixel',['bits_per_pixel',['../structbmp__header__t.html#a6f5786a0568050a2cbeac4e890b6b05f',1,'bmp_header_t::bits_per_pixel()'],['../structcontainer__t.html#ac0a9423a0a24c984c671fcddc73e0a3e',1,'container_t::bits_per_pixel()']]], + ['blue',['BLUE',['../container_8c.html#a79d10e672abb49ad63eeaa8aaef57c38',1,'container.c']]], + ['bmp_2ec',['bmp.c',['../bmp_8c.html',1,'']]], + ['bmp_2eh',['bmp.h',['../bmp_8h.html',1,'']]], + ['bmp_5ffree',['bmp_free',['../bmp_8c.html#a87e64490794ece5944cc5e15c434022a',1,'bmp_free(gimp_bitmap_t **bitmap): bmp.c'],['../bmp_8h.html#a87e64490794ece5944cc5e15c434022a',1,'bmp_free(gimp_bitmap_t **bitmap): bmp.c']]], + ['bmp_5fheader_5ft',['bmp_header_t',['../structbmp__header__t.html',1,'']]], + ['bmp_5fopen',['bmp_open',['../bmp_8c.html#a8d159e5a75c98825f9213b7d66ffcd90',1,'bmp_open(const char *file, gimp_bitmap_t **bitmap): bmp.c'],['../bmp_8h.html#a8d159e5a75c98825f9213b7d66ffcd90',1,'bmp_open(const char *file, gimp_bitmap_t **bitmap): bmp.c']]], + ['bmp_5fopen_5fpath',['bmp_open_path',['../bmp_8c.html#a866d4063788055b00820d13ad0059c08',1,'bmp_open_path(const char *path, const char *file, gimp_bitmap_t **bitmap): bmp.c'],['../bmp_8h.html#a866d4063788055b00820d13ad0059c08',1,'bmp_open_path(const char *path, const char *file, gimp_bitmap_t **bitmap): bmp.c']]], + ['buffer',['buffer',['../structframe__buffer.html#a4a758afb19d7c8d39ab8c6a85340ad2f',1,'frame_buffer']]], + ['buffer_5fsize',['buffer_size',['../structframe__buffer.html#a4236734c858183aeabad4757e5bb8f6b',1,'frame_buffer']]], + ['bytes_5fper_5fpixel',['bytes_per_pixel',['../structgimp__bitmap__t.html#aeaa419d34acb373c53381fcb63a4393f',1,'gimp_bitmap_t']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_3.html b/stage2/03-install-piaizu/files/fb/docs/html/search/all_3.html new file mode 100644 index 0000000..9f526c6 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_3.js b/stage2/03-install-piaizu/files/fb/docs/html/search/all_3.js new file mode 100644 index 0000000..679c42f --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_3.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['c',['c',['../structcontainers__t.html#a2df26961e28840e62f03b0c9be470a5b',1,'containers_t']]], + ['cb',['cb',['../structfwatch__client__t.html#aaf2058ea1b2e1c302f3d005ed7b8bc07',1,'fwatch_client_t::cb()'],['../structkey__press__event__t.html#a7087512eb1b5bf16ce0aa29eb5406464',1,'key_press_event_t::cb()']]], + ['character',['character',['../structfont__character__t.html#aba6941cad88d51dd7f343173e2491b44',1,'font_character_t']]], + ['clients',['clients',['../structfwatch__t.html#aad584654423c11412c137cc6764540c6',1,'fwatch_t']]], + ['compression',['compression',['../structbmp__header__t.html#a9e5884647d8d3bd37f2f2cb37b74f8ce',1,'bmp_header_t']]], + ['container',['container',['../structsocket__datagram__header__t.html#afbcf59d680b48498ac82b13ad658cdde',1,'socket_datagram_header_t']]], + ['container_2ec',['container.c',['../container_8c.html',1,'']]], + ['container_2eh',['container.h',['../container_8h.html',1,'']]], + ['container_5farray',['CONTAINER_ARRAY',['../define__containers_8h.html#a15fe0688335d918632aaa055c8653cee',1,'define_containers.h']]], + ['container_5fbitmap_5fat_5fxy',['container_bitmap_at_xy',['../container_8c.html#a4293d6a88aaee4b3a3975c77b8bbc124',1,'container_bitmap_at_xy(unsigned int container, int x, int y, gimp_bitmap_t *bm, bool transparent): container.c'],['../container_8h.html#a4293d6a88aaee4b3a3975c77b8bbc124',1,'container_bitmap_at_xy(unsigned int container, int x, int y, gimp_bitmap_t *bm, bool transparent): container.c']]], + ['container_5fclose',['container_close',['../container_8c.html#a34b18ff42f14b31ed2cf2863e785ed97',1,'container_close(): container.c'],['../container_8h.html#a34b18ff42f14b31ed2cf2863e785ed97',1,'container_close(): container.c']]], + ['container_5fcompile',['container_compile',['../container_8c.html#a1f44a225b43ddd4356ffc184bc66b6e2',1,'container_compile(): container.c'],['../container_8h.html#a1f44a225b43ddd4356ffc184bc66b6e2',1,'container_compile(): container.c']]], + ['container_5fdefine',['CONTAINER_DEFINE',['../define__containers_8h.html#ae1d1fd3b33d349b1483d48c95af76c86',1,'define_containers.h']]], + ['container_5fdraw_5fline',['container_draw_line',['../container_8c.html#a8cc0e24ac54388d6d234fed12847fd63',1,'container_draw_line(unsigned int container, unsigned int from_x, unsigned int from_y, unsigned int to_x, unsigned int to_y): container.c'],['../container_8h.html#a8cc0e24ac54388d6d234fed12847fd63',1,'container_draw_line(unsigned int container, unsigned int from_x, unsigned int from_y, unsigned int to_x, unsigned int to_y): container.c']]], + ['container_5ffill_5fbitmap',['container_fill_bitmap',['../container_8c.html#aafbadfbbeb4e49b5a3462d604594d682',1,'container_fill_bitmap(unsigned int container, gimp_bitmap_t *bm, bool transparent): container.c'],['../container_8h.html#aafbadfbbeb4e49b5a3462d604594d682',1,'container_fill_bitmap(unsigned int container, gimp_bitmap_t *bm, bool transparent): container.c']]], + ['container_5fget',['container_get',['../container_8c.html#ad22ccb4b0b0ef32226ade3db74f7aa2b',1,'container_get(int container): container.c'],['../container_8h.html#ab1dce72829611df6ead098c0cd19c391',1,'container_get(int container): container.c']]], + ['container_5fget_5fn',['container_get_n',['../container_8c.html#a47a34fad8fbdc9e9b2860cdffd27f6db',1,'container_get_n(void): container.c'],['../container_8h.html#a47a34fad8fbdc9e9b2860cdffd27f6db',1,'container_get_n(void): container.c']]], + ['container_5fhandle_5fe',['container_handle_e',['../define__containers_8h.html#a354e2962e23cb44197a9013e0ede85d5',1,'define_containers.h']]], + ['container_5fhandle_5fenum',['CONTAINER_HANDLE_ENUM',['../define__containers_8h.html#a7fb111704a02359a42fe360c36f1f7f5',1,'define_containers.h']]], + ['container_5fhandle_5fstr',['CONTAINER_HANDLE_STR',['../define__containers_8h.html#a89ad2b41b8ca4e3745d9d08b0c2177d7',1,'define_containers.h']]], + ['container_5finfo_5ft',['container_info_t',['../structcontainer__info__t.html',1,'']]], + ['container_5fmove',['container_move',['../container_8c.html#aa5f96f030a324b8f61fcdfb7aae14306',1,'container_move(unsigned int container, int delta_x, int delta_y): container.c'],['../container_8h.html#aa5f96f030a324b8f61fcdfb7aae14306',1,'container_move(unsigned int container, int delta_x, int delta_y): container.c']]], + ['container_5fnew',['container_new',['../container_8c.html#a744f004610e0afbb44f3dd05743cea16',1,'container_new(containers_t *containers): container.c'],['../container_8h.html#a744f004610e0afbb44f3dd05743cea16',1,'container_new(containers_t *containers): container.c']]], + ['container_5freset',['container_reset',['../container_8c.html#a38e5aed314dcb5b84228ef4889ead292',1,'container_reset(unsigned int container): container.c'],['../container_8h.html#a38e5aed314dcb5b84228ef4889ead292',1,'container_reset(unsigned int container): container.c']]], + ['container_5ft',['container_t',['../structcontainer__t.html',1,'']]], + ['container_5fvalid',['container_valid',['../container_8c.html#abc054f35bf0ad9a78aa7e180691da095',1,'container.c']]], + ['container_5fvisible',['container_visible',['../container_8c.html#aca08f5445082218d15d1789879b8752a',1,'container_visible(unsigned int container, bool visible): container.c'],['../container_8h.html#aca08f5445082218d15d1789879b8752a',1,'container_visible(unsigned int container, bool visible): container.c']]], + ['containers',['containers',['../structsocket__datagram__lmx__info__t.html#a69fbe939f97ba7bd6289c873ba9c1ac6',1,'socket_datagram_lmx_info_t']]], + ['containers_5ft',['containers_t',['../structcontainers__t.html',1,'']]], + ['coord',['coord',['../structsocket__datagram__lmx__coordinate__t.html#a6fd0fe21d7fb8bb9d8ed88e59af14d6c',1,'socket_datagram_lmx_coordinate_t']]], + ['coordinate_5ft',['coordinate_t',['../structcoordinate__t.html',1,'']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_4.html b/stage2/03-install-piaizu/files/fb/docs/html/search/all_4.html new file mode 100644 index 0000000..7b814aa --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_4.js b/stage2/03-install-piaizu/files/fb/docs/html/search/all_4.js new file mode 100644 index 0000000..66cab3a --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_4.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['data',['data',['../structcontainer__t.html#a914bee105b6a3e9d0910afb5c15cee90',1,'container_t']]], + ['data_5foffset',['data_offset',['../structbmp__header__t.html#a5d2584a7c0bc3cc0670062b4eb6438c6',1,'bmp_header_t']]], + ['datagram_5fsize',['DATAGRAM_SIZE',['../lmxsocket_8h.html#aad21eecef5c8ad4215d7eab8d0d0abd9',1,'lmxsocket.h']]], + ['define_5fcontainers_2eh',['define_containers.h',['../define__containers_8h.html',1,'']]], + ['description',['description',['../structcontainer__t.html#a342a4ee9fcdb7a78395037aa6118925a',1,'container_t::description()'],['../structcontainer__info__t.html#abfb73cb6bd1a190467c43954806d73f8',1,'container_info_t::description()']]], + ['description_5flenght',['DESCRIPTION_LENGHT',['../lmxsocket_8h.html#a02e9d4115ecbca62fac8e7de381d2125',1,'lmxsocket.h']]], + ['destroy_5fframe_5fbuffer',['destroy_frame_buffer',['../framebuffer_8c.html#a21f951a0f716a5d75c31468588b70d06',1,'destroy_frame_buffer(): framebuffer.c'],['../framebuffer_8h.html#a21f951a0f716a5d75c31468588b70d06',1,'destroy_frame_buffer(): framebuffer.c']]], + ['documentation_2etxt',['documentation.txt',['../documentation_8txt.html',1,'']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_5.html b/stage2/03-install-piaizu/files/fb/docs/html/search/all_5.html new file mode 100644 index 0000000..d8de556 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_5.js b/stage2/03-install-piaizu/files/fb/docs/html/search/all_5.js new file mode 100644 index 0000000..91127b6 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_5.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['event_5ffile',['EVENT_FILE',['../keys_8c.html#aa2532a4f186824136b91f59a28c6e22b',1,'keys.c']]], + ['event_5fkey_5fhandle_5fe',['event_key_handle_e',['../main_8c.html#a2f529a1100a1ad7c50486cebd796b37b',1,'main.c']]], + ['event_5fleft_5fpress_5flong',['EVENT_LEFT_PRESS_LONG',['../main_8c.html#a2f529a1100a1ad7c50486cebd796b37ba5e8e73a2fb11ae47b48954aa6136682b',1,'main.c']]], + ['event_5fleft_5fpress_5fshort',['EVENT_LEFT_PRESS_SHORT',['../main_8c.html#a2f529a1100a1ad7c50486cebd796b37baab6fa24218ec996a68c97b667264e1f4',1,'main.c']]], + ['event_5fn',['EVENT_N',['../main_8c.html#a2f529a1100a1ad7c50486cebd796b37ba7be496f4b0f98d4253cf2ecf1a6da9d3',1,'main.c']]], + ['event_5fright_5fpress_5flong',['EVENT_RIGHT_PRESS_LONG',['../main_8c.html#a2f529a1100a1ad7c50486cebd796b37ba6ce6539034179d10c5e9b6cbaf9abc1d',1,'main.c']]], + ['event_5fright_5fpress_5fshort',['EVENT_RIGHT_PRESS_SHORT',['../main_8c.html#a2f529a1100a1ad7c50486cebd796b37ba7ad46440c086e01b0dfa464ca67e8661',1,'main.c']]], + ['event_5ftext_5fsize',['EVENT_TEXT_SIZE',['../main_8c.html#aa96cae48a068f6d727ec70f82eafc0b0',1,'main.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_6.html b/stage2/03-install-piaizu/files/fb/docs/html/search/all_6.html new file mode 100644 index 0000000..9ba0cc2 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_6.js b/stage2/03-install-piaizu/files/fb/docs/html/search/all_6.js new file mode 100644 index 0000000..9e447dc --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_6.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['fd',['fd',['../structfwatch__client__t.html#ac39ab2a370564b8e2158fe6d86dc21f4',1,'fwatch_client_t']]], + ['file_5fdescriptor',['file_descriptor',['../structframe__buffer.html#aa98bc0af2c02af8185b15a6b3d6b638a',1,'frame_buffer']]], + ['filesize',['filesize',['../structbmp__header__t.html#a0ac493084a0fdf620a79fa6c11892ea7',1,'bmp_header_t']]], + ['fixed_5finfo',['fixed_info',['../structframe__buffer.html#a69e6d92e1c13f76c92102946ec022406',1,'frame_buffer']]], + ['font',['font',['../structfont__character__t.html#a559fc4e9efa9f7ed71447a58965d894e',1,'font_character_t']]], + ['font_5fcharacter_5ft',['font_character_t',['../structfont__character__t.html',1,'']]], + ['for_5feach_5fweb_5frequest_5fstr',['FOR_EACH_WEB_REQUEST_STR',['../lmxjson_8c.html#a2d068c1ff29dc84c6d441731aed4a224',1,'lmxjson.c']]], + ['for_5feach_5fwebrequest_5fenum',['FOR_EACH_WEBREQUEST_ENUM',['../lmxsocket_8h.html#ab9e023185b0ed2389f00359f94f2e686',1,'lmxsocket.h']]], + ['frame',['frame',['../structcontainer__t.html#a00651855b92ac7eea6cc0558c646713a',1,'container_t::frame()'],['../structcontainer__info__t.html#ae3dbd50c7e635a2f0591b08a137346c4',1,'container_info_t::frame()'],['../define__containers_8h.html#a7062c0eec0a974699c8658097e3d3e9d',1,'FRAME(): define_containers.h']]], + ['frame_5fbuffer',['frame_buffer',['../structframe__buffer.html',1,'']]], + ['framebuffer_2ec',['framebuffer.c',['../framebuffer_8c.html',1,'']]], + ['framebuffer_2eh',['framebuffer.h',['../framebuffer_8h.html',1,'']]], + ['framebuffer_5fupdate',['framebuffer_update',['../framebuffer_8c.html#ad40ec39dd2c7a1362b24453da7b955c9',1,'framebuffer_update(void *mem): framebuffer.c'],['../framebuffer_8h.html#ad40ec39dd2c7a1362b24453da7b955c9',1,'framebuffer_update(void *mem): framebuffer.c']]], + ['frames_5fvisible',['FRAMES_VISIBLE',['../container_8c.html#aad158c29e08aeb55580406fa0efdbfbd',1,'FRAMES_VISIBLE(): container.c'],['../define__containers_8h.html#aad158c29e08aeb55580406fa0efdbfbd',1,'FRAMES_VISIBLE(): define_containers.h']]], + ['framesize_5fmem',['framesize_mem',['../structcontainer__t.html#a8647652c5768fe052ce672eedbcf32b9',1,'container_t::framesize_mem()'],['../structcontainer__info__t.html#ad62c9074277fd5ae12fcb927f4897288',1,'container_info_t::framesize_mem()']]], + ['fwatch_2ec',['fwatch.c',['../fwatch_8c.html',1,'']]], + ['fwatch_2eh',['fwatch.h',['../fwatch_8h.html',1,'']]], + ['fwatch_5fadd',['fwatch_add',['../fwatch_8c.html#ac306d4fe403cd34ca791825f2f4a031f',1,'fwatch_add(fwatch_cb_f cb, int fd, char *fname): fwatch.c'],['../fwatch_8h.html#ac306d4fe403cd34ca791825f2f4a031f',1,'fwatch_add(fwatch_cb_f cb, int fd, char *fname): fwatch.c']]], + ['fwatch_5fcb_5ff',['fwatch_cb_f',['../fwatch_8h.html#adc207692eccbe66157caf12f69465f4d',1,'fwatch.h']]], + ['fwatch_5fclient_5ft',['fwatch_client_t',['../structfwatch__client__t.html',1,'']]], + ['fwatch_5fclients_5fmax',['FWATCH_CLIENTS_MAX',['../fwatch_8c.html#a8ab1f8b985fa2397695165f2ff7982d5',1,'fwatch.c']]], + ['fwatch_5fdo',['fwatch_do',['../fwatch_8c.html#a396353d3bfc79e0589141b0f623654b4',1,'fwatch_do(int us): fwatch.c'],['../fwatch_8h.html#a396353d3bfc79e0589141b0f623654b4',1,'fwatch_do(int us): fwatch.c']]], + ['fwatch_5fstart',['fwatch_start',['../fwatch_8c.html#a1790dbc376c1519df52065d1f5482854',1,'fwatch_start(): fwatch.c'],['../fwatch_8h.html#a1790dbc376c1519df52065d1f5482854',1,'fwatch_start(): fwatch.c']]], + ['fwatch_5ft',['fwatch_t',['../structfwatch__t.html',1,'']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_7.html b/stage2/03-install-piaizu/files/fb/docs/html/search/all_7.html new file mode 100644 index 0000000..9384ec9 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_7.js b/stage2/03-install-piaizu/files/fb/docs/html/search/all_7.js new file mode 100644 index 0000000..6aa8c2a --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['gimp_5fbitmap_5ft',['gimp_bitmap_t',['../structgimp__bitmap__t.html',1,'']]], + ['gray_5fscale',['GRAY_SCALE',['../bmp_8c.html#a09a0117bd95a07e61228e1bd30e001a3',1,'bmp.c']]], + ['green',['GREEN',['../container_8c.html#acfbc006ea433ad708fdee3e82996e721',1,'container.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_8.html b/stage2/03-install-piaizu/files/fb/docs/html/search/all_8.html new file mode 100644 index 0000000..37566c5 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_8.js b/stage2/03-install-piaizu/files/fb/docs/html/search/all_8.js new file mode 100644 index 0000000..16dd630 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_8.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['handle',['handle',['../structcontainer__t.html#a959c54d525acae38b7c8fdedd3f71d73',1,'container_t::handle()'],['../structkey__press__event__t.html#a2b948a37090366d7b0833b0b1c14fc38',1,'key_press_event_t::handle()']]], + ['handle_5frequest_5fget',['handle_request_get',['../lmxjson_8c.html#a6536f282f71fb734c0332788de3eade0',1,'lmxjson.c']]], + ['handle_5frequest_5fpost',['handle_request_post',['../lmxjson_8c.html#ae2aa88221ea8ddbd596cec765429bd47',1,'lmxjson.c']]], + ['header',['header',['../structsocket__datagram__lmx__coordinate__t.html#ae3db6d27096f31d1c34fe156f532200d',1,'socket_datagram_lmx_coordinate_t::header()'],['../structsocket__datagram__lmx__move__t.html#aeaa0755956fb5bd09a18b19f03cda685',1,'socket_datagram_lmx_move_t::header()'],['../structsocket__datagram__lmx__text__t.html#aad81c43f54858e3d63ef763a339fd8e4',1,'socket_datagram_lmx_text_t::header()'],['../structsocket__datagram__lmx__info__t.html#a7affdfe5653bace80a1e4453bc7537db',1,'socket_datagram_lmx_info_t::header()']]], + ['header_5fsize',['header_size',['../structbmp__header__t.html#aeb398c15a82e333f11496dfd6b9f4c92',1,'bmp_header_t']]], + ['height',['height',['../structbmp__header__t.html#a6cad50f0cb95db0248af3a6bc9f95b6e',1,'bmp_header_t::height()'],['../structcontainer__t.html#a32496ae57dd9e39e810c8039aa85732a',1,'container_t::height()'],['../structgimp__bitmap__t.html#a73cce8d827839dd84cc33219d2c7a3e6',1,'gimp_bitmap_t::height()'],['../structframe__buffer.html#a0972a7ceb6ee6bf655a9c50e01aab6da',1,'frame_buffer::height()'],['../structfont__character__t.html#aa196e439501895029ba1c53636a00554',1,'font_character_t::height()'],['../structcontainer__info__t.html#a3d11c78eb308964beb296edbd2e68d49',1,'container_info_t::height()']]], + ['html_5fcomment',['HTML_COMMENT',['../lmxjson_8c.html#a909183b2eae1638afd71a364d7f0fda6',1,'lmxjson.c']]], + ['html_5fcomment_5fend',['HTML_COMMENT_END',['../lmxjson_8c.html#a98c5a5572472d27db6b4aed8b195776e',1,'lmxjson.c']]], + ['html_5fpre',['HTML_PRE',['../lmxjson_8c.html#aeb4351c9b4289c39e9cd0255867242da',1,'lmxjson.c']]], + ['html_5fpre_5fend',['HTML_PRE_END',['../lmxjson_8c.html#a794fd6a355435cb45568fb65591b47a0',1,'lmxjson.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_9.html b/stage2/03-install-piaizu/files/fb/docs/html/search/all_9.html new file mode 100644 index 0000000..c8c5102 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_9.js b/stage2/03-install-piaizu/files/fb/docs/html/search/all_9.js new file mode 100644 index 0000000..0c7ecf6 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['img_5fsize_5fbytes',['img_size_bytes',['../structbmp__header__t.html#a21c4b001c5630a131618d1e2bd63e12b',1,'bmp_header_t']]], + ['intshutdown',['intShutdown',['../main_8c.html#a674eb6cd8a26bbc00d70b74a65605877',1,'main.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_a.html b/stage2/03-install-piaizu/files/fb/docs/html/search/all_a.html new file mode 100644 index 0000000..4cb31f0 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_a.js b/stage2/03-install-piaizu/files/fb/docs/html/search/all_a.js new file mode 100644 index 0000000..d3251f5 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_a.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['key',['key',['../structkey__action__t.html#a49952147e37371755211376d109ed68c',1,'key_action_t::key()'],['../structkey__press__event__t.html#aa85af3aa911eb62b8d04f67def041bec',1,'key_press_event_t::key()']]], + ['key_5faction_5ft',['key_action_t',['../structkey__action__t.html',1,'']]], + ['key_5fchar_5fleft',['KEY_CHAR_LEFT',['../keys_8h.html#addd66edca463e37a3728efa21eb0967cab8a1df682e2d0a5282a3bc2aaa5343e7',1,'keys.h']]], + ['key_5fchar_5fright',['KEY_CHAR_RIGHT',['../keys_8h.html#addd66edca463e37a3728efa21eb0967ca4f66b0186ee3297bf4cec7fbc8bce39a',1,'keys.h']]], + ['key_5fe',['key_e',['../keys_8h.html#addd66edca463e37a3728efa21eb0967c',1,'keys.h']]], + ['key_5fpress_5fcallback',['key_press_callback',['../main_8c.html#a5f2e5df8533a2910763da4132f7b60bf',1,'main.c']]], + ['key_5fpress_5fevent_5ft',['key_press_event_t',['../structkey__press__event__t.html',1,'']]], + ['key_5fpress_5ff',['key_press_f',['../keys_8h.html#ac7fb011a894bbe4eb7c98335226199f3',1,'keys.h']]], + ['key_5ftime_5fdown',['key_time_down',['../keys_8c.html#a611b629c512aab4b85ff9c24a652c63a',1,'keys.c']]], + ['keys_2ec',['keys.c',['../keys_8c.html',1,'']]], + ['keys_2eh',['keys.h',['../keys_8h.html',1,'']]], + ['keys_5fclose',['keys_close',['../keys_8h.html#a504f53b9e379e53d13acfc52e62ac5f4',1,'keys.h']]], + ['keys_5ffile_5fwatch_5fcallback',['keys_file_watch_callback',['../keys_8c.html#a9f2c5250941159efb47013f9fe7dda45',1,'keys.c']]], + ['keys_5fregister_5fcb',['keys_register_cb',['../keys_8c.html#a3d3d1b2fb60401b9a059248f52ca8e9b',1,'keys_register_cb(key_press_f cb, key_e key, double time, int handle): keys.c'],['../keys_8h.html#a3d3d1b2fb60401b9a059248f52ca8e9b',1,'keys_register_cb(key_press_f cb, key_e key, double time, int handle): keys.c']]], + ['keys_5fsort_5fregistered_5fcallbacks',['keys_sort_registered_callbacks',['../keys_8c.html#ab4b0bf52caaeaacfec66607f34fd0783',1,'keys.c']]], + ['keys_5fstart',['keys_start',['../keys_8c.html#a47be8bc596020849db6d45df05c1dfba',1,'keys_start(): keys.c'],['../keys_8h.html#a47be8bc596020849db6d45df05c1dfba',1,'keys_start(): keys.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_b.html b/stage2/03-install-piaizu/files/fb/docs/html/search/all_b.html new file mode 100644 index 0000000..d34a612 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_b.js b/stage2/03-install-piaizu/files/fb/docs/html/search/all_b.js new file mode 100644 index 0000000..6d00e7c --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_b.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['linelength',['linelength',['../structframe__buffer.html#aabfa500e4bf5da00a8fc443e984385eb',1,'frame_buffer']]], + ['lmx_5fh',['LMX_H',['../container_8h.html#a32eb74376930d527a3ca66cd199890bd',1,'container.h']]], + ['lmx_5fpixel_5fheight',['LMX_PIXEL_HEIGHT',['../container_8h.html#a9ae062eeb4ad92b085e787fd2f539853',1,'container.h']]], + ['lmx_5fpixel_5fwidth',['LMX_PIXEL_WIDTH',['../container_8h.html#a5d3d2593b204b4e5b5cbea5edf2a38a6',1,'container.h']]], + ['lmx_5fw',['LMX_W',['../container_8h.html#a712af9d094d3e21b85ecdc794d5c20f5',1,'container.h']]], + ['lmxjson_2ec',['lmxjson.c',['../lmxjson_8c.html',1,'']]], + ['lmxsocket_2eh',['lmxsocket.h',['../lmxsocket_8h.html',1,'']]], + ['log',['LOG',['../log_8h.html#a23e86ba0a2b90581f552cc3d0692be21',1,'log.h']]], + ['log_2eh',['log.h',['../log_8h.html',1,'']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_c.html b/stage2/03-install-piaizu/files/fb/docs/html/search/all_c.html new file mode 100644 index 0000000..c1ae2ca --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_c.js b/stage2/03-install-piaizu/files/fb/docs/html/search/all_c.js new file mode 100644 index 0000000..8c3882d --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_c.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['main',['main',['../main_8c.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main(): main.c'],['../lmxjson_8c.html#a840291bc02cba5474a4cb46a9b9566fe',1,'main(void): lmxjson.c']]], + ['main_2ec',['main.c',['../main_8c.html',1,'']]], + ['max',['max',['../fwatch_8c.html#affe776513b24d84b39af8ab0930fef7f',1,'fwatch.c']]], + ['maxfd',['maxfd',['../structfwatch__t.html#ad404f91f44e504c3ab57710ee952159e',1,'fwatch_t']]], + ['move',['move',['../structsocket__datagram__lmx__move__t.html#a9c4c749ddf22aec99c09bb65a96ef578',1,'socket_datagram_lmx_move_t']]], + ['move_5fclear',['MOVE_CLEAR',['../lmxsocket_8h.html#a40090aa4ce0eccc6b13f1a6155c6d34ca0feb673f2c0f9320114eb5e145f9643a',1,'lmxsocket.h']]], + ['move_5fdown',['MOVE_DOWN',['../lmxsocket_8h.html#a40090aa4ce0eccc6b13f1a6155c6d34cac306ffa7a0ee9849d5c7cb1dc9654e96',1,'lmxsocket.h']]], + ['move_5fdown_5fleft',['MOVE_DOWN_LEFT',['../lmxsocket_8h.html#a40090aa4ce0eccc6b13f1a6155c6d34ca2fa8da2a59cb0b185b2bba5eae4355dd',1,'lmxsocket.h']]], + ['move_5fdown_5fright',['MOVE_DOWN_RIGHT',['../lmxsocket_8h.html#a40090aa4ce0eccc6b13f1a6155c6d34caa0da783fbea638f455846bf904873589',1,'lmxsocket.h']]], + ['move_5fleft',['MOVE_LEFT',['../lmxsocket_8h.html#a40090aa4ce0eccc6b13f1a6155c6d34cae890746014b644c289999b83d5287c11',1,'lmxsocket.h']]], + ['move_5fright',['MOVE_RIGHT',['../lmxsocket_8h.html#a40090aa4ce0eccc6b13f1a6155c6d34ca05e150c88137543939f82e607e3a77e3',1,'lmxsocket.h']]], + ['move_5fup',['MOVE_UP',['../lmxsocket_8h.html#a40090aa4ce0eccc6b13f1a6155c6d34cad1c2df17d4a2cdc3b734e4554ebbced6',1,'lmxsocket.h']]], + ['move_5fup_5fleft',['MOVE_UP_LEFT',['../lmxsocket_8h.html#a40090aa4ce0eccc6b13f1a6155c6d34ca8c123a43a87bc00c197329afe27f0031',1,'lmxsocket.h']]], + ['move_5fup_5fright',['MOVE_UP_RIGHT',['../lmxsocket_8h.html#a40090aa4ce0eccc6b13f1a6155c6d34caf3e1c73e08cb94413e5804c13a7b56ae',1,'lmxsocket.h']]], + ['movment_5fe',['movment_e',['../lmxsocket_8h.html#a40090aa4ce0eccc6b13f1a6155c6d34c',1,'lmxsocket.h']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_d.html b/stage2/03-install-piaizu/files/fb/docs/html/search/all_d.html new file mode 100644 index 0000000..712223c --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_d.js b/stage2/03-install-piaizu/files/fb/docs/html/search/all_d.js new file mode 100644 index 0000000..40eae08 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_d.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['n',['n',['../structcontainers__t.html#ac36922501ee1230ed68680e5f1476b21',1,'containers_t']]], + ['n_5fbuttons',['N_BUTTONS',['../keys_8c.html#a271dda243b0f5bd7d2053d258eb71962',1,'keys.c']]], + ['n_5fcolors',['n_colors',['../structbmp__header__t.html#ab53c0642fd5b9fe854f88bf4f5be64d0',1,'bmp_header_t']]], + ['n_5fcontainers',['n_containers',['../structsocket__datagram__lmx__info__t.html#a90c667a7d12e18262e0c3ce8d22f9f10',1,'socket_datagram_lmx_info_t::n_containers()'],['../define__containers_8h.html#a354e2962e23cb44197a9013e0ede85d5ad89ddd0453b81e1d59e048726a059949',1,'N_CONTAINERS(): define_containers.h']]], + ['n_5fimportant_5fcolors',['n_important_colors',['../structbmp__header__t.html#a4364880be164aea309daba74f47464a1',1,'bmp_header_t']]], + ['n_5fkey_5fpress_5fcallbacks',['N_KEY_PRESS_CALLBACKS',['../keys_8c.html#aa945195906c215172e6aa00bd1d36f19',1,'keys.c']]], + ['n_5fregistered',['n_registered',['../structfwatch__t.html#a52c3e0b276766bc3398c1f2a1ad1c49e',1,'fwatch_t']]], + ['new_5fframe_5fbuffer',['new_frame_buffer',['../framebuffer_8c.html#a9350cf3a23da4ec1aeee3f7bf279c54b',1,'new_frame_buffer(): framebuffer.c'],['../framebuffer_8h.html#a9350cf3a23da4ec1aeee3f7bf279c54b',1,'new_frame_buffer(): framebuffer.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_e.html b/stage2/03-install-piaizu/files/fb/docs/html/search/all_e.html new file mode 100644 index 0000000..d553ffa --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_e.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_e.js b/stage2/03-install-piaizu/files/fb/docs/html/search/all_e.js new file mode 100644 index 0000000..d3ff326 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_e.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['offset_5fcol',['offset_col',['../structfont__character__t.html#ab6be791ac2612bfb97fb46a3dc45d6dc',1,'font_character_t']]], + ['offset_5flowercase',['OFFSET_LOWERCASE',['../text_8c.html#a76645f773315d40c0e394a4946c92c93',1,'text.c']]], + ['offset_5fnumbers',['OFFSET_NUMBERS',['../text_8c.html#a24c20b1b223e4ab1481a13085fb68c63',1,'text.c']]], + ['offset_5frow',['offset_row',['../structfont__character__t.html#a235302c9e5108ae9680d2976f664c325',1,'font_character_t']]], + ['offset_5fspecial',['OFFSET_SPECIAL',['../text_8c.html#ad7e4aa73261a4e3e8e00ca37e90a15ae',1,'text.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_f.html b/stage2/03-install-piaizu/files/fb/docs/html/search/all_f.html new file mode 100644 index 0000000..c77391a --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/all_f.js b/stage2/03-install-piaizu/files/fb/docs/html/search/all_f.js new file mode 100644 index 0000000..5f51a36 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/all_f.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['piaizu_20webserver',['PiAIZU webserver',['../index.html',1,'']]], + ['padding',['padding',['../structcontainer__t.html#a475bff7f994d1b11346434406ee9698b',1,'container_t::padding()'],['../structframe__buffer.html#a931e563e396d5dcb628cd63350dce29a',1,'frame_buffer::padding()']]], + ['pixel_5fdata',['pixel_data',['../structgimp__bitmap__t.html#a658a59a49fde102387788ac759790609',1,'gimp_bitmap_t']]], + ['planes',['planes',['../structbmp__header__t.html#a99795c81232a5c8c0bb0d1724092ef7b',1,'bmp_header_t']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/classes_0.html b/stage2/03-install-piaizu/files/fb/docs/html/search/classes_0.html new file mode 100644 index 0000000..025587a --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/classes_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/classes_0.js b/stage2/03-install-piaizu/files/fb/docs/html/search/classes_0.js new file mode 100644 index 0000000..d516092 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bmp_5fheader_5ft',['bmp_header_t',['../structbmp__header__t.html',1,'']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/classes_1.html b/stage2/03-install-piaizu/files/fb/docs/html/search/classes_1.html new file mode 100644 index 0000000..86dc4ff --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/classes_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/classes_1.js b/stage2/03-install-piaizu/files/fb/docs/html/search/classes_1.js new file mode 100644 index 0000000..bbd7fa4 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/classes_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['container_5finfo_5ft',['container_info_t',['../structcontainer__info__t.html',1,'']]], + ['container_5ft',['container_t',['../structcontainer__t.html',1,'']]], + ['containers_5ft',['containers_t',['../structcontainers__t.html',1,'']]], + ['coordinate_5ft',['coordinate_t',['../structcoordinate__t.html',1,'']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/classes_2.html b/stage2/03-install-piaizu/files/fb/docs/html/search/classes_2.html new file mode 100644 index 0000000..014caf8 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/classes_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/classes_2.js b/stage2/03-install-piaizu/files/fb/docs/html/search/classes_2.js new file mode 100644 index 0000000..33da521 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/classes_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['font_5fcharacter_5ft',['font_character_t',['../structfont__character__t.html',1,'']]], + ['frame_5fbuffer',['frame_buffer',['../structframe__buffer.html',1,'']]], + ['fwatch_5fclient_5ft',['fwatch_client_t',['../structfwatch__client__t.html',1,'']]], + ['fwatch_5ft',['fwatch_t',['../structfwatch__t.html',1,'']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/classes_3.html b/stage2/03-install-piaizu/files/fb/docs/html/search/classes_3.html new file mode 100644 index 0000000..2e97201 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/classes_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/classes_3.js b/stage2/03-install-piaizu/files/fb/docs/html/search/classes_3.js new file mode 100644 index 0000000..442a10d --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['gimp_5fbitmap_5ft',['gimp_bitmap_t',['../structgimp__bitmap__t.html',1,'']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/classes_4.html b/stage2/03-install-piaizu/files/fb/docs/html/search/classes_4.html new file mode 100644 index 0000000..776fee3 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/classes_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/classes_4.js b/stage2/03-install-piaizu/files/fb/docs/html/search/classes_4.js new file mode 100644 index 0000000..ad62260 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/classes_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['key_5faction_5ft',['key_action_t',['../structkey__action__t.html',1,'']]], + ['key_5fpress_5fevent_5ft',['key_press_event_t',['../structkey__press__event__t.html',1,'']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/classes_5.html b/stage2/03-install-piaizu/files/fb/docs/html/search/classes_5.html new file mode 100644 index 0000000..69bbcc8 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/classes_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/classes_5.js b/stage2/03-install-piaizu/files/fb/docs/html/search/classes_5.js new file mode 100644 index 0000000..5944175 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/classes_5.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['socket_5fdatagram_5fheader_5ft',['socket_datagram_header_t',['../structsocket__datagram__header__t.html',1,'']]], + ['socket_5fdatagram_5flmx_5fcoordinate_5ft',['socket_datagram_lmx_coordinate_t',['../structsocket__datagram__lmx__coordinate__t.html',1,'']]], + ['socket_5fdatagram_5flmx_5finfo_5ft',['socket_datagram_lmx_info_t',['../structsocket__datagram__lmx__info__t.html',1,'']]], + ['socket_5fdatagram_5flmx_5fmove_5ft',['socket_datagram_lmx_move_t',['../structsocket__datagram__lmx__move__t.html',1,'']]], + ['socket_5fdatagram_5flmx_5ftext_5ft',['socket_datagram_lmx_text_t',['../structsocket__datagram__lmx__text__t.html',1,'']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/close.png b/stage2/03-install-piaizu/files/fb/docs/html/search/close.png new file mode 100644 index 0000000..9342d3d Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/search/close.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_0.html b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_0.html new file mode 100644 index 0000000..17cfaa2 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_0.js b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_0.js new file mode 100644 index 0000000..dcb9811 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_5f_5ffilename_5f_5f',['__FILENAME__',['../log_8h.html#a5fccb4fc71e44089a1b1a77fc76c0b68',1,'log.h']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_1.html b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_1.html new file mode 100644 index 0000000..5c0025e --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_1.js b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_1.js new file mode 100644 index 0000000..e749b4d --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['alpha',['ALPHA',['../container_8c.html#af5abd28c44c29b7397c84f1fec4b1d84',1,'container.c']]], + ['ap_5fanim_5fevery_5fframe',['AP_ANIM_EVERY_FRAME',['../main_8c.html#a964b765595375d21a5ddf317666b52d7',1,'main.c']]], + ['array_5fsize',['ARRAY_SIZE',['../lmxjson_8c.html#a6242a25f9d996f0cc4f4cdb911218b75',1,'lmxjson.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_10.html b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_10.html new file mode 100644 index 0000000..26f83fa --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_10.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_10.js b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_10.js new file mode 100644 index 0000000..9dc9e37 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_10.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['wait_5ftimeout_5fs',['WAIT_TIMEOUT_S',['../keys_8c.html#ab8ba58644f9627d46b7cbb7134863b66',1,'keys.c']]], + ['webrequest',['WEBREQUEST',['../lmxsocket_8h.html#adc0148621a4198473edf3a2075f288f4',1,'lmxsocket.h']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_2.html b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_2.html new file mode 100644 index 0000000..a206bfc --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_2.js b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_2.js new file mode 100644 index 0000000..b70bc9f --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['blue',['BLUE',['../container_8c.html#a79d10e672abb49ad63eeaa8aaef57c38',1,'container.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_3.html b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_3.html new file mode 100644 index 0000000..3826e1f --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_3.js b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_3.js new file mode 100644 index 0000000..545e077 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_3.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['container_5farray',['CONTAINER_ARRAY',['../define__containers_8h.html#a15fe0688335d918632aaa055c8653cee',1,'define_containers.h']]], + ['container_5fdefine',['CONTAINER_DEFINE',['../define__containers_8h.html#ae1d1fd3b33d349b1483d48c95af76c86',1,'define_containers.h']]], + ['container_5fhandle_5fenum',['CONTAINER_HANDLE_ENUM',['../define__containers_8h.html#a7fb111704a02359a42fe360c36f1f7f5',1,'define_containers.h']]], + ['container_5fhandle_5fstr',['CONTAINER_HANDLE_STR',['../define__containers_8h.html#a89ad2b41b8ca4e3745d9d08b0c2177d7',1,'define_containers.h']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_4.html b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_4.html new file mode 100644 index 0000000..c6864f7 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_4.js b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_4.js new file mode 100644 index 0000000..d0ffc9f --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['datagram_5fsize',['DATAGRAM_SIZE',['../lmxsocket_8h.html#aad21eecef5c8ad4215d7eab8d0d0abd9',1,'lmxsocket.h']]], + ['description_5flenght',['DESCRIPTION_LENGHT',['../lmxsocket_8h.html#a02e9d4115ecbca62fac8e7de381d2125',1,'lmxsocket.h']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_5.html b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_5.html new file mode 100644 index 0000000..eff6551 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_5.js b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_5.js new file mode 100644 index 0000000..10cc12e --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['event_5ffile',['EVENT_FILE',['../keys_8c.html#aa2532a4f186824136b91f59a28c6e22b',1,'keys.c']]], + ['event_5ftext_5fsize',['EVENT_TEXT_SIZE',['../main_8c.html#aa96cae48a068f6d727ec70f82eafc0b0',1,'main.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_6.html b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_6.html new file mode 100644 index 0000000..5782e69 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_6.js b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_6.js new file mode 100644 index 0000000..b4f409d --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_6.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['for_5feach_5fweb_5frequest_5fstr',['FOR_EACH_WEB_REQUEST_STR',['../lmxjson_8c.html#a2d068c1ff29dc84c6d441731aed4a224',1,'lmxjson.c']]], + ['for_5feach_5fwebrequest_5fenum',['FOR_EACH_WEBREQUEST_ENUM',['../lmxsocket_8h.html#ab9e023185b0ed2389f00359f94f2e686',1,'lmxsocket.h']]], + ['frame',['FRAME',['../define__containers_8h.html#a7062c0eec0a974699c8658097e3d3e9d',1,'define_containers.h']]], + ['frames_5fvisible',['FRAMES_VISIBLE',['../container_8c.html#aad158c29e08aeb55580406fa0efdbfbd',1,'FRAMES_VISIBLE(): container.c'],['../define__containers_8h.html#aad158c29e08aeb55580406fa0efdbfbd',1,'FRAMES_VISIBLE(): define_containers.h']]], + ['fwatch_5fclients_5fmax',['FWATCH_CLIENTS_MAX',['../fwatch_8c.html#a8ab1f8b985fa2397695165f2ff7982d5',1,'fwatch.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_7.html b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_7.html new file mode 100644 index 0000000..5911e54 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_7.js b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_7.js new file mode 100644 index 0000000..3c593e1 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['gray_5fscale',['GRAY_SCALE',['../bmp_8c.html#a09a0117bd95a07e61228e1bd30e001a3',1,'bmp.c']]], + ['green',['GREEN',['../container_8c.html#acfbc006ea433ad708fdee3e82996e721',1,'container.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_8.html b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_8.html new file mode 100644 index 0000000..943c11e --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_8.js b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_8.js new file mode 100644 index 0000000..f866394 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['html_5fcomment',['HTML_COMMENT',['../lmxjson_8c.html#a909183b2eae1638afd71a364d7f0fda6',1,'lmxjson.c']]], + ['html_5fcomment_5fend',['HTML_COMMENT_END',['../lmxjson_8c.html#a98c5a5572472d27db6b4aed8b195776e',1,'lmxjson.c']]], + ['html_5fpre',['HTML_PRE',['../lmxjson_8c.html#aeb4351c9b4289c39e9cd0255867242da',1,'lmxjson.c']]], + ['html_5fpre_5fend',['HTML_PRE_END',['../lmxjson_8c.html#a794fd6a355435cb45568fb65591b47a0',1,'lmxjson.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_9.html b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_9.html new file mode 100644 index 0000000..f68b51b --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_9.js b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_9.js new file mode 100644 index 0000000..936c882 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['lmx_5fh',['LMX_H',['../container_8h.html#a32eb74376930d527a3ca66cd199890bd',1,'container.h']]], + ['lmx_5fpixel_5fheight',['LMX_PIXEL_HEIGHT',['../container_8h.html#a9ae062eeb4ad92b085e787fd2f539853',1,'container.h']]], + ['lmx_5fpixel_5fwidth',['LMX_PIXEL_WIDTH',['../container_8h.html#a5d3d2593b204b4e5b5cbea5edf2a38a6',1,'container.h']]], + ['lmx_5fw',['LMX_W',['../container_8h.html#a712af9d094d3e21b85ecdc794d5c20f5',1,'container.h']]], + ['log',['LOG',['../log_8h.html#a23e86ba0a2b90581f552cc3d0692be21',1,'log.h']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_a.html b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_a.html new file mode 100644 index 0000000..8236596 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_a.js b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_a.js new file mode 100644 index 0000000..8433f7a --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['max',['max',['../fwatch_8c.html#affe776513b24d84b39af8ab0930fef7f',1,'fwatch.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_b.html b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_b.html new file mode 100644 index 0000000..06064aa --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_b.js b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_b.js new file mode 100644 index 0000000..a5fbd90 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['n_5fbuttons',['N_BUTTONS',['../keys_8c.html#a271dda243b0f5bd7d2053d258eb71962',1,'keys.c']]], + ['n_5fkey_5fpress_5fcallbacks',['N_KEY_PRESS_CALLBACKS',['../keys_8c.html#aa945195906c215172e6aa00bd1d36f19',1,'keys.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_c.html b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_c.html new file mode 100644 index 0000000..29bd2b3 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_c.js b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_c.js new file mode 100644 index 0000000..0c119f8 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['offset_5flowercase',['OFFSET_LOWERCASE',['../text_8c.html#a76645f773315d40c0e394a4946c92c93',1,'text.c']]], + ['offset_5fnumbers',['OFFSET_NUMBERS',['../text_8c.html#a24c20b1b223e4ab1481a13085fb68c63',1,'text.c']]], + ['offset_5fspecial',['OFFSET_SPECIAL',['../text_8c.html#ad7e4aa73261a4e3e8e00ca37e90a15ae',1,'text.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_d.html b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_d.html new file mode 100644 index 0000000..977da06 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_d.js b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_d.js new file mode 100644 index 0000000..48cde92 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['red',['RED',['../container_8c.html#a8d23feea868a983c8c2b661e1e16972f',1,'container.c']]], + ['rgb_5fbitmask',['RGB_BITMASK',['../container_8c.html#ae31c7b5654038d07c0d4ac6a9b8b685d',1,'container.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_e.html b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_e.html new file mode 100644 index 0000000..bdf8b21 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_e.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_e.js b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_e.js new file mode 100644 index 0000000..817b474 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_e.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['socket_5fname',['SOCKET_NAME',['../lmxsocket_8h.html#a8bef388d9b2673363c0069157d3beab3',1,'lmxsocket.h']]], + ['start_5fframe',['START_FRAME',['../main_8c.html#a0b51846c82f364ec10db44ad8c251bd8',1,'main.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_f.html b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_f.html new file mode 100644 index 0000000..8179336 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/defines_f.js b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_f.js new file mode 100644 index 0000000..b24a8e0 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/defines_f.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['text_5flength',['TEXT_LENGTH',['../lmxsocket_8h.html#a14608b60296aeb2c56a375285a108c34',1,'lmxsocket.h']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/enums_0.html b/stage2/03-install-piaizu/files/fb/docs/html/search/enums_0.html new file mode 100644 index 0000000..aba8d79 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/enums_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/enums_0.js b/stage2/03-install-piaizu/files/fb/docs/html/search/enums_0.js new file mode 100644 index 0000000..c167dfc --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['container_5fhandle_5fe',['container_handle_e',['../define__containers_8h.html#a354e2962e23cb44197a9013e0ede85d5',1,'define_containers.h']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/enums_1.html b/stage2/03-install-piaizu/files/fb/docs/html/search/enums_1.html new file mode 100644 index 0000000..a8d3843 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/enums_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/enums_1.js b/stage2/03-install-piaizu/files/fb/docs/html/search/enums_1.js new file mode 100644 index 0000000..b6c85c2 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['event_5fkey_5fhandle_5fe',['event_key_handle_e',['../main_8c.html#a2f529a1100a1ad7c50486cebd796b37b',1,'main.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/enums_2.html b/stage2/03-install-piaizu/files/fb/docs/html/search/enums_2.html new file mode 100644 index 0000000..ef7d632 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/enums_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/enums_2.js b/stage2/03-install-piaizu/files/fb/docs/html/search/enums_2.js new file mode 100644 index 0000000..38860fb --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/enums_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['key_5fe',['key_e',['../keys_8h.html#addd66edca463e37a3728efa21eb0967c',1,'keys.h']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/enums_3.html b/stage2/03-install-piaizu/files/fb/docs/html/search/enums_3.html new file mode 100644 index 0000000..57bac2e --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/enums_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/enums_3.js b/stage2/03-install-piaizu/files/fb/docs/html/search/enums_3.js new file mode 100644 index 0000000..b9119d9 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/enums_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['movment_5fe',['movment_e',['../lmxsocket_8h.html#a40090aa4ce0eccc6b13f1a6155c6d34c',1,'lmxsocket.h']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/enums_4.html b/stage2/03-install-piaizu/files/fb/docs/html/search/enums_4.html new file mode 100644 index 0000000..f35d7a7 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/enums_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/enums_4.js b/stage2/03-install-piaizu/files/fb/docs/html/search/enums_4.js new file mode 100644 index 0000000..3e41159 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/enums_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['socket_5fdatagram_5ftype_5ft',['socket_datagram_type_t',['../lmxsocket_8h.html#a361754699a759ce3449219476b6f227f',1,'lmxsocket.h']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_0.html b/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_0.html new file mode 100644 index 0000000..83192d3 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_0.js b/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_0.js new file mode 100644 index 0000000..f2d2c97 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_0.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['event_5fleft_5fpress_5flong',['EVENT_LEFT_PRESS_LONG',['../main_8c.html#a2f529a1100a1ad7c50486cebd796b37ba5e8e73a2fb11ae47b48954aa6136682b',1,'main.c']]], + ['event_5fleft_5fpress_5fshort',['EVENT_LEFT_PRESS_SHORT',['../main_8c.html#a2f529a1100a1ad7c50486cebd796b37baab6fa24218ec996a68c97b667264e1f4',1,'main.c']]], + ['event_5fn',['EVENT_N',['../main_8c.html#a2f529a1100a1ad7c50486cebd796b37ba7be496f4b0f98d4253cf2ecf1a6da9d3',1,'main.c']]], + ['event_5fright_5fpress_5flong',['EVENT_RIGHT_PRESS_LONG',['../main_8c.html#a2f529a1100a1ad7c50486cebd796b37ba6ce6539034179d10c5e9b6cbaf9abc1d',1,'main.c']]], + ['event_5fright_5fpress_5fshort',['EVENT_RIGHT_PRESS_SHORT',['../main_8c.html#a2f529a1100a1ad7c50486cebd796b37ba7ad46440c086e01b0dfa464ca67e8661',1,'main.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_1.html b/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_1.html new file mode 100644 index 0000000..0715ef5 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_1.js b/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_1.js new file mode 100644 index 0000000..b31cd0d --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['key_5fchar_5fleft',['KEY_CHAR_LEFT',['../keys_8h.html#addd66edca463e37a3728efa21eb0967cab8a1df682e2d0a5282a3bc2aaa5343e7',1,'keys.h']]], + ['key_5fchar_5fright',['KEY_CHAR_RIGHT',['../keys_8h.html#addd66edca463e37a3728efa21eb0967ca4f66b0186ee3297bf4cec7fbc8bce39a',1,'keys.h']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_2.html b/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_2.html new file mode 100644 index 0000000..0f9b5e9 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_2.js b/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_2.js new file mode 100644 index 0000000..dcc6f3c --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_2.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['move_5fclear',['MOVE_CLEAR',['../lmxsocket_8h.html#a40090aa4ce0eccc6b13f1a6155c6d34ca0feb673f2c0f9320114eb5e145f9643a',1,'lmxsocket.h']]], + ['move_5fdown',['MOVE_DOWN',['../lmxsocket_8h.html#a40090aa4ce0eccc6b13f1a6155c6d34cac306ffa7a0ee9849d5c7cb1dc9654e96',1,'lmxsocket.h']]], + ['move_5fdown_5fleft',['MOVE_DOWN_LEFT',['../lmxsocket_8h.html#a40090aa4ce0eccc6b13f1a6155c6d34ca2fa8da2a59cb0b185b2bba5eae4355dd',1,'lmxsocket.h']]], + ['move_5fdown_5fright',['MOVE_DOWN_RIGHT',['../lmxsocket_8h.html#a40090aa4ce0eccc6b13f1a6155c6d34caa0da783fbea638f455846bf904873589',1,'lmxsocket.h']]], + ['move_5fleft',['MOVE_LEFT',['../lmxsocket_8h.html#a40090aa4ce0eccc6b13f1a6155c6d34cae890746014b644c289999b83d5287c11',1,'lmxsocket.h']]], + ['move_5fright',['MOVE_RIGHT',['../lmxsocket_8h.html#a40090aa4ce0eccc6b13f1a6155c6d34ca05e150c88137543939f82e607e3a77e3',1,'lmxsocket.h']]], + ['move_5fup',['MOVE_UP',['../lmxsocket_8h.html#a40090aa4ce0eccc6b13f1a6155c6d34cad1c2df17d4a2cdc3b734e4554ebbced6',1,'lmxsocket.h']]], + ['move_5fup_5fleft',['MOVE_UP_LEFT',['../lmxsocket_8h.html#a40090aa4ce0eccc6b13f1a6155c6d34ca8c123a43a87bc00c197329afe27f0031',1,'lmxsocket.h']]], + ['move_5fup_5fright',['MOVE_UP_RIGHT',['../lmxsocket_8h.html#a40090aa4ce0eccc6b13f1a6155c6d34caf3e1c73e08cb94413e5804c13a7b56ae',1,'lmxsocket.h']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_3.html b/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_3.html new file mode 100644 index 0000000..9ebb356 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_3.js b/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_3.js new file mode 100644 index 0000000..2ea2d6d --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['n_5fcontainers',['N_CONTAINERS',['../define__containers_8h.html#a354e2962e23cb44197a9013e0ede85d5ad89ddd0453b81e1d59e048726a059949',1,'define_containers.h']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_4.html b/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_4.html new file mode 100644 index 0000000..daa496d --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_4.js b/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_4.js new file mode 100644 index 0000000..f463f34 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/enumvalues_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['webrequest',['WEBREQUEST',['../lmxsocket_8h.html#a361754699a759ce3449219476b6f227fa366b0ceddad9a22be728ac0a559b2bb4',1,'lmxsocket.h']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/files_0.html b/stage2/03-install-piaizu/files/fb/docs/html/search/files_0.html new file mode 100644 index 0000000..0b637cf --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/files_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/files_0.js b/stage2/03-install-piaizu/files/fb/docs/html/search/files_0.js new file mode 100644 index 0000000..280ecf5 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/files_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['bmp_2ec',['bmp.c',['../bmp_8c.html',1,'']]], + ['bmp_2eh',['bmp.h',['../bmp_8h.html',1,'']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/files_1.html b/stage2/03-install-piaizu/files/fb/docs/html/search/files_1.html new file mode 100644 index 0000000..1094e74 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/files_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/files_1.js b/stage2/03-install-piaizu/files/fb/docs/html/search/files_1.js new file mode 100644 index 0000000..f657a5a --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/files_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['container_2ec',['container.c',['../container_8c.html',1,'']]], + ['container_2eh',['container.h',['../container_8h.html',1,'']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/files_2.html b/stage2/03-install-piaizu/files/fb/docs/html/search/files_2.html new file mode 100644 index 0000000..a08dbd3 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/files_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/files_2.js b/stage2/03-install-piaizu/files/fb/docs/html/search/files_2.js new file mode 100644 index 0000000..aaf40c0 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/files_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['define_5fcontainers_2eh',['define_containers.h',['../define__containers_8h.html',1,'']]], + ['documentation_2etxt',['documentation.txt',['../documentation_8txt.html',1,'']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/files_3.html b/stage2/03-install-piaizu/files/fb/docs/html/search/files_3.html new file mode 100644 index 0000000..647fc8d --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/files_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/files_3.js b/stage2/03-install-piaizu/files/fb/docs/html/search/files_3.js new file mode 100644 index 0000000..3f477b9 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/files_3.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['framebuffer_2ec',['framebuffer.c',['../framebuffer_8c.html',1,'']]], + ['framebuffer_2eh',['framebuffer.h',['../framebuffer_8h.html',1,'']]], + ['fwatch_2ec',['fwatch.c',['../fwatch_8c.html',1,'']]], + ['fwatch_2eh',['fwatch.h',['../fwatch_8h.html',1,'']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/files_4.html b/stage2/03-install-piaizu/files/fb/docs/html/search/files_4.html new file mode 100644 index 0000000..186557a --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/files_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/files_4.js b/stage2/03-install-piaizu/files/fb/docs/html/search/files_4.js new file mode 100644 index 0000000..7e9005c --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/files_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['keys_2ec',['keys.c',['../keys_8c.html',1,'']]], + ['keys_2eh',['keys.h',['../keys_8h.html',1,'']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/files_5.html b/stage2/03-install-piaizu/files/fb/docs/html/search/files_5.html new file mode 100644 index 0000000..671abd3 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/files_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/files_5.js b/stage2/03-install-piaizu/files/fb/docs/html/search/files_5.js new file mode 100644 index 0000000..4ade474 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/files_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['lmxjson_2ec',['lmxjson.c',['../lmxjson_8c.html',1,'']]], + ['lmxsocket_2eh',['lmxsocket.h',['../lmxsocket_8h.html',1,'']]], + ['log_2eh',['log.h',['../log_8h.html',1,'']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/files_6.html b/stage2/03-install-piaizu/files/fb/docs/html/search/files_6.html new file mode 100644 index 0000000..73aff18 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/files_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/files_6.js b/stage2/03-install-piaizu/files/fb/docs/html/search/files_6.js new file mode 100644 index 0000000..1fe57ff --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/files_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['main_2ec',['main.c',['../main_8c.html',1,'']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/files_7.html b/stage2/03-install-piaizu/files/fb/docs/html/search/files_7.html new file mode 100644 index 0000000..364f420 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/files_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/files_7.js b/stage2/03-install-piaizu/files/fb/docs/html/search/files_7.js new file mode 100644 index 0000000..6fcfb5f --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/files_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['text_2ec',['text.c',['../text_8c.html',1,'']]], + ['text_2eh',['text.h',['../text_8h.html',1,'']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/files_8.html b/stage2/03-install-piaizu/files/fb/docs/html/search/files_8.html new file mode 100644 index 0000000..f9f7943 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/files_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/files_8.js b/stage2/03-install-piaizu/files/fb/docs/html/search/files_8.js new file mode 100644 index 0000000..2add766 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/files_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['version_2ec',['version.c',['../version_8c.html',1,'']]], + ['version_2eh',['version.h',['../version_8h.html',1,'']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/files_9.html b/stage2/03-install-piaizu/files/fb/docs/html/search/files_9.html new file mode 100644 index 0000000..306f000 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/files_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/files_9.js b/stage2/03-install-piaizu/files/fb/docs/html/search/files_9.js new file mode 100644 index 0000000..f7a4be5 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/files_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['webrequest_2ec',['webrequest.c',['../webrequest_8c.html',1,'']]], + ['webrequest_2eh',['webrequest.h',['../webrequest_8h.html',1,'']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_0.html b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_0.html new file mode 100644 index 0000000..6bc52b6 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_0.js b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_0.js new file mode 100644 index 0000000..e417066 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['animate_5fsony_5flogi',['animate_sony_logi',['../main_8c.html#a2ab8c93790d4e1eab20bceb8083ed5fb',1,'main.c']]], + ['animate_5fwifi_5fap',['animate_wifi_ap',['../main_8c.html#a15ce6192d420dcd6e231a59d721aefc0',1,'main.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_1.html b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_1.html new file mode 100644 index 0000000..648831f --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_1.js b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_1.js new file mode 100644 index 0000000..7832baa --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['bmp_5ffree',['bmp_free',['../bmp_8c.html#a87e64490794ece5944cc5e15c434022a',1,'bmp_free(gimp_bitmap_t **bitmap): bmp.c'],['../bmp_8h.html#a87e64490794ece5944cc5e15c434022a',1,'bmp_free(gimp_bitmap_t **bitmap): bmp.c']]], + ['bmp_5fopen',['bmp_open',['../bmp_8c.html#a8d159e5a75c98825f9213b7d66ffcd90',1,'bmp_open(const char *file, gimp_bitmap_t **bitmap): bmp.c'],['../bmp_8h.html#a8d159e5a75c98825f9213b7d66ffcd90',1,'bmp_open(const char *file, gimp_bitmap_t **bitmap): bmp.c']]], + ['bmp_5fopen_5fpath',['bmp_open_path',['../bmp_8c.html#a866d4063788055b00820d13ad0059c08',1,'bmp_open_path(const char *path, const char *file, gimp_bitmap_t **bitmap): bmp.c'],['../bmp_8h.html#a866d4063788055b00820d13ad0059c08',1,'bmp_open_path(const char *path, const char *file, gimp_bitmap_t **bitmap): bmp.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_2.html b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_2.html new file mode 100644 index 0000000..c93d089 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_2.js b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_2.js new file mode 100644 index 0000000..d2ac4f0 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_2.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['container_5fbitmap_5fat_5fxy',['container_bitmap_at_xy',['../container_8c.html#a4293d6a88aaee4b3a3975c77b8bbc124',1,'container_bitmap_at_xy(unsigned int container, int x, int y, gimp_bitmap_t *bm, bool transparent): container.c'],['../container_8h.html#a4293d6a88aaee4b3a3975c77b8bbc124',1,'container_bitmap_at_xy(unsigned int container, int x, int y, gimp_bitmap_t *bm, bool transparent): container.c']]], + ['container_5fclose',['container_close',['../container_8c.html#a34b18ff42f14b31ed2cf2863e785ed97',1,'container_close(): container.c'],['../container_8h.html#a34b18ff42f14b31ed2cf2863e785ed97',1,'container_close(): container.c']]], + ['container_5fcompile',['container_compile',['../container_8c.html#a1f44a225b43ddd4356ffc184bc66b6e2',1,'container_compile(): container.c'],['../container_8h.html#a1f44a225b43ddd4356ffc184bc66b6e2',1,'container_compile(): container.c']]], + ['container_5fdraw_5fline',['container_draw_line',['../container_8c.html#a8cc0e24ac54388d6d234fed12847fd63',1,'container_draw_line(unsigned int container, unsigned int from_x, unsigned int from_y, unsigned int to_x, unsigned int to_y): container.c'],['../container_8h.html#a8cc0e24ac54388d6d234fed12847fd63',1,'container_draw_line(unsigned int container, unsigned int from_x, unsigned int from_y, unsigned int to_x, unsigned int to_y): container.c']]], + ['container_5ffill_5fbitmap',['container_fill_bitmap',['../container_8c.html#aafbadfbbeb4e49b5a3462d604594d682',1,'container_fill_bitmap(unsigned int container, gimp_bitmap_t *bm, bool transparent): container.c'],['../container_8h.html#aafbadfbbeb4e49b5a3462d604594d682',1,'container_fill_bitmap(unsigned int container, gimp_bitmap_t *bm, bool transparent): container.c']]], + ['container_5fget',['container_get',['../container_8c.html#ad22ccb4b0b0ef32226ade3db74f7aa2b',1,'container_get(int container): container.c'],['../container_8h.html#ab1dce72829611df6ead098c0cd19c391',1,'container_get(int container): container.c']]], + ['container_5fget_5fn',['container_get_n',['../container_8c.html#a47a34fad8fbdc9e9b2860cdffd27f6db',1,'container_get_n(void): container.c'],['../container_8h.html#a47a34fad8fbdc9e9b2860cdffd27f6db',1,'container_get_n(void): container.c']]], + ['container_5fmove',['container_move',['../container_8c.html#aa5f96f030a324b8f61fcdfb7aae14306',1,'container_move(unsigned int container, int delta_x, int delta_y): container.c'],['../container_8h.html#aa5f96f030a324b8f61fcdfb7aae14306',1,'container_move(unsigned int container, int delta_x, int delta_y): container.c']]], + ['container_5fnew',['container_new',['../container_8c.html#a744f004610e0afbb44f3dd05743cea16',1,'container_new(containers_t *containers): container.c'],['../container_8h.html#a744f004610e0afbb44f3dd05743cea16',1,'container_new(containers_t *containers): container.c']]], + ['container_5freset',['container_reset',['../container_8c.html#a38e5aed314dcb5b84228ef4889ead292',1,'container_reset(unsigned int container): container.c'],['../container_8h.html#a38e5aed314dcb5b84228ef4889ead292',1,'container_reset(unsigned int container): container.c']]], + ['container_5fvalid',['container_valid',['../container_8c.html#abc054f35bf0ad9a78aa7e180691da095',1,'container.c']]], + ['container_5fvisible',['container_visible',['../container_8c.html#aca08f5445082218d15d1789879b8752a',1,'container_visible(unsigned int container, bool visible): container.c'],['../container_8h.html#aca08f5445082218d15d1789879b8752a',1,'container_visible(unsigned int container, bool visible): container.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_3.html b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_3.html new file mode 100644 index 0000000..caa48ea --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_3.js b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_3.js new file mode 100644 index 0000000..a52d9e5 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['destroy_5fframe_5fbuffer',['destroy_frame_buffer',['../framebuffer_8c.html#a21f951a0f716a5d75c31468588b70d06',1,'destroy_frame_buffer(): framebuffer.c'],['../framebuffer_8h.html#a21f951a0f716a5d75c31468588b70d06',1,'destroy_frame_buffer(): framebuffer.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_4.html b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_4.html new file mode 100644 index 0000000..a9c64ad --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_4.js b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_4.js new file mode 100644 index 0000000..a528267 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_4.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['framebuffer_5fupdate',['framebuffer_update',['../framebuffer_8c.html#ad40ec39dd2c7a1362b24453da7b955c9',1,'framebuffer_update(void *mem): framebuffer.c'],['../framebuffer_8h.html#ad40ec39dd2c7a1362b24453da7b955c9',1,'framebuffer_update(void *mem): framebuffer.c']]], + ['fwatch_5fadd',['fwatch_add',['../fwatch_8c.html#ac306d4fe403cd34ca791825f2f4a031f',1,'fwatch_add(fwatch_cb_f cb, int fd, char *fname): fwatch.c'],['../fwatch_8h.html#ac306d4fe403cd34ca791825f2f4a031f',1,'fwatch_add(fwatch_cb_f cb, int fd, char *fname): fwatch.c']]], + ['fwatch_5fdo',['fwatch_do',['../fwatch_8c.html#a396353d3bfc79e0589141b0f623654b4',1,'fwatch_do(int us): fwatch.c'],['../fwatch_8h.html#a396353d3bfc79e0589141b0f623654b4',1,'fwatch_do(int us): fwatch.c']]], + ['fwatch_5fstart',['fwatch_start',['../fwatch_8c.html#a1790dbc376c1519df52065d1f5482854',1,'fwatch_start(): fwatch.c'],['../fwatch_8h.html#a1790dbc376c1519df52065d1f5482854',1,'fwatch_start(): fwatch.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_5.html b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_5.html new file mode 100644 index 0000000..9d135fa --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_5.js b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_5.js new file mode 100644 index 0000000..2a7e344 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['handle_5frequest_5fget',['handle_request_get',['../lmxjson_8c.html#a6536f282f71fb734c0332788de3eade0',1,'lmxjson.c']]], + ['handle_5frequest_5fpost',['handle_request_post',['../lmxjson_8c.html#ae2aa88221ea8ddbd596cec765429bd47',1,'lmxjson.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_6.html b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_6.html new file mode 100644 index 0000000..5fca897 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_6.js b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_6.js new file mode 100644 index 0000000..92a1b46 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['intshutdown',['intShutdown',['../main_8c.html#a674eb6cd8a26bbc00d70b74a65605877',1,'main.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_7.html b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_7.html new file mode 100644 index 0000000..02631a3 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_7.js b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_7.js new file mode 100644 index 0000000..b0a9998 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_7.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['key_5fpress_5fcallback',['key_press_callback',['../main_8c.html#a5f2e5df8533a2910763da4132f7b60bf',1,'main.c']]], + ['key_5ftime_5fdown',['key_time_down',['../keys_8c.html#a611b629c512aab4b85ff9c24a652c63a',1,'keys.c']]], + ['keys_5fclose',['keys_close',['../keys_8h.html#a504f53b9e379e53d13acfc52e62ac5f4',1,'keys.h']]], + ['keys_5ffile_5fwatch_5fcallback',['keys_file_watch_callback',['../keys_8c.html#a9f2c5250941159efb47013f9fe7dda45',1,'keys.c']]], + ['keys_5fregister_5fcb',['keys_register_cb',['../keys_8c.html#a3d3d1b2fb60401b9a059248f52ca8e9b',1,'keys_register_cb(key_press_f cb, key_e key, double time, int handle): keys.c'],['../keys_8h.html#a3d3d1b2fb60401b9a059248f52ca8e9b',1,'keys_register_cb(key_press_f cb, key_e key, double time, int handle): keys.c']]], + ['keys_5fsort_5fregistered_5fcallbacks',['keys_sort_registered_callbacks',['../keys_8c.html#ab4b0bf52caaeaacfec66607f34fd0783',1,'keys.c']]], + ['keys_5fstart',['keys_start',['../keys_8c.html#a47be8bc596020849db6d45df05c1dfba',1,'keys_start(): keys.c'],['../keys_8h.html#a47be8bc596020849db6d45df05c1dfba',1,'keys_start(): keys.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_8.html b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_8.html new file mode 100644 index 0000000..ff37095 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_8.js b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_8.js new file mode 100644 index 0000000..6698dc1 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['main',['main',['../main_8c.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main(): main.c'],['../lmxjson_8c.html#a840291bc02cba5474a4cb46a9b9566fe',1,'main(void): lmxjson.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_9.html b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_9.html new file mode 100644 index 0000000..1d34583 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_9.js b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_9.js new file mode 100644 index 0000000..8ad838a --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['new_5fframe_5fbuffer',['new_frame_buffer',['../framebuffer_8c.html#a9350cf3a23da4ec1aeee3f7bf279c54b',1,'new_frame_buffer(): framebuffer.c'],['../framebuffer_8h.html#a9350cf3a23da4ec1aeee3f7bf279c54b',1,'new_frame_buffer(): framebuffer.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_a.html b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_a.html new file mode 100644 index 0000000..8eb5e56 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_a.js b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_a.js new file mode 100644 index 0000000..587f448 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['send_5fdatagram',['send_datagram',['../lmxjson_8c.html#a4818cd27c1a79914d937d05dfcf6acf6',1,'lmxjson.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_b.html b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_b.html new file mode 100644 index 0000000..fa9cff5 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_b.js b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_b.js new file mode 100644 index 0000000..267033a --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_b.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['text_5fclose',['text_close',['../text_8c.html#a4dac91da42d307349880be6953933667',1,'text_close(): text.c'],['../text_8h.html#a4dac91da42d307349880be6953933667',1,'text_close(): text.c']]], + ['text_5fget_5fchar_5fbitmap',['text_get_char_bitmap',['../text_8c.html#a5c3bac04613ceb735332fcf3e54bfe36',1,'text.c']]], + ['text_5fget_5fchar_5ffont',['text_get_char_font',['../text_8c.html#aafdbf9301217d95e8e76b9946b1ffc16',1,'text.c']]], + ['text_5finit',['text_init',['../text_8c.html#a8e5b8db4a9381a196dca3500d0b4c862',1,'text_init(): text.c'],['../text_8h.html#a8e5b8db4a9381a196dca3500d0b4c862',1,'text_init(): text.c']]], + ['text_5fput',['text_put',['../text_8c.html#a2c3d471149c5f168689e8b4a2416fb1e',1,'text_put(int container, char *string): text.c'],['../text_8h.html#a2c3d471149c5f168689e8b4a2416fb1e',1,'text_put(int container, char *string): text.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_c.html b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_c.html new file mode 100644 index 0000000..fce7a6b --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_c.js b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_c.js new file mode 100644 index 0000000..60f7415 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['version_5fdate_5fget',['version_date_get',['../version_8c.html#ac1d7273561ab179045ec7ffbbf26dd15',1,'version_date_get(void): version.c'],['../version_8h.html#ac1d7273561ab179045ec7ffbbf26dd15',1,'version_date_get(void): version.c']]], + ['version_5fgit_5fget',['version_git_get',['../version_8c.html#a312ed7725aab60a5d9a525276cd8d2c9',1,'version_git_get(void): version.c'],['../version_8h.html#a312ed7725aab60a5d9a525276cd8d2c9',1,'version_git_get(void): version.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_d.html b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_d.html new file mode 100644 index 0000000..82b2b0c --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/functions_d.js b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_d.js new file mode 100644 index 0000000..6d3fb3f --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/functions_d.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['webrequest_5fclose',['webrequest_close',['../webrequest_8c.html#a71593d09142e24733934de92b987363a',1,'webrequest_close(): webrequest.c'],['../webrequest_8h.html#a71593d09142e24733934de92b987363a',1,'webrequest_close(): webrequest.c']]], + ['webrequest_5fhandle',['webrequest_handle',['../webrequest_8c.html#ae180a90304442ccf67822992faf62779',1,'webrequest.c']]], + ['webrequest_5finit',['webrequest_init',['../webrequest_8c.html#a9b6c87e8646937e58d20e244528eb89c',1,'webrequest_init(): webrequest.c'],['../webrequest_8h.html#a9b6c87e8646937e58d20e244528eb89c',1,'webrequest_init(): webrequest.c']]], + ['webrequest_5fupdate_5fcrosshair',['webrequest_update_crosshair',['../webrequest_8c.html#a7b9b2c0614c1feedd25cbdb7354b2cd3',1,'webrequest.c']]], + ['webrequest_5fupdate_5ftext',['webrequest_update_text',['../webrequest_8c.html#a20a24ed4bb1c585c45381b2c9e56a5d0',1,'webrequest.c']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/mag_sel.png b/stage2/03-install-piaizu/files/fb/docs/html/search/mag_sel.png new file mode 100644 index 0000000..81f6040 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/search/mag_sel.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/nomatches.html b/stage2/03-install-piaizu/files/fb/docs/html/search/nomatches.html new file mode 100644 index 0000000..b1ded27 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
+
No Matches
+
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/pages_0.html b/stage2/03-install-piaizu/files/fb/docs/html/search/pages_0.html new file mode 100644 index 0000000..0db7267 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/pages_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/pages_0.js b/stage2/03-install-piaizu/files/fb/docs/html/search/pages_0.js new file mode 100644 index 0000000..18461ea --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['piaizu_20webserver',['PiAIZU webserver',['../index.html',1,'']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/search.css b/stage2/03-install-piaizu/files/fb/docs/html/search/search.css new file mode 100644 index 0000000..4d7612f --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + position: absolute; + float: none; + display: inline; + margin-top: 8px; + right: 0px; + width: 170px; + z-index: 102; + background-color: white; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:111px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:0px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 1; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/search.js b/stage2/03-install-piaizu/files/fb/docs/html/search/search.js new file mode 100644 index 0000000..dedce3b --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/search.js @@ -0,0 +1,791 @@ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/typedefs_0.js b/stage2/03-install-piaizu/files/fb/docs/html/search/typedefs_0.js new file mode 100644 index 0000000..b1f25ca --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/typedefs_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['fwatch_5fcb_5ff',['fwatch_cb_f',['../fwatch_8h.html#adc207692eccbe66157caf12f69465f4d',1,'fwatch.h']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/typedefs_1.html b/stage2/03-install-piaizu/files/fb/docs/html/search/typedefs_1.html new file mode 100644 index 0000000..6edac96 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/typedefs_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/typedefs_1.js b/stage2/03-install-piaizu/files/fb/docs/html/search/typedefs_1.js new file mode 100644 index 0000000..0521dde --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/typedefs_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['key_5fpress_5ff',['key_press_f',['../keys_8h.html#ac7fb011a894bbe4eb7c98335226199f3',1,'keys.h']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/typedefs_2.html b/stage2/03-install-piaizu/files/fb/docs/html/search/typedefs_2.html new file mode 100644 index 0000000..cc5cc40 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/typedefs_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/typedefs_2.js b/stage2/03-install-piaizu/files/fb/docs/html/search/typedefs_2.js new file mode 100644 index 0000000..b9481f7 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/typedefs_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['rgba_5ft',['rgba_t',['../container_8h.html#a677f336708895229045de5be0052a3a3',1,'container.h']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_0.html b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_0.html new file mode 100644 index 0000000..3835278 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_0.js b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_0.js new file mode 100644 index 0000000..0e3b06a --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_0.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['bg_5fcolor',['bg_color',['../structcontainer__t.html#aa15998595ab97a9183bf59d6ffb7067f',1,'container_t']]], + ['bits_5fper_5fpixel',['bits_per_pixel',['../structbmp__header__t.html#a6f5786a0568050a2cbeac4e890b6b05f',1,'bmp_header_t::bits_per_pixel()'],['../structcontainer__t.html#ac0a9423a0a24c984c671fcddc73e0a3e',1,'container_t::bits_per_pixel()']]], + ['buffer',['buffer',['../structframe__buffer.html#a4a758afb19d7c8d39ab8c6a85340ad2f',1,'frame_buffer']]], + ['buffer_5fsize',['buffer_size',['../structframe__buffer.html#a4236734c858183aeabad4757e5bb8f6b',1,'frame_buffer']]], + ['bytes_5fper_5fpixel',['bytes_per_pixel',['../structgimp__bitmap__t.html#aeaa419d34acb373c53381fcb63a4393f',1,'gimp_bitmap_t']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_1.html b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_1.html new file mode 100644 index 0000000..3c65cf2 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_1.js b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_1.js new file mode 100644 index 0000000..dccda06 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_1.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['c',['c',['../structcontainers__t.html#a2df26961e28840e62f03b0c9be470a5b',1,'containers_t']]], + ['cb',['cb',['../structfwatch__client__t.html#aaf2058ea1b2e1c302f3d005ed7b8bc07',1,'fwatch_client_t::cb()'],['../structkey__press__event__t.html#a7087512eb1b5bf16ce0aa29eb5406464',1,'key_press_event_t::cb()']]], + ['character',['character',['../structfont__character__t.html#aba6941cad88d51dd7f343173e2491b44',1,'font_character_t']]], + ['clients',['clients',['../structfwatch__t.html#aad584654423c11412c137cc6764540c6',1,'fwatch_t']]], + ['compression',['compression',['../structbmp__header__t.html#a9e5884647d8d3bd37f2f2cb37b74f8ce',1,'bmp_header_t']]], + ['container',['container',['../structsocket__datagram__header__t.html#afbcf59d680b48498ac82b13ad658cdde',1,'socket_datagram_header_t']]], + ['containers',['containers',['../structsocket__datagram__lmx__info__t.html#a69fbe939f97ba7bd6289c873ba9c1ac6',1,'socket_datagram_lmx_info_t']]], + ['coord',['coord',['../structsocket__datagram__lmx__coordinate__t.html#a6fd0fe21d7fb8bb9d8ed88e59af14d6c',1,'socket_datagram_lmx_coordinate_t']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_10.html b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_10.html new file mode 100644 index 0000000..52b5fe8 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_10.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_10.js b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_10.js new file mode 100644 index 0000000..b57b98a --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_10.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['width',['width',['../structbmp__header__t.html#a5e2c8f9c3af00a7b3a7eddb65674fb3d',1,'bmp_header_t::width()'],['../structcontainer__t.html#a1ddd859b73bb396b91c3660d28d690e9',1,'container_t::width()'],['../structgimp__bitmap__t.html#a7c67871cc4a591dccdad8364e097729d',1,'gimp_bitmap_t::width()'],['../structframe__buffer.html#ac97cd489d8421b7a1faa897c2774ff1e',1,'frame_buffer::width()'],['../structfont__character__t.html#afc04f5ee227cbf2ba84b243d3438aee6',1,'font_character_t::width()'],['../structcontainer__info__t.html#a73f40909c3718ccadf18fe34f34f6d83',1,'container_info_t::width()']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_11.html b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_11.html new file mode 100644 index 0000000..476f36e --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_11.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_11.js b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_11.js new file mode 100644 index 0000000..b03c903 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_11.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['x',['x',['../structcontainer__t.html#ae4abec600666b4289eb4cff6df72b40c',1,'container_t::x()'],['../structcoordinate__t.html#a8afa92b641bc97ce4e6e1ab1c5074f1b',1,'coordinate_t::x()'],['../structcontainer__info__t.html#ab412aa9e3782e5a2cbcffac58cdd7fa8',1,'container_info_t::x()']]], + ['x_5fres',['x_res',['../structbmp__header__t.html#a10f1a21504ea598dba94172983928ef0',1,'bmp_header_t']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_12.html b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_12.html new file mode 100644 index 0000000..ff143dc --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_12.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_12.js b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_12.js new file mode 100644 index 0000000..7399fc1 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_12.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['y',['y',['../structcontainer__t.html#a03a8dfe23a6b69d788c496b8c9d8bd05',1,'container_t::y()'],['../structcoordinate__t.html#a31eef5de4d41d2c29ff62c5a19c10879',1,'coordinate_t::y()'],['../structcontainer__info__t.html#ac633ff02409cd5fe500dc6c5ef1b82da',1,'container_info_t::y()']]], + ['y_5fres',['y_res',['../structbmp__header__t.html#a48850a410b7409fedf12501a2676d3ae',1,'bmp_header_t']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_2.html b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_2.html new file mode 100644 index 0000000..7b43e0a --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_2.js b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_2.js new file mode 100644 index 0000000..7fb694d --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['data',['data',['../structcontainer__t.html#a914bee105b6a3e9d0910afb5c15cee90',1,'container_t']]], + ['data_5foffset',['data_offset',['../structbmp__header__t.html#a5d2584a7c0bc3cc0670062b4eb6438c6',1,'bmp_header_t']]], + ['description',['description',['../structcontainer__t.html#a342a4ee9fcdb7a78395037aa6118925a',1,'container_t::description()'],['../structcontainer__info__t.html#abfb73cb6bd1a190467c43954806d73f8',1,'container_info_t::description()']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_3.html b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_3.html new file mode 100644 index 0000000..ea0392d --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_3.js b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_3.js new file mode 100644 index 0000000..fdd24c4 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_3.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['fd',['fd',['../structfwatch__client__t.html#ac39ab2a370564b8e2158fe6d86dc21f4',1,'fwatch_client_t']]], + ['file_5fdescriptor',['file_descriptor',['../structframe__buffer.html#aa98bc0af2c02af8185b15a6b3d6b638a',1,'frame_buffer']]], + ['filesize',['filesize',['../structbmp__header__t.html#a0ac493084a0fdf620a79fa6c11892ea7',1,'bmp_header_t']]], + ['fixed_5finfo',['fixed_info',['../structframe__buffer.html#a69e6d92e1c13f76c92102946ec022406',1,'frame_buffer']]], + ['font',['font',['../structfont__character__t.html#a559fc4e9efa9f7ed71447a58965d894e',1,'font_character_t']]], + ['frame',['frame',['../structcontainer__t.html#a00651855b92ac7eea6cc0558c646713a',1,'container_t::frame()'],['../structcontainer__info__t.html#ae3dbd50c7e635a2f0591b08a137346c4',1,'container_info_t::frame()']]], + ['framesize_5fmem',['framesize_mem',['../structcontainer__t.html#a8647652c5768fe052ce672eedbcf32b9',1,'container_t::framesize_mem()'],['../structcontainer__info__t.html#ad62c9074277fd5ae12fcb927f4897288',1,'container_info_t::framesize_mem()']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_4.html b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_4.html new file mode 100644 index 0000000..1ed95cb --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_4.js b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_4.js new file mode 100644 index 0000000..e6c9d12 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_4.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['handle',['handle',['../structcontainer__t.html#a959c54d525acae38b7c8fdedd3f71d73',1,'container_t::handle()'],['../structkey__press__event__t.html#a2b948a37090366d7b0833b0b1c14fc38',1,'key_press_event_t::handle()']]], + ['header',['header',['../structsocket__datagram__lmx__coordinate__t.html#ae3db6d27096f31d1c34fe156f532200d',1,'socket_datagram_lmx_coordinate_t::header()'],['../structsocket__datagram__lmx__move__t.html#aeaa0755956fb5bd09a18b19f03cda685',1,'socket_datagram_lmx_move_t::header()'],['../structsocket__datagram__lmx__text__t.html#aad81c43f54858e3d63ef763a339fd8e4',1,'socket_datagram_lmx_text_t::header()'],['../structsocket__datagram__lmx__info__t.html#a7affdfe5653bace80a1e4453bc7537db',1,'socket_datagram_lmx_info_t::header()']]], + ['header_5fsize',['header_size',['../structbmp__header__t.html#aeb398c15a82e333f11496dfd6b9f4c92',1,'bmp_header_t']]], + ['height',['height',['../structbmp__header__t.html#a6cad50f0cb95db0248af3a6bc9f95b6e',1,'bmp_header_t::height()'],['../structcontainer__t.html#a32496ae57dd9e39e810c8039aa85732a',1,'container_t::height()'],['../structgimp__bitmap__t.html#a73cce8d827839dd84cc33219d2c7a3e6',1,'gimp_bitmap_t::height()'],['../structframe__buffer.html#a0972a7ceb6ee6bf655a9c50e01aab6da',1,'frame_buffer::height()'],['../structfont__character__t.html#aa196e439501895029ba1c53636a00554',1,'font_character_t::height()'],['../structcontainer__info__t.html#a3d11c78eb308964beb296edbd2e68d49',1,'container_info_t::height()']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_5.html b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_5.html new file mode 100644 index 0000000..ecc883b --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_5.js b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_5.js new file mode 100644 index 0000000..97e8759 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['img_5fsize_5fbytes',['img_size_bytes',['../structbmp__header__t.html#a21c4b001c5630a131618d1e2bd63e12b',1,'bmp_header_t']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_6.html b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_6.html new file mode 100644 index 0000000..0c1a66b --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_6.js b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_6.js new file mode 100644 index 0000000..2e0ac75 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['key',['key',['../structkey__action__t.html#a49952147e37371755211376d109ed68c',1,'key_action_t::key()'],['../structkey__press__event__t.html#aa85af3aa911eb62b8d04f67def041bec',1,'key_press_event_t::key()']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_7.html b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_7.html new file mode 100644 index 0000000..e0da2ef --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_7.js b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_7.js new file mode 100644 index 0000000..c05ca04 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['linelength',['linelength',['../structframe__buffer.html#aabfa500e4bf5da00a8fc443e984385eb',1,'frame_buffer']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_8.html b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_8.html new file mode 100644 index 0000000..0c3d1df --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_8.js b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_8.js new file mode 100644 index 0000000..d48fc42 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['maxfd',['maxfd',['../structfwatch__t.html#ad404f91f44e504c3ab57710ee952159e',1,'fwatch_t']]], + ['move',['move',['../structsocket__datagram__lmx__move__t.html#a9c4c749ddf22aec99c09bb65a96ef578',1,'socket_datagram_lmx_move_t']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_9.html b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_9.html new file mode 100644 index 0000000..e14a107 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_9.js b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_9.js new file mode 100644 index 0000000..25fd0cc --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['n',['n',['../structcontainers__t.html#ac36922501ee1230ed68680e5f1476b21',1,'containers_t']]], + ['n_5fcolors',['n_colors',['../structbmp__header__t.html#ab53c0642fd5b9fe854f88bf4f5be64d0',1,'bmp_header_t']]], + ['n_5fcontainers',['n_containers',['../structsocket__datagram__lmx__info__t.html#a90c667a7d12e18262e0c3ce8d22f9f10',1,'socket_datagram_lmx_info_t']]], + ['n_5fimportant_5fcolors',['n_important_colors',['../structbmp__header__t.html#a4364880be164aea309daba74f47464a1',1,'bmp_header_t']]], + ['n_5fregistered',['n_registered',['../structfwatch__t.html#a52c3e0b276766bc3398c1f2a1ad1c49e',1,'fwatch_t']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_a.html b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_a.html new file mode 100644 index 0000000..4e38be7 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_a.js b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_a.js new file mode 100644 index 0000000..3cb10c5 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['offset_5fcol',['offset_col',['../structfont__character__t.html#ab6be791ac2612bfb97fb46a3dc45d6dc',1,'font_character_t']]], + ['offset_5frow',['offset_row',['../structfont__character__t.html#a235302c9e5108ae9680d2976f664c325',1,'font_character_t']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_b.html b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_b.html new file mode 100644 index 0000000..c98ef41 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_b.js b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_b.js new file mode 100644 index 0000000..f8209b6 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_b.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['padding',['padding',['../structcontainer__t.html#a475bff7f994d1b11346434406ee9698b',1,'container_t::padding()'],['../structframe__buffer.html#a931e563e396d5dcb628cd63350dce29a',1,'frame_buffer::padding()']]], + ['pixel_5fdata',['pixel_data',['../structgimp__bitmap__t.html#a658a59a49fde102387788ac759790609',1,'gimp_bitmap_t']]], + ['planes',['planes',['../structbmp__header__t.html#a99795c81232a5c8c0bb0d1724092ef7b',1,'bmp_header_t']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_c.html b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_c.html new file mode 100644 index 0000000..d5f4449 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_c.js b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_c.js new file mode 100644 index 0000000..a8923a1 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['reserved_5fa',['reserved_a',['../structbmp__header__t.html#a1b1b1cb513d2f42a1e6efbd79f4bdec8',1,'bmp_header_t']]], + ['reserved_5fb',['reserved_b',['../structbmp__header__t.html#af5bbd61d1ac8839a59415368aecfa1c7',1,'bmp_header_t']]], + ['rfds',['rfds',['../structfwatch__t.html#a958354695787d34346b02a9948d08968',1,'fwatch_t']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_d.html b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_d.html new file mode 100644 index 0000000..a57e383 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_d.js b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_d.js new file mode 100644 index 0000000..7000f14 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['signature',['signature',['../structbmp__header__t.html#a0990e32df654060facbca342d5381712',1,'bmp_header_t']]], + ['size',['size',['../structsocket__datagram__header__t.html#a77e3868728a23b3f23e162c1a477954f',1,'socket_datagram_header_t']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_e.html b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_e.html new file mode 100644 index 0000000..d1502e0 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_e.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_e.js b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_e.js new file mode 100644 index 0000000..9d530d8 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_e.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['text',['text',['../structsocket__datagram__lmx__text__t.html#a270dceb9979d751a37804537c3b3c8d9',1,'socket_datagram_lmx_text_t']]], + ['time',['time',['../structkey__press__event__t.html#a8e4d38d0be3e97ef0e33f87e6b2efdfd',1,'key_press_event_t']]], + ['time_5fhold',['time_hold',['../structkey__action__t.html#a985440e879772fcd7f3a1d74d35c39f6',1,'key_action_t']]], + ['time_5fpressed',['time_pressed',['../structkey__action__t.html#a3b9f04eed18e3f4900c38b0e22301f31',1,'key_action_t']]], + ['time_5freleased',['time_released',['../structkey__action__t.html#a200f2f1e9407b325f1535d80a9cc5ba4',1,'key_action_t']]], + ['timeout',['timeout',['../structfwatch__t.html#a261f6a9bc1b13ce714cbcfe4d8620a59',1,'fwatch_t']]], + ['transparent',['transparent',['../structcontainer__t.html#a9a90fbf05f28a066739f31e6fa6ebcf6',1,'container_t::transparent()'],['../structcontainer__info__t.html#a9b5e40e1889b51ea591ccea809af8880',1,'container_info_t::transparent()']]], + ['type',['type',['../structsocket__datagram__header__t.html#a61b4d7c63d263e3c00f02c7e13a82715',1,'socket_datagram_header_t']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_f.html b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_f.html new file mode 100644 index 0000000..f777e71 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/search/variables_f.js b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_f.js new file mode 100644 index 0000000..b2f6f1a --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/search/variables_f.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['var_5finfo',['var_info',['../structframe__buffer.html#a3cd2175d95cfe0d2ab3f4d8d1ffc0bf2',1,'frame_buffer']]], + ['visible',['visible',['../structcontainer__t.html#abc4f1b4dc74d94c2dd01a1316ac84cc7',1,'container_t::visible()'],['../structcontainer__info__t.html#a20328df479ee65c6a5e78cd1a4cd31cc',1,'container_info_t::visible()']]] +]; diff --git a/stage2/03-install-piaizu/files/fb/docs/html/sonylogo.jpg b/stage2/03-install-piaizu/files/fb/docs/html/sonylogo.jpg new file mode 100644 index 0000000..b93bfa0 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/sonylogo.jpg differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/splitbar.png b/stage2/03-install-piaizu/files/fb/docs/html/splitbar.png new file mode 100644 index 0000000..fe895f2 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/splitbar.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structbmp__header__t.html b/stage2/03-install-piaizu/files/fb/docs/html/structbmp__header__t.html new file mode 100644 index 0000000..d0bd452 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structbmp__header__t.html @@ -0,0 +1,366 @@ + + + + + + +PiAIZU: bmp_header_t Struct Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
bmp_header_t Struct Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Data Fields

uint8_t signature [2]
 
uint32_t filesize
 
uint16_t reserved_a
 
uint16_t reserved_b
 
uint32_t data_offset
 
uint32_t header_size
 
uint32_t width
 
uint32_t height
 
uint16_t planes
 
uint16_t bits_per_pixel
 
uint32_t compression
 
uint32_t img_size_bytes
 
uint32_t x_res
 
uint32_t y_res
 
uint32_t n_colors
 
uint32_t n_important_colors
 
+

Detailed Description

+
+

Definition at line 53 of file bmp.c.

+

Field Documentation

+ +
+
+ + + + +
uint16_t bmp_header_t::bits_per_pixel
+
+ +

Definition at line 64 of file bmp.c.

+ +
+
+ +
+
+ + + + +
uint32_t bmp_header_t::compression
+
+ +

Definition at line 65 of file bmp.c.

+ +
+
+ +
+
+ + + + +
uint32_t bmp_header_t::data_offset
+
+ +

Definition at line 59 of file bmp.c.

+ +
+
+ +
+
+ + + + +
uint32_t bmp_header_t::filesize
+
+ +

Definition at line 56 of file bmp.c.

+ +
+
+ +
+
+ + + + +
uint32_t bmp_header_t::header_size
+
+ +

Definition at line 60 of file bmp.c.

+ +
+
+ +
+
+ + + + +
uint32_t bmp_header_t::height
+
+ +

Definition at line 62 of file bmp.c.

+ +
+
+ +
+
+ + + + +
uint32_t bmp_header_t::img_size_bytes
+
+ +

Definition at line 66 of file bmp.c.

+ +
+
+ +
+
+ + + + +
uint32_t bmp_header_t::n_colors
+
+ +

Definition at line 69 of file bmp.c.

+ +
+
+ +
+
+ + + + +
uint32_t bmp_header_t::n_important_colors
+
+ +

Definition at line 70 of file bmp.c.

+ +
+
+ +
+
+ + + + +
uint16_t bmp_header_t::planes
+
+ +

Definition at line 63 of file bmp.c.

+ +
+
+ +
+
+ + + + +
uint16_t bmp_header_t::reserved_a
+
+ +

Definition at line 57 of file bmp.c.

+ +
+
+ +
+
+ + + + +
uint16_t bmp_header_t::reserved_b
+
+ +

Definition at line 58 of file bmp.c.

+ +
+
+ +
+
+ + + + +
uint8_t bmp_header_t::signature[2]
+
+ +

Definition at line 55 of file bmp.c.

+ +
+
+ +
+
+ + + + +
uint32_t bmp_header_t::width
+
+ +

Definition at line 61 of file bmp.c.

+ +
+
+ +
+
+ + + + +
uint32_t bmp_header_t::x_res
+
+ +

Definition at line 67 of file bmp.c.

+ +
+
+ +
+
+ + + + +
uint32_t bmp_header_t::y_res
+
+ +

Definition at line 68 of file bmp.c.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structcontainer__info__t.html b/stage2/03-install-piaizu/files/fb/docs/html/structcontainer__info__t.html new file mode 100644 index 0000000..07133b1 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structcontainer__info__t.html @@ -0,0 +1,256 @@ + + + + + + +PiAIZU: container_info_t Struct Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
container_info_t Struct Reference
+
+
+ +

#include <lmxsocket.h>

+ + + + + + + + + + + + + + + + + + + + +

+Data Fields

int x
 
int y
 
unsigned int width
 
unsigned int height
 
bool transparent
 
bool visible
 
char frame
 
size_t framesize_mem
 
char description [DESCRIPTION_LENGHT]
 
+

Detailed Description

+
+

Definition at line 59 of file lmxsocket.h.

+

Field Documentation

+ +
+
+ + + + +
char container_info_t::description[DESCRIPTION_LENGHT]
+
+ +

Definition at line 68 of file lmxsocket.h.

+ +
+
+ +
+
+ + + + +
char container_info_t::frame
+
+ +

Definition at line 66 of file lmxsocket.h.

+ +
+
+ +
+
+ + + + +
size_t container_info_t::framesize_mem
+
+ +

Definition at line 67 of file lmxsocket.h.

+ +
+
+ +
+
+ + + + +
unsigned int container_info_t::height
+
+ +

Definition at line 63 of file lmxsocket.h.

+ +
+
+ +
+
+ + + + +
bool container_info_t::transparent
+
+ +

Definition at line 64 of file lmxsocket.h.

+ +
+
+ +
+
+ + + + +
bool container_info_t::visible
+
+ +

Definition at line 65 of file lmxsocket.h.

+ +
+
+ +
+
+ + + + +
unsigned int container_info_t::width
+
+ +

Definition at line 62 of file lmxsocket.h.

+ +
+
+ +
+
+ + + + +
int container_info_t::x
+
+ +

Definition at line 60 of file lmxsocket.h.

+ +
+
+ +
+
+ + + + +
int container_info_t::y
+
+ +

Definition at line 61 of file lmxsocket.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structcontainer__t.html b/stage2/03-install-piaizu/files/fb/docs/html/structcontainer__t.html new file mode 100644 index 0000000..8abae6a --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structcontainer__t.html @@ -0,0 +1,336 @@ + + + + + + +PiAIZU: container_t Struct Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
container_t Struct Reference
+
+
+ +

#include <container.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Data Fields

int handle
 
int x
 
int y
 
unsigned int width
 
unsigned int height
 
int bits_per_pixel
 
int padding
 
bool transparent
 
bool visible
 
char frame
 
size_t framesize_mem
 
rgba_t bg_color
 
char * description
 
uint8_t(* data )[]
 
+

Detailed Description

+
+

Definition at line 14 of file container.h.

+

Field Documentation

+ +
+
+ + + + +
rgba_t container_t::bg_color
+
+ +

Definition at line 26 of file container.h.

+ +
+
+ +
+
+ + + + +
int container_t::bits_per_pixel
+
+ +

Definition at line 20 of file container.h.

+ +
+
+ +
+
+ + + + +
uint8_t(* container_t::data)[]
+
+ +

Definition at line 28 of file container.h.

+ +
+
+ +
+
+ + + + +
char* container_t::description
+
+ +

Definition at line 27 of file container.h.

+ +
+
+ +
+
+ + + + +
char container_t::frame
+
+ +

Definition at line 24 of file container.h.

+ +
+
+ +
+
+ + + + +
size_t container_t::framesize_mem
+
+ +

Definition at line 25 of file container.h.

+ +
+
+ +
+
+ + + + +
int container_t::handle
+
+ +

Definition at line 15 of file container.h.

+ +
+
+ +
+
+ + + + +
unsigned int container_t::height
+
+ +

Definition at line 19 of file container.h.

+ +
+
+ +
+
+ + + + +
int container_t::padding
+
+ +

Definition at line 21 of file container.h.

+ +
+
+ +
+
+ + + + +
bool container_t::transparent
+
+ +

Definition at line 22 of file container.h.

+ +
+
+ +
+
+ + + + +
bool container_t::visible
+
+ +

Definition at line 23 of file container.h.

+ +
+
+ +
+
+ + + + +
unsigned int container_t::width
+
+ +

Definition at line 18 of file container.h.

+ +
+
+ +
+
+ + + + +
int container_t::x
+
+ +

Definition at line 16 of file container.h.

+ +
+
+ +
+
+ + + + +
int container_t::y
+
+ +

Definition at line 17 of file container.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structcontainers__t.html b/stage2/03-install-piaizu/files/fb/docs/html/structcontainers__t.html new file mode 100644 index 0000000..7069600 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structcontainers__t.html @@ -0,0 +1,152 @@ + + + + + + +PiAIZU: containers_t Struct Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
containers_t Struct Reference
+
+
+ +

#include <container.h>

+
+Collaboration diagram for containers_t:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + +

+Data Fields

size_t n
 
container_t c []
 
+

Detailed Description

+
+

Definition at line 31 of file container.h.

+

Field Documentation

+ +
+
+ + + + +
container_t containers_t::c[]
+
+ +

Definition at line 33 of file container.h.

+ +
+
+ +
+
+ + + + +
size_t containers_t::n
+
+ +

Definition at line 32 of file container.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structcontainers__t__coll__graph.map b/stage2/03-install-piaizu/files/fb/docs/html/structcontainers__t__coll__graph.map new file mode 100644 index 0000000..46a5132 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structcontainers__t__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structcontainers__t__coll__graph.md5 b/stage2/03-install-piaizu/files/fb/docs/html/structcontainers__t__coll__graph.md5 new file mode 100644 index 0000000..e2a0ddf --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structcontainers__t__coll__graph.md5 @@ -0,0 +1 @@ +3320c24dc2eb07e2d0b269cfa255e4c2 \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structcontainers__t__coll__graph.png b/stage2/03-install-piaizu/files/fb/docs/html/structcontainers__t__coll__graph.png new file mode 100644 index 0000000..26221e3 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/structcontainers__t__coll__graph.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structcoordinate__t.html b/stage2/03-install-piaizu/files/fb/docs/html/structcoordinate__t.html new file mode 100644 index 0000000..6e98b85 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structcoordinate__t.html @@ -0,0 +1,144 @@ + + + + + + +PiAIZU: coordinate_t Struct Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
coordinate_t Struct Reference
+
+
+ +

#include <lmxsocket.h>

+ + + + + + +

+Data Fields

uint16_t x
 
uint16_t y
 
+

Detailed Description

+
+

Definition at line 27 of file lmxsocket.h.

+

Field Documentation

+ +
+
+ + + + +
uint16_t coordinate_t::x
+
+ +

Definition at line 28 of file lmxsocket.h.

+ +
+
+ +
+
+ + + + +
uint16_t coordinate_t::y
+
+ +

Definition at line 29 of file lmxsocket.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structfont__character__t.html b/stage2/03-install-piaizu/files/fb/docs/html/structfont__character__t.html new file mode 100644 index 0000000..ce4a593 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structfont__character__t.html @@ -0,0 +1,214 @@ + + + + + + +PiAIZU: font_character_t Struct Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
font_character_t Struct Reference
+
+
+
+Collaboration diagram for font_character_t:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + + + + +

+Data Fields

char character
 
int offset_col
 
int offset_row
 
int width
 
int height
 
gimp_bitmap_tfont
 
+

Detailed Description

+
+

Definition at line 9 of file text.c.

+

Field Documentation

+ +
+
+ + + + +
char font_character_t::character
+
+ +

Definition at line 10 of file text.c.

+ +
+
+ +
+
+ + + + +
gimp_bitmap_t* font_character_t::font
+
+ +

Definition at line 15 of file text.c.

+ +
+
+ +
+
+ + + + +
int font_character_t::height
+
+ +

Definition at line 14 of file text.c.

+ +
+
+ +
+
+ + + + +
int font_character_t::offset_col
+
+ +

Definition at line 11 of file text.c.

+ +
+
+ +
+
+ + + + +
int font_character_t::offset_row
+
+ +

Definition at line 12 of file text.c.

+ +
+
+ +
+
+ + + + +
int font_character_t::width
+
+ +

Definition at line 13 of file text.c.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structfont__character__t__coll__graph.map b/stage2/03-install-piaizu/files/fb/docs/html/structfont__character__t__coll__graph.map new file mode 100644 index 0000000..e9c6447 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structfont__character__t__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structfont__character__t__coll__graph.md5 b/stage2/03-install-piaizu/files/fb/docs/html/structfont__character__t__coll__graph.md5 new file mode 100644 index 0000000..3d673c9 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structfont__character__t__coll__graph.md5 @@ -0,0 +1 @@ +4f7dd090e3a2463d514106fc83edff37 \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structfont__character__t__coll__graph.png b/stage2/03-install-piaizu/files/fb/docs/html/structfont__character__t__coll__graph.png new file mode 100644 index 0000000..b2af8fa Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/structfont__character__t__coll__graph.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structframe__buffer.html b/stage2/03-install-piaizu/files/fb/docs/html/structframe__buffer.html new file mode 100644 index 0000000..a3c7735 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structframe__buffer.html @@ -0,0 +1,256 @@ + + + + + + +PiAIZU: frame_buffer Struct Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
frame_buffer Struct Reference
+
+
+ +

#include <framebuffer.h>

+ + + + + + + + + + + + + + + + + + + + +

+Data Fields

int file_descriptor
 
struct fb_fix_screeninfo fixed_info
 
struct fb_var_screeninfo var_info
 
int padding
 
int linelength
 
int width
 
int height
 
long int buffer_size
 
char * buffer
 
+

Detailed Description

+
+

Definition at line 6 of file framebuffer.h.

+

Field Documentation

+ +
+
+ + + + +
char* frame_buffer::buffer
+
+ +

Definition at line 18 of file framebuffer.h.

+ +
+
+ +
+
+ + + + +
long int frame_buffer::buffer_size
+
+ +

Definition at line 17 of file framebuffer.h.

+ +
+
+ +
+
+ + + + +
int frame_buffer::file_descriptor
+
+ +

Definition at line 7 of file framebuffer.h.

+ +
+
+ +
+
+ + + + +
struct fb_fix_screeninfo frame_buffer::fixed_info
+
+ +

Definition at line 9 of file framebuffer.h.

+ +
+
+ +
+
+ + + + +
int frame_buffer::height
+
+ +

Definition at line 15 of file framebuffer.h.

+ +
+
+ +
+
+ + + + +
int frame_buffer::linelength
+
+ +

Definition at line 13 of file framebuffer.h.

+ +
+
+ +
+
+ + + + +
int frame_buffer::padding
+
+ +

Definition at line 12 of file framebuffer.h.

+ +
+
+ +
+
+ + + + +
struct fb_var_screeninfo frame_buffer::var_info
+
+ +

Definition at line 10 of file framebuffer.h.

+ +
+
+ +
+
+ + + + +
int frame_buffer::width
+
+ +

Definition at line 14 of file framebuffer.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structfwatch__client__t.html b/stage2/03-install-piaizu/files/fb/docs/html/structfwatch__client__t.html new file mode 100644 index 0000000..ac7cf63 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structfwatch__client__t.html @@ -0,0 +1,142 @@ + + + + + + +PiAIZU: fwatch_client_t Struct Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
fwatch_client_t Struct Reference
+
+
+ + + + + + +

+Data Fields

fwatch_cb_f cb
 
int fd
 
+

Detailed Description

+
+

Definition at line 27 of file fwatch.c.

+

Field Documentation

+ +
+
+ + + + +
fwatch_cb_f fwatch_client_t::cb
+
+ +

Definition at line 28 of file fwatch.c.

+ +
+
+ +
+
+ + + + +
int fwatch_client_t::fd
+
+ +

Definition at line 29 of file fwatch.c.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structfwatch__t.html b/stage2/03-install-piaizu/files/fb/docs/html/structfwatch__t.html new file mode 100644 index 0000000..e713862 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structfwatch__t.html @@ -0,0 +1,198 @@ + + + + + + +PiAIZU: fwatch_t Struct Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
fwatch_t Struct Reference
+
+
+
+Collaboration diagram for fwatch_t:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + + +

+Data Fields

unsigned int n_registered
 
fd_set rfds
 
struct timeval timeout
 
int maxfd
 
fwatch_client_t clients [FWATCH_CLIENTS_MAX]
 
+

Detailed Description

+
+

Definition at line 32 of file fwatch.c.

+

Field Documentation

+ +
+
+ + + + +
fwatch_client_t fwatch_t::clients[FWATCH_CLIENTS_MAX]
+
+ +

Definition at line 37 of file fwatch.c.

+ +
+
+ +
+
+ + + + +
int fwatch_t::maxfd
+
+ +

Definition at line 36 of file fwatch.c.

+ +
+
+ +
+
+ + + + +
unsigned int fwatch_t::n_registered
+
+ +

Definition at line 33 of file fwatch.c.

+ +
+
+ +
+
+ + + + +
fd_set fwatch_t::rfds
+
+ +

Definition at line 34 of file fwatch.c.

+ +
+
+ +
+
+ + + + +
struct timeval fwatch_t::timeout
+
+ +

Definition at line 35 of file fwatch.c.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structfwatch__t__coll__graph.map b/stage2/03-install-piaizu/files/fb/docs/html/structfwatch__t__coll__graph.map new file mode 100644 index 0000000..e9d44da --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structfwatch__t__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structfwatch__t__coll__graph.md5 b/stage2/03-install-piaizu/files/fb/docs/html/structfwatch__t__coll__graph.md5 new file mode 100644 index 0000000..799ddef --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structfwatch__t__coll__graph.md5 @@ -0,0 +1 @@ +6884cafe3444fc4215c01b892f6eec3c \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structfwatch__t__coll__graph.png b/stage2/03-install-piaizu/files/fb/docs/html/structfwatch__t__coll__graph.png new file mode 100644 index 0000000..bcf0a4f Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/structfwatch__t__coll__graph.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structgimp__bitmap__t.html b/stage2/03-install-piaizu/files/fb/docs/html/structgimp__bitmap__t.html new file mode 100644 index 0000000..87c10c1 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structgimp__bitmap__t.html @@ -0,0 +1,176 @@ + + + + + + +PiAIZU: gimp_bitmap_t Struct Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
gimp_bitmap_t Struct Reference
+
+
+ +

#include <container.h>

+ + + + + + + + + + +

+Data Fields

unsigned int width
 
unsigned int height
 
unsigned int bytes_per_pixel
 
unsigned char pixel_data []
 
+

Detailed Description

+
+

Definition at line 37 of file container.h.

+

Field Documentation

+ +
+
+ + + + +
unsigned int gimp_bitmap_t::bytes_per_pixel
+
+ +

Definition at line 40 of file container.h.

+ +
+
+ +
+
+ + + + +
unsigned int gimp_bitmap_t::height
+
+ +

Definition at line 39 of file container.h.

+ +
+
+ +
+
+ + + + +
unsigned char gimp_bitmap_t::pixel_data[]
+
+ +

Definition at line 41 of file container.h.

+ +
+
+ +
+
+ + + + +
unsigned int gimp_bitmap_t::width
+
+ +

Definition at line 38 of file container.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structkey__action__t.html b/stage2/03-install-piaizu/files/fb/docs/html/structkey__action__t.html new file mode 100644 index 0000000..5280e9e --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structkey__action__t.html @@ -0,0 +1,174 @@ + + + + + + +PiAIZU: key_action_t Struct Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
key_action_t Struct Reference
+
+
+ + + + + + + + + + +

+Data Fields

key_e key
 
struct timeval time_pressed
 
struct timeval time_released
 
double time_hold
 
+

Detailed Description

+
+

Definition at line 24 of file keys.c.

+

Field Documentation

+ +
+
+ + + + +
key_e key_action_t::key
+
+ +

Definition at line 25 of file keys.c.

+ +
+
+ +
+
+ + + + +
double key_action_t::time_hold
+
+ +

Definition at line 28 of file keys.c.

+ +
+
+ +
+
+ + + + +
struct timeval key_action_t::time_pressed
+
+ +

Definition at line 26 of file keys.c.

+ +
+
+ +
+
+ + + + +
struct timeval key_action_t::time_released
+
+ +

Definition at line 27 of file keys.c.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structkey__press__event__t.html b/stage2/03-install-piaizu/files/fb/docs/html/structkey__press__event__t.html new file mode 100644 index 0000000..2f3b679 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structkey__press__event__t.html @@ -0,0 +1,174 @@ + + + + + + +PiAIZU: key_press_event_t Struct Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
key_press_event_t Struct Reference
+
+
+ + + + + + + + + + +

+Data Fields

key_press_f cb
 
key_e key
 
double time
 
int handle
 
+

Detailed Description

+
+

Definition at line 31 of file keys.c.

+

Field Documentation

+ +
+
+ + + + +
key_press_f key_press_event_t::cb
+
+ +

Definition at line 32 of file keys.c.

+ +
+
+ +
+
+ + + + +
int key_press_event_t::handle
+
+ +

Definition at line 35 of file keys.c.

+ +
+
+ +
+
+ + + + +
key_e key_press_event_t::key
+
+ +

Definition at line 33 of file keys.c.

+ +
+
+ +
+
+ + + + +
double key_press_event_t::time
+
+ +

Definition at line 34 of file keys.c.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__header__t.html b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__header__t.html new file mode 100644 index 0000000..0242771 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__header__t.html @@ -0,0 +1,160 @@ + + + + + + +PiAIZU: socket_datagram_header_t Struct Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
socket_datagram_header_t Struct Reference
+
+
+ +

#include <lmxsocket.h>

+ + + + + + + + +

+Data Fields

socket_datagram_type_t type
 
int container
 
size_t size
 
+

Detailed Description

+
+

Definition at line 21 of file lmxsocket.h.

+

Field Documentation

+ +
+
+ + + + +
int socket_datagram_header_t::container
+
+ +

Definition at line 23 of file lmxsocket.h.

+ +
+
+ +
+
+ + + + +
size_t socket_datagram_header_t::size
+
+ +

Definition at line 24 of file lmxsocket.h.

+ +
+
+ +
+
+ + + + +
socket_datagram_type_t socket_datagram_header_t::type
+
+ +

Definition at line 22 of file lmxsocket.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__coordinate__t.html b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__coordinate__t.html new file mode 100644 index 0000000..a81d912 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__coordinate__t.html @@ -0,0 +1,153 @@ + + + + + + +PiAIZU: socket_datagram_lmx_coordinate_t Struct Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
socket_datagram_lmx_coordinate_t Struct Reference
+
+
+ +

#include <lmxsocket.h>

+
+Collaboration diagram for socket_datagram_lmx_coordinate_t:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + +

+Data Fields

socket_datagram_header_t header
 
coordinate_t coord
 
+

Detailed Description

+
+

Definition at line 32 of file lmxsocket.h.

+

Field Documentation

+ +
+
+ + + + +
coordinate_t socket_datagram_lmx_coordinate_t::coord
+
+ +

Definition at line 34 of file lmxsocket.h.

+ +
+
+ +
+
+ + + + +
socket_datagram_header_t socket_datagram_lmx_coordinate_t::header
+
+ +

Definition at line 33 of file lmxsocket.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__coordinate__t__coll__graph.map b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__coordinate__t__coll__graph.map new file mode 100644 index 0000000..845744b --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__coordinate__t__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__coordinate__t__coll__graph.md5 b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__coordinate__t__coll__graph.md5 new file mode 100644 index 0000000..2564d7c --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__coordinate__t__coll__graph.md5 @@ -0,0 +1 @@ +b3437ae7286568fdedccbe4cd37e7418 \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__coordinate__t__coll__graph.png b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__coordinate__t__coll__graph.png new file mode 100644 index 0000000..93bfd51 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__coordinate__t__coll__graph.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__info__t.html b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__info__t.html new file mode 100644 index 0000000..ae4fb23 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__info__t.html @@ -0,0 +1,169 @@ + + + + + + +PiAIZU: socket_datagram_lmx_info_t Struct Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
socket_datagram_lmx_info_t Struct Reference
+
+
+ +

#include <lmxsocket.h>

+
+Collaboration diagram for socket_datagram_lmx_info_t:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + +

+Data Fields

socket_datagram_header_t header
 
int n_containers
 
container_info_t containers []
 
+

Detailed Description

+
+

Definition at line 71 of file lmxsocket.h.

+

Field Documentation

+ +
+
+ + + + +
container_info_t socket_datagram_lmx_info_t::containers[]
+
+ +

Definition at line 74 of file lmxsocket.h.

+ +
+
+ +
+
+ + + + +
socket_datagram_header_t socket_datagram_lmx_info_t::header
+
+ +

Definition at line 72 of file lmxsocket.h.

+ +
+
+ +
+
+ + + + +
int socket_datagram_lmx_info_t::n_containers
+
+ +

Definition at line 73 of file lmxsocket.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__info__t__coll__graph.map b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__info__t__coll__graph.map new file mode 100644 index 0000000..93e9ce3 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__info__t__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__info__t__coll__graph.md5 b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__info__t__coll__graph.md5 new file mode 100644 index 0000000..155a78c --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__info__t__coll__graph.md5 @@ -0,0 +1 @@ +f68d8a40152b11f6f9d3656940ae2e5e \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__info__t__coll__graph.png b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__info__t__coll__graph.png new file mode 100644 index 0000000..487f9dd Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__info__t__coll__graph.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__move__t.html b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__move__t.html new file mode 100644 index 0000000..2001c04 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__move__t.html @@ -0,0 +1,152 @@ + + + + + + +PiAIZU: socket_datagram_lmx_move_t Struct Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
socket_datagram_lmx_move_t Struct Reference
+
+
+ +

#include <lmxsocket.h>

+
+Collaboration diagram for socket_datagram_lmx_move_t:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + +

+Data Fields

socket_datagram_header_t header
 
movment_e move
 
+

Detailed Description

+
+

Definition at line 49 of file lmxsocket.h.

+

Field Documentation

+ +
+
+ + + + +
socket_datagram_header_t socket_datagram_lmx_move_t::header
+
+ +

Definition at line 50 of file lmxsocket.h.

+ +
+
+ +
+
+ + + + +
movment_e socket_datagram_lmx_move_t::move
+
+ +

Definition at line 51 of file lmxsocket.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__move__t__coll__graph.map b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__move__t__coll__graph.map new file mode 100644 index 0000000..8edab45 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__move__t__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__move__t__coll__graph.md5 b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__move__t__coll__graph.md5 new file mode 100644 index 0000000..4c65b3b --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__move__t__coll__graph.md5 @@ -0,0 +1 @@ +9b902bc2e32b50611498dc5997c1a14f \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__move__t__coll__graph.png b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__move__t__coll__graph.png new file mode 100644 index 0000000..d9e6c19 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__move__t__coll__graph.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__text__t.html b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__text__t.html new file mode 100644 index 0000000..03bc62b --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__text__t.html @@ -0,0 +1,152 @@ + + + + + + +PiAIZU: socket_datagram_lmx_text_t Struct Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
socket_datagram_lmx_text_t Struct Reference
+
+
+ +

#include <lmxsocket.h>

+
+Collaboration diagram for socket_datagram_lmx_text_t:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + +

+Data Fields

socket_datagram_header_t header
 
char text [TEXT_LENGTH]
 
+

Detailed Description

+
+

Definition at line 54 of file lmxsocket.h.

+

Field Documentation

+ +
+
+ + + + +
socket_datagram_header_t socket_datagram_lmx_text_t::header
+
+ +

Definition at line 55 of file lmxsocket.h.

+ +
+
+ +
+
+ + + + +
char socket_datagram_lmx_text_t::text[TEXT_LENGTH]
+
+ +

Definition at line 56 of file lmxsocket.h.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__text__t__coll__graph.map b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__text__t__coll__graph.map new file mode 100644 index 0000000..3ce2379 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__text__t__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__text__t__coll__graph.md5 b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__text__t__coll__graph.md5 new file mode 100644 index 0000000..3f267ba --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__text__t__coll__graph.md5 @@ -0,0 +1 @@ +36465ec3a879c50eee59b83278d26d21 \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__text__t__coll__graph.png b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__text__t__coll__graph.png new file mode 100644 index 0000000..74efd57 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/structsocket__datagram__lmx__text__t__coll__graph.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/sync_off.png b/stage2/03-install-piaizu/files/fb/docs/html/sync_off.png new file mode 100644 index 0000000..3b443fc Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/sync_off.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/sync_on.png b/stage2/03-install-piaizu/files/fb/docs/html/sync_on.png new file mode 100644 index 0000000..e08320f Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/sync_on.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/tab_a.png b/stage2/03-install-piaizu/files/fb/docs/html/tab_a.png new file mode 100644 index 0000000..3b725c4 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/tab_a.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/tab_b.png b/stage2/03-install-piaizu/files/fb/docs/html/tab_b.png new file mode 100644 index 0000000..e2b4a86 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/tab_b.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/tab_h.png b/stage2/03-install-piaizu/files/fb/docs/html/tab_h.png new file mode 100644 index 0000000..fd5cb70 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/tab_h.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/tab_s.png b/stage2/03-install-piaizu/files/fb/docs/html/tab_s.png new file mode 100644 index 0000000..ab478c9 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/tab_s.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/tabs.css b/stage2/03-install-piaizu/files/fb/docs/html/tabs.css new file mode 100644 index 0000000..9cf578f --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/tabs.css @@ -0,0 +1,60 @@ +.tabs, .tabs2, .tabs3 { + background-image: url('tab_b.png'); + width: 100%; + z-index: 101; + font-size: 13px; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +.tabs2 { + font-size: 10px; +} +.tabs3 { + font-size: 9px; +} + +.tablist { + margin: 0; + padding: 0; + display: table; +} + +.tablist li { + float: left; + display: table-cell; + background-image: url('tab_b.png'); + line-height: 36px; + list-style: none; +} + +.tablist a { + display: block; + padding: 0 20px; + font-weight: bold; + background-image:url('tab_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #283A5D; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; + outline: none; +} + +.tabs3 .tablist a { + padding: 0 10px; +} + +.tablist a:hover { + background-image: url('tab_h.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + text-decoration: none; +} + +.tablist li.current a { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} diff --git a/stage2/03-install-piaizu/files/fb/docs/html/text_8c.html b/stage2/03-install-piaizu/files/fb/docs/html/text_8c.html new file mode 100644 index 0000000..7bf99e7 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/text_8c.html @@ -0,0 +1,295 @@ + + + + + + +PiAIZU: lib/text.c File Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
text.c File Reference
+
+
+
#include "text.h"
+#include "bmp.h"
+#include "container.h"
+#include "log.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+Include dependency graph for text.c:
+
+
+ + + + + + + +
+
+

Go to the source code of this file.

+ + + + +

+Data Structures

struct  font_character_t
 
+ + + + + + + +

+Macros

#define OFFSET_LOWERCASE   ('Z' - 'A') + 1
 
#define OFFSET_NUMBERS   OFFSET_LOWERCASE + ('z' - 'a') + 1
 
#define OFFSET_SPECIAL   OFFSET_NUMBERS + ('9' - '0') + 1
 
+ + + + + + + + + + + +

+Functions

void text_close ()
 
void text_init ()
 
font_character_ttext_get_char_font (char c)
 
gimp_bitmap_ttext_get_char_bitmap (char c)
 
void text_put (int container, char *string)
 
+

Macro Definition Documentation

+ +
+
+ + + + +
#define OFFSET_LOWERCASE   ('Z' - 'A') + 1
+
+ +

Definition at line 147 of file text.c.

+ +
+
+ +
+
+ + + + +
#define OFFSET_NUMBERS   OFFSET_LOWERCASE + ('z' - 'a') + 1
+
+ +

Definition at line 148 of file text.c.

+ +
+
+ +
+
+ + + + +
#define OFFSET_SPECIAL   OFFSET_NUMBERS + ('9' - '0') + 1
+
+ +

Definition at line 149 of file text.c.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + +
void text_close ()
+
+ +

Definition at line 88 of file text.c.

+ +
+
+ +
+
+ + + + + + + + +
gimp_bitmap_t* text_get_char_bitmap (char c)
+
+ +

Definition at line 166 of file text.c.

+ +
+
+ +
+
+ + + + + + + + +
font_character_t* text_get_char_font (char c)
+
+ +

Definition at line 151 of file text.c.

+ +
+
+ +
+
+ + + + + + + +
void text_init ()
+
+ +

Definition at line 99 of file text.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void text_put (int container,
char * string 
)
+
+ +

Definition at line 175 of file text.c.

+ +
+
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/text_8c__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/text_8c__incl.map new file mode 100644 index 0000000..baf2e2f --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/text_8c__incl.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/text_8c__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/text_8c__incl.md5 new file mode 100644 index 0000000..fcb6e14 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/text_8c__incl.md5 @@ -0,0 +1 @@ +5c8c5684f806ffef5953d7c635173dfa \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/text_8c__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/text_8c__incl.png new file mode 100644 index 0000000..b5c5860 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/text_8c__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/text_8c_source.html b/stage2/03-install-piaizu/files/fb/docs/html/text_8c_source.html new file mode 100644 index 0000000..0d44b8b --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/text_8c_source.html @@ -0,0 +1,128 @@ + + + + + + +PiAIZU: lib/text.c Source File + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
text.c
+
+
+Go to the documentation of this file.
1 #include "text.h"
2 #include "bmp.h"
3 #include "container.h"
4 #include "log.h"
5 #include <stdio.h>
6 #include <stdlib.h>
7 #include <string.h>
8 
9 typedef struct {
10  char character;
13  int width;
14  int height;
17 
18 static font_character_t alphabet_tbl[] = {
19  {.character = 'A', .offset_col = 0, .offset_row = 1, .width = 12, .height = 13, .font = NULL},
20  {.character = 'B', .offset_col = 14, .offset_row = 1, .width = 8, .height = 13, .font = NULL},
21  {.character = 'C', .offset_col = 25, .offset_row = 1, .width = 11, .height = 13, .font = NULL},
22  {.character = 'D', .offset_col = 39, .offset_row = 1, .width = 11, .height = 13, .font = NULL},
23  {.character = 'E', .offset_col = 53, .offset_row = 1, .width = 8, .height = 13, .font = NULL},
24  {.character = 'F', .offset_col = 64, .offset_row = 1, .width = 9, .height = 13, .font = NULL},
25  {.character = 'G', .offset_col = 73, .offset_row = 1, .width = 12, .height = 13, .font = NULL},
26  {.character = 'H', .offset_col = 88, .offset_row = 1, .width = 13, .height = 13, .font = NULL},
27  {.character = 'I', .offset_col = 102, .offset_row = 1, .width = 2, .height = 13, .font = NULL},
28  {.character = 'J', .offset_col = 105, .offset_row = 1, .width = 6, .height = 16, .font = NULL},
29  {.character = 'K', .offset_col = 114, .offset_row = 1, .width = 12, .height = 13, .font = NULL},
30  {.character = 'L', .offset_col = 125, .offset_row = 1, .width = 8, .height = 13, .font = NULL},
31  {.character = 'M', .offset_col = 135, .offset_row = 1, .width = 14, .height = 13, .font = NULL},
32  {.character = 'N', .offset_col = 152, .offset_row = 1, .width = 10, .height = 13, .font = NULL},
33  {.character = 'O', .offset_col = 164, .offset_row = 1, .width = 13, .height = 13, .font = NULL},
34  {.character = 'P', .offset_col = 180, .offset_row = 1, .width = 10, .height = 13, .font = NULL},
35  {.character = 'Q', .offset_col = 190, .offset_row = 1, .width = 13, .height = 15, .font = NULL},
36  {.character = 'R', .offset_col = 205, .offset_row = 1, .width = 11, .height = 13, .font = NULL},
37  {.character = 'S', .offset_col = 216, .offset_row = 1, .width = 11, .height = 13, .font = NULL},
38  {.character = 'T', .offset_col = 227, .offset_row = 1, .width = 13, .height = 13, .font = NULL},
39  {.character = 'U', .offset_col = 241, .offset_row = 1, .width = 11, .height = 13, .font = NULL},
40  {.character = 'V', .offset_col = 251, .offset_row = 1, .width = 14, .height = 13, .font = NULL},
41  {.character = 'W', .offset_col = 266, .offset_row = 1, .width = 16, .height = 13, .font = NULL},
42  {.character = 'X', .offset_col = 285, .offset_row = 1, .width = 12, .height = 13, .font = NULL},
43  {.character = 'Y', .offset_col = 297, .offset_row = 1, .width = 12, .height = 13, .font = NULL},
44  {.character = 'Z', .offset_col = 310, .offset_row = 1, .width = 12, .height = 13, .font = NULL},
45  /* Lower case */
46  {.character = 'a', .offset_col = 1, .offset_row = 22, .width = 9, .height = 16, .font = NULL},
47  {.character = 'b', .offset_col = 11, .offset_row = 22, .width = 10, .height = 16, .font = NULL},
48  {.character = 'c', .offset_col = 22, .offset_row = 22, .width = 9, .height = 16, .font = NULL},
49  {.character = 'd', .offset_col = 31, .offset_row = 22, .width = 9, .height = 16, .font = NULL},
50  {.character = 'e', .offset_col = 41, .offset_row = 22, .width = 10, .height = 16, .font = NULL},
51  {.character = 'f', .offset_col = 52, .offset_row = 22, .width = 7, .height = 16, .font = NULL},
52  {.character = 'g', .offset_col = 59, .offset_row = 22, .width = 10, .height = 20, .font = NULL},
53  {.character = 'h', .offset_col = 71, .offset_row = 22, .width = 8, .height = 16, .font = NULL},
54  {.character = 'i', .offset_col = 82, .offset_row = 22, .width = 3, .height = 16, .font = NULL},
55  {.character = 'j', .offset_col = 87, .offset_row = 22, .width = 4, .height = 20, .font = NULL},
56  {.character = 'k', .offset_col = 92, .offset_row = 22, .width = 8, .height = 16, .font = NULL},
57  {.character = 'l', .offset_col = 102, .offset_row = 22, .width = 4, .height = 16, .font = NULL},
58  {.character = 'm', .offset_col = 107, .offset_row = 22, .width = 15, .height = 16, .font = NULL},
59  {.character = 'n', .offset_col = 124, .offset_row = 22, .width = 8, .height = 16, .font = NULL},
60  {.character = 'o', .offset_col = 134, .offset_row = 22, .width = 10, .height = 16, .font = NULL},
61  {.character = 'p', .offset_col = 146, .offset_row = 22, .width = 10, .height = 20, .font = NULL},
62  {.character = 'q', .offset_col = 155, .offset_row = 22, .width = 12, .height = 20, .font = NULL},
63  {.character = 'r', .offset_col = 168, .offset_row = 22, .width = 7, .height = 16, .font = NULL},
64  {.character = 's', .offset_col = 175, .offset_row = 22, .width = 8, .height = 16, .font = NULL},
65  {.character = 't', .offset_col = 183, .offset_row = 22, .width = 8, .height = 16, .font = NULL},
66  {.character = 'u', .offset_col = 191, .offset_row = 22, .width = 9, .height = 16, .font = NULL},
67  {.character = 'v', .offset_col = 201, .offset_row = 22, .width = 10, .height = 16, .font = NULL},
68  {.character = 'w', .offset_col = 213, .offset_row = 22, .width = 12, .height = 16, .font = NULL},
69  {.character = 'x', .offset_col = 227, .offset_row = 22, .width = 12, .height = 16, .font = NULL},
70  {.character = 'y', .offset_col = 239, .offset_row = 22, .width = 10, .height = 20, .font = NULL},
71  {.character = 'z', .offset_col = 250, .offset_row = 22, .width = 12, .height = 16, .font = NULL},
72  {.character = '0', .offset_col = 0, .offset_row = 42, .width = 12, .height = 16, .font = NULL},
73  {.character = '1', .offset_col = 13, .offset_row = 42, .width = 8, .height = 16, .font = NULL},
74  {.character = '2', .offset_col = 23, .offset_row = 42, .width = 10, .height = 16, .font = NULL},
75  {.character = '3', .offset_col = 34, .offset_row = 42, .width = 9, .height = 16, .font = NULL},
76  {.character = '4', .offset_col = 44, .offset_row = 42, .width = 9, .height = 16, .font = NULL},
77  {.character = '5', .offset_col = 55, .offset_row = 42, .width = 9, .height = 16, .font = NULL},
78  {.character = '6', .offset_col = 66, .offset_row = 42, .width = 10, .height = 16, .font = NULL},
79  {.character = '7', .offset_col = 78, .offset_row = 42, .width = 10, .height = 16, .font = NULL},
80  {.character = '8', .offset_col = 89, .offset_row = 42, .width = 10, .height = 16, .font = NULL},
81  {.character = '9', .offset_col = 99, .offset_row = 42, .width = 10, .height = 16, .font = NULL},
82  {.character = '.', .offset_col = 230, .offset_row = 42, .width = 3, .height = 16, .font = NULL},
83  {.character = '/', .offset_col = 234, .offset_row = 44, .width = 7, .height = 16, .font = NULL},
84  {.character = ':', .offset_col = 248, .offset_row = 42, .width = 5, .height = 16, .font = NULL},
85 
86 };
87 
88 void text_close() {
89  unsigned int i;
90  for (i = 0; i < sizeof(alphabet_tbl) / sizeof(alphabet_tbl[0]); i++) {
91  if (alphabet_tbl[i].font != NULL) {
92  free(alphabet_tbl[i].font);
93  } else {
94  continue;
95  }
96  }
97 }
98 
99 void text_init() {
100  unsigned int i;
101  size_t charsize;
102  int x;
103  int y;
104  uint32_t(*destfont)[];
105  uint32_t(*srcfont)[];
106  gimp_bitmap_t *alphabet;
107 
108  long int dest_px = 0;
109  long int src_px = 0;
110 
111  i = bmp_open("graphics/alphabet.bmp", &alphabet);
112  if (i) {
113 
114  return;
115  }
116 
117  for (i = 0; i < sizeof(alphabet_tbl) / sizeof(alphabet_tbl[0]); i++) {
118  charsize = alphabet_tbl[i].width * alphabet_tbl[i].height * sizeof(rgba_t);
119  alphabet_tbl[i].font = calloc(charsize + sizeof(gimp_bitmap_t), 1);
120 
121  alphabet_tbl[i].font->width = alphabet_tbl[i].width;
122  alphabet_tbl[i].font->height = alphabet_tbl[i].height;
123  alphabet_tbl[i].font->bytes_per_pixel = sizeof(rgba_t);
124 
125  destfont = (uint32_t(*)[])alphabet_tbl[i].font->pixel_data;
126 
127  for (y = 0; y < alphabet_tbl[i].height; y++) {
128  for (x = 0; x < alphabet_tbl[i].width; x++) {
129 
130  src_px = (alphabet_tbl[i].offset_row + y) * alphabet->width;
131  src_px += alphabet_tbl[i].offset_col + x;
132 
133  srcfont = (uint32_t(*)[]) & alphabet->pixel_data;
134 
135  dest_px = y * alphabet_tbl[i].font->width;
136  dest_px += x;
137 
138  if (((*srcfont)[src_px] & 0xFFFF00) != 00) {
139  (*destfont)[dest_px] = (*srcfont)[src_px];
140  }
141  }
142  }
143  }
144  bmp_free(&alphabet);
145 }
146 
147 #define OFFSET_LOWERCASE ('Z' - 'A') + 1
148 #define OFFSET_NUMBERS OFFSET_LOWERCASE + ('z' - 'a') + 1
149 #define OFFSET_SPECIAL OFFSET_NUMBERS + ('9' - '0') + 1
150 
152  if (c >= 'a' && c <= 'z') {
153  return &alphabet_tbl[(c - 'a') + OFFSET_LOWERCASE];
154  } else if (c >= 'A' && c <= 'Z') {
155  return &alphabet_tbl[c - 'A'];
156  } else if (c >= '0' && c <= '9') {
157  return &alphabet_tbl[(c - '0') + OFFSET_NUMBERS];
158  } else if (c >= '.' && c <= '/') {
159  return &alphabet_tbl[(c - '.') + OFFSET_SPECIAL];
160  } else if (c == ':') {
161  return &alphabet_tbl[(c - ':') + OFFSET_SPECIAL + 2];
162  }
163  return NULL;
164 }
165 
167  font_character_t *f;
168  f = text_get_char_font(c);
169  if (f) {
170  return f->font;
171  }
172  return NULL;
173 }
174 
175 void text_put(int container, char *string) {
176  int strsize;
177  int i;
178  font_character_t *c;
179  int x = 0;
180  int y = 2;
181 
182  strsize = strlen(string);
183  for (i = 0; i < strsize; i++) {
184  if (string[i] == ' ') {
185  x = x + 7;
186  continue;
187  }
188  if (string[i] == '\n') {
189  y = y + 20;
190  x = 0;
191  continue;
192  }
193  c = text_get_char_font(string[i]);
194  if (c == NULL) {
195  continue;
196  }
197 
198  container_bitmap_at_xy(container, x, y, c->font, true);
199  x += c->width;
200  x++;
201  x++;
202  }
203 }
unsigned char pixel_data[]
Definition: container.h:41
+
gimp_bitmap_t * text_get_char_bitmap(char c)
Definition: text.c:166
+ +
uint8_t rgba_t[4]
Definition: container.h:6
+
unsigned int bytes_per_pixel
Definition: container.h:40
+
void text_close()
Definition: text.c:88
+
void text_put(int container, char *string)
Definition: text.c:175
+
void text_init()
Definition: text.c:99
+
unsigned int width
Definition: container.h:38
+ + +
int bmp_open(const char *file, gimp_bitmap_t **bitmap)
Definition: bmp.c:179
+ +
#define OFFSET_SPECIAL
Definition: text.c:149
+ +
int container_bitmap_at_xy(unsigned int container, int x, int y, gimp_bitmap_t *bm, bool transparent)
Definition: container.c:156
+
gimp_bitmap_t * font
Definition: text.c:15
+
unsigned int height
Definition: container.h:39
+
font_character_t * text_get_char_font(char c)
Definition: text.c:151
+
char character
Definition: text.c:10
+
void bmp_free(gimp_bitmap_t **bitmap)
Definition: bmp.c:183
+
int height
Definition: text.c:14
+ +
#define OFFSET_LOWERCASE
Definition: text.c:147
+
int offset_row
Definition: text.c:12
+ +
int offset_col
Definition: text.c:11
+
#define OFFSET_NUMBERS
Definition: text.c:148
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/text_8h.html b/stage2/03-install-piaizu/files/fb/docs/html/text_8h.html new file mode 100644 index 0000000..5ccbdb8 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/text_8h.html @@ -0,0 +1,197 @@ + + + + + + +PiAIZU: lib/text.h File Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
text.h File Reference
+
+
+
#include "container.h"
+
+Include dependency graph for text.h:
+
+
+ + + + +
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + + + +
+
+

Go to the source code of this file.

+ + + + + + + + +

+Functions

void text_init ()
 
void text_put (int container, char *string)
 
void text_close ()
 
+

Function Documentation

+ +
+
+ + + + + + + +
void text_close ()
+
+ +

Definition at line 88 of file text.c.

+ +
+
+ +
+
+ + + + + + + +
void text_init ()
+
+ +

Definition at line 99 of file text.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void text_put (int container,
char * string 
)
+
+ +

Definition at line 175 of file text.c.

+ +
+
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/text_8h__dep__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/text_8h__dep__incl.map new file mode 100644 index 0000000..f861dd7 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/text_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/text_8h__dep__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/text_8h__dep__incl.md5 new file mode 100644 index 0000000..d500c00 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/text_8h__dep__incl.md5 @@ -0,0 +1 @@ +2d232837d0beac601ac9e12403785344 \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/text_8h__dep__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/text_8h__dep__incl.png new file mode 100644 index 0000000..67540ba Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/text_8h__dep__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/text_8h__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/text_8h__incl.map new file mode 100644 index 0000000..3b94cb9 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/text_8h__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/text_8h__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/text_8h__incl.md5 new file mode 100644 index 0000000..3300958 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/text_8h__incl.md5 @@ -0,0 +1 @@ +798da4692c54ca6023d90d1de24987b0 \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/text_8h__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/text_8h__incl.png new file mode 100644 index 0000000..d64f8e2 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/text_8h__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/text_8h_source.html b/stage2/03-install-piaizu/files/fb/docs/html/text_8h_source.html new file mode 100644 index 0000000..f89577d --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/text_8h_source.html @@ -0,0 +1,104 @@ + + + + + + +PiAIZU: lib/text.h Source File + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
text.h
+
+
+Go to the documentation of this file.
1 #pragma once
2 
3 #include "container.h"
4 
5 void text_init();
6 
7 void text_put(int container, char *string);
8 
9 void text_close();
void text_put(int container, char *string)
Definition: text.c:175
+
void text_init()
Definition: text.c:99
+
void text_close()
Definition: text.c:88
+ +
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/version_8c.html b/stage2/03-install-piaizu/files/fb/docs/html/version_8c.html new file mode 100644 index 0000000..b2cda91 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/version_8c.html @@ -0,0 +1,160 @@ + + + + + + +PiAIZU: lib/version.c File Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
version.c File Reference
+
+
+
#include "version.h"
+#include "log.h"
+
+Include dependency graph for version.c:
+
+
+ + + + +
+
+

Go to the source code of this file.

+ + + + + + +

+Functions

char * version_git_get (void)
 
char * version_date_get (void)
 
+

Function Documentation

+ +
+
+ + + + + + + + +
char* version_date_get (void )
+
+ +

Definition at line 9 of file version.c.

+ +
+
+ +
+
+ + + + + + + + +
char* version_git_get (void )
+
+ +

Definition at line 4 of file version.c.

+ +
+
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/version_8c__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/version_8c__incl.map new file mode 100644 index 0000000..d959e44 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/version_8c__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/version_8c__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/version_8c__incl.md5 new file mode 100644 index 0000000..e308836 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/version_8c__incl.md5 @@ -0,0 +1 @@ +a3ed38198218cf6465dd81ac2a9f33b6 \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/version_8c__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/version_8c__incl.png new file mode 100644 index 0000000..97056ea Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/version_8c__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/version_8c_source.html b/stage2/03-install-piaizu/files/fb/docs/html/version_8c_source.html new file mode 100644 index 0000000..15ec1f9 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/version_8c_source.html @@ -0,0 +1,104 @@ + + + + + + +PiAIZU: lib/version.c Source File + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
version.c
+
+
+Go to the documentation of this file.
1 #include "version.h"
2 #include "log.h"
3 
4 char *version_git_get(void) {
5 
6  return GITSHA;
7 }
8 
9 char *version_date_get(void) {
10 
11  return DATE;
12 }
char * version_git_get(void)
Definition: version.c:4
+ + +
char * version_date_get(void)
Definition: version.c:9
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/version_8h.html b/stage2/03-install-piaizu/files/fb/docs/html/version_8h.html new file mode 100644 index 0000000..c404fcb --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/version_8h.html @@ -0,0 +1,157 @@ + + + + + + +PiAIZU: lib/version.h File Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
version.h File Reference
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + +
+
+

Go to the source code of this file.

+ + + + + + +

+Functions

char * version_git_get (void)
 
char * version_date_get (void)
 
+

Function Documentation

+ +
+
+ + + + + + + + +
char* version_date_get (void )
+
+ +

Definition at line 9 of file version.c.

+ +
+
+ +
+
+ + + + + + + + +
char* version_git_get (void )
+
+ +

Definition at line 4 of file version.c.

+ +
+
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/version_8h__dep__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/version_8h__dep__incl.map new file mode 100644 index 0000000..c9160b4 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/version_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/version_8h__dep__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/version_8h__dep__incl.md5 new file mode 100644 index 0000000..b3b317c --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/version_8h__dep__incl.md5 @@ -0,0 +1 @@ +13b5b91ca54bd9d5b499675ee2f5d74d \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/version_8h__dep__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/version_8h__dep__incl.png new file mode 100644 index 0000000..23f51f0 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/version_8h__dep__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/version_8h_source.html b/stage2/03-install-piaizu/files/fb/docs/html/version_8h_source.html new file mode 100644 index 0000000..734d528 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/version_8h_source.html @@ -0,0 +1,102 @@ + + + + + + +PiAIZU: lib/version.h Source File + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
version.h
+
+
+Go to the documentation of this file.
1 #pragma once
2 
3 char *version_git_get(void);
4 char *version_date_get(void);
char * version_git_get(void)
Definition: version.c:4
+
char * version_date_get(void)
Definition: version.c:9
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8c.html b/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8c.html new file mode 100644 index 0000000..90b65e4 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8c.html @@ -0,0 +1,254 @@ + + + + + + +PiAIZU: lib/webrequest.c File Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
webrequest.c File Reference
+
+
+
#include "fwatch.h"
+#include "lmxsocket.h"
+#include "log.h"
+#include "text.h"
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <sys/un.h>
+#include <unistd.h>
+
+Include dependency graph for webrequest.c:
+
+
+ + + + + + + + +
+
+

Go to the source code of this file.

+ + + + + + + + + + + + +

+Functions

void webrequest_update_text (unsigned int c, char *text)
 
void webrequest_update_crosshair (unsigned int c, coordinate_t *coord)
 
void webrequest_handle (int sock)
 
int webrequest_init ()
 
void webrequest_close ()
 
+

Function Documentation

+ +
+
+ + + + + + + +
void webrequest_close ()
+
+

Will close and clean used resources.

+ +

Definition at line 193 of file webrequest.c.

+ +
+
+ +
+
+ + + + + + + + +
void webrequest_handle (int sock)
+
+ +

Definition at line 31 of file webrequest.c.

+ +
+
+ +
+
+ + + + + + + +
int webrequest_init ()
+
+

Initiate the webrequest api. This function will register it self in the fwatch module.

+ +

Definition at line 165 of file webrequest.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void webrequest_update_crosshair (unsigned int c,
coordinate_tcoord 
)
+
+ +

Definition at line 22 of file webrequest.c.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void webrequest_update_text (unsigned int c,
char * text 
)
+
+ +

Definition at line 17 of file webrequest.c.

+ +
+
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8c__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8c__incl.map new file mode 100644 index 0000000..2b16c3e --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8c__incl.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8c__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8c__incl.md5 new file mode 100644 index 0000000..18a4d0d --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8c__incl.md5 @@ -0,0 +1 @@ +3ccdc1cb94bc4b047a96d5aedf056273 \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8c__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8c__incl.png new file mode 100644 index 0000000..1e0e4d6 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8c__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8c_source.html b/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8c_source.html new file mode 100644 index 0000000..e6bb030 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8c_source.html @@ -0,0 +1,168 @@ + + + + + + +PiAIZU: lib/webrequest.c Source File + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
webrequest.c
+
+
+Go to the documentation of this file.
1 #include "fwatch.h"
2 #include "lmxsocket.h"
3 #include "log.h"
4 #include "text.h"
5 #include <fcntl.h>
6 #include <stdio.h>
7 #include <stdlib.h>
8 #include <sys/socket.h>
9 #include <sys/stat.h>
10 #include <sys/types.h>
11 #include <sys/un.h>
12 #include <unistd.h>
13 
14 static int sock_fd; /* Just to be used when closing the file */
15 static coordinate_t current_coords = {.x = LMX_PIXEL_WIDTH / 2, .y = LMX_PIXEL_HEIGHT / 2};
16 
17 void webrequest_update_text(unsigned int c, char *text) {
18  container_reset(c);
19  text_put(c, text);
20 }
21 
22 void webrequest_update_crosshair(unsigned int c, coordinate_t *coord) {
23  container_reset(c);
24 
25  container_draw_line(c, 0, coord->y, LMX_PIXEL_WIDTH - 1, coord->y); /* Horisontal line */
26  container_draw_line(c, coord->x, 0, coord->x, LMX_PIXEL_HEIGHT - 1); /* Vertical line */
27  current_coords.x = coord->x;
28  current_coords.y = coord->y;
29 }
30 
31 void webrequest_handle(int sock) {
32  ssize_t readsize;
33  struct sockaddr_un src_addr;
34  socklen_t src_addr_len;
35  char buf[DATAGRAM_SIZE];
37 
38  src_addr_len = sizeof(struct sockaddr_un);
39  readsize = recvfrom(sock, buf, DATAGRAM_SIZE, 0, (struct sockaddr *)&src_addr, &src_addr_len);
40 
41  if (readsize < 0) {
42  LOG("Receiving datagram packet %d %m", sock);
43  exit(1);
44  }
45 
46  sdh = (void *)buf;
47 
48  switch (sdh->type) {
49  case SOCKET_DATAGRAM_TYPE_COORD: {
51  LOG("Received coordinate: %zd bytes \n=======\nx:%d y:%d\n=======\n", readsize, coord->coord.x,
52  coord->coord.y);
54  break;
55  }
56  case SOCKET_DATAGRAM_TYPE_MOVE: {
58  coordinate_t new_coord;
59  new_coord.x = current_coords.x;
60  new_coord.y = current_coords.y;
61 
62  switch (coord->move) {
63  case MOVE_UP:
64  if (new_coord.y) {
65  new_coord.y--;
66  }
67  break;
68  case MOVE_DOWN:
69  new_coord.y++;
70  break;
71  case MOVE_LEFT:
72  if (new_coord.x) {
73  new_coord.x--;
74  }
75  break;
76  case MOVE_RIGHT:
77  new_coord.x++;
78  break;
79  case MOVE_UP_LEFT:
80  if (new_coord.y) {
81  new_coord.y--;
82  }
83  if (new_coord.x) {
84  new_coord.x--;
85  }
86  break;
87  case MOVE_UP_RIGHT:
88  if (new_coord.y) {
89  new_coord.y--;
90  }
91  new_coord.x++;
92  break;
93  case MOVE_DOWN_LEFT:
94  if (new_coord.x) {
95  new_coord.x--;
96  }
97  new_coord.y++;
98  break;
99  case MOVE_DOWN_RIGHT:
100  new_coord.x++;
101  new_coord.y++;
102  break;
103  case MOVE_CLEAR:
104  container_reset(11);
105  return;
106  }
107  LOG("Received move: %zd bytes \n=======\nx:%d y:%d Container: %d\n=======\n", readsize, new_coord.x,
108  new_coord.y, coord->header.container);
109  webrequest_update_crosshair(coord->header.container, &new_coord);
110  break;
111  }
112  case SOCKET_DATAGRAM_TYPE_TEXT: {
114  LOG("Received text: %zd bytes \n=======\n%s\n=======\n", readsize, text->text);
115  webrequest_update_text(10, text->text);
116  break;
117  }
118 
119  case SOCKET_DATAGRAM_TYPE_INFO: {
120  int i, n;
121  socket_datagram_lmx_info_t *response;
122  container_t * c;
123  size_t s;
124 
125  n = container_get_n();
126  s = sizeof(socket_datagram_lmx_info_t) + (n * sizeof(container_info_t));
127 
128  response = malloc(s);
129 
130  response->header.type = SOCKET_DATAGRAM_TYPE_INFO;
131  response->header.size = s;
132  response->n_containers = n;
133  for (i = 0; i < n; i++) {
134  container_info_t *ci = &response->containers[i];
135  c = container_get(i);
136 
137  ci->x = c->x;
138  ci->y = c->y;
139  ci->width = c->width;
140  ci->height = c->height;
141  ci->transparent = c->transparent;
142  ci->visible = c->visible;
143  ci->frame = c->frame;
144  ci->framesize_mem = c->framesize_mem;
145  strncpy(ci->description, c->description, DESCRIPTION_LENGHT);
146  }
147 
148  LOG("Received info request: %zd bytes, sending response %zd bytes to "
149  "src_addr %s\n",
150  readsize, s, src_addr.sun_path);
151  if (sendto(sock, response, s, 0, (struct sockaddr *)&src_addr, src_addr_len) < 0) {
152  LOG("Error sending datagram message: %m\n");
153  }
154  free(response);
155  break;
156  }
157  default: {
158  LOG("Received: %zd bytes but command is not supported: %d\n", readsize, sdh->type);
159  break;
160  }
161  }
162  return;
163 }
164 
166 
167  int sock;
168  struct sockaddr_un name;
169 
170  /* Create socket from which to read. */
171  sock = socket(AF_UNIX, SOCK_DGRAM, 0);
172  if (sock < 0) {
173  perror("opening datagram socket");
174  return -1;
175  }
176 
177  /* Create name. */
178  name.sun_family = AF_UNIX;
179  strncpy(name.sun_path, SOCKET_NAME, sizeof(name.sun_path));
180 
181  /* Bind the UNIX domain address to the created socket */
182  if (bind(sock, (struct sockaddr *)&name, sizeof(struct sockaddr_un))) {
183  perror("binding name to datagram socket");
184  return -1;
185  }
186  chmod(SOCKET_NAME, 0777);
187 
189  sock_fd = sock;
190  return 0;
191 }
192 
194  close(sock_fd);
195  unlink(SOCKET_NAME);
196 }
container_info_t containers[]
Definition: lmxsocket.h:74
+
bool visible
Definition: container.h:23
+
char description[DESCRIPTION_LENGHT]
Definition: lmxsocket.h:68
+
int webrequest_init()
Definition: webrequest.c:165
+
#define LOG(str,...)
Definition: log.h:7
+ + +
#define LMX_PIXEL_WIDTH
Definition: container.h:8
+ + +
bool transparent
Definition: container.h:22
+ +
void text_put(int container, char *string)
Definition: text.c:175
+ +
container_t * container_get(int container)
Definition: container.c:190
+
int container_get_n(void)
Definition: container.c:193
+ +
uint16_t y
Definition: lmxsocket.h:29
+ +
void webrequest_update_crosshair(unsigned int c, coordinate_t *coord)
Definition: webrequest.c:22
+ +
size_t framesize_mem
Definition: lmxsocket.h:67
+
unsigned int height
Definition: lmxsocket.h:63
+
socket_datagram_type_t type
Definition: lmxsocket.h:22
+ + +
#define LMX_PIXEL_HEIGHT
Definition: container.h:9
+
int container_draw_line(unsigned int container, unsigned int from_x, unsigned int from_y, unsigned int to_x, unsigned int to_y)
Definition: container.c:271
+ +
unsigned int width
Definition: container.h:18
+
#define DATAGRAM_SIZE
Definition: lmxsocket.h:11
+ +
void container_reset(unsigned int container)
Definition: container.c:73
+ +
#define DESCRIPTION_LENGHT
Definition: lmxsocket.h:13
+ +
size_t framesize_mem
Definition: container.h:25
+
char text[TEXT_LENGTH]
Definition: lmxsocket.h:56
+
#define SOCKET_NAME
Definition: lmxsocket.h:10
+ + + +
uint16_t x
Definition: lmxsocket.h:28
+ +
unsigned int height
Definition: container.h:19
+
socket_datagram_header_t header
Definition: lmxsocket.h:50
+ + +
int fwatch_add(fwatch_cb_f cb, int fd, char *fname)
Definition: fwatch.c:42
+ + +
char frame
Definition: container.h:24
+
void webrequest_close()
Definition: webrequest.c:193
+ + +
char * description
Definition: container.h:27
+ + +
void webrequest_handle(int sock)
Definition: webrequest.c:31
+
void webrequest_update_text(unsigned int c, char *text)
Definition: webrequest.c:17
+ +
socket_datagram_header_t header
Definition: lmxsocket.h:72
+ + + + +
unsigned int width
Definition: lmxsocket.h:62
+ +
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8h.html b/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8h.html new file mode 100644 index 0000000..90d56b1 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8h.html @@ -0,0 +1,157 @@ + + + + + + +PiAIZU: lib/webrequest.h File Reference + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
webrequest.h File Reference
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + +
+
+

Go to the source code of this file.

+ + + + + + +

+Functions

int webrequest_init ()
 
void webrequest_close ()
 
+

Function Documentation

+ +
+
+ + + + + + + +
void webrequest_close ()
+
+

Will close and clean used resources.

+ +

Definition at line 193 of file webrequest.c.

+ +
+
+ +
+
+ + + + + + + +
int webrequest_init ()
+
+

Initiate the webrequest api. This function will register it self in the fwatch module.

+ +

Definition at line 165 of file webrequest.c.

+ +
+
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8h__dep__incl.map b/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8h__dep__incl.map new file mode 100644 index 0000000..d1ac3c0 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8h__dep__incl.md5 b/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8h__dep__incl.md5 new file mode 100644 index 0000000..64c2cdd --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8h__dep__incl.md5 @@ -0,0 +1 @@ +637930801d834a81f804c0a539ae25f3 \ No newline at end of file diff --git a/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8h__dep__incl.png b/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8h__dep__incl.png new file mode 100644 index 0000000..ff4534a Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8h__dep__incl.png differ diff --git a/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8h_source.html b/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8h_source.html new file mode 100644 index 0000000..c523c9f --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/docs/html/webrequest_8h_source.html @@ -0,0 +1,102 @@ + + + + + + +PiAIZU: lib/webrequest.h Source File + + + + + + + + + + +
+
+ + + + + + + +
+
PiAIZU +
+
+
+ + + + + + +
+
+ + +
+ +
+ + +
+
+
+
webrequest.h
+
+
+Go to the documentation of this file.
1 #pragma once
2 
3 /**
4  * Initiate the webrequest api. This function will register it self in the fwatch module.
5  */
6 int webrequest_init();
7 
8 /**
9  *
10  * Will close and clean used resources.
11  */
12 void webrequest_close();
int webrequest_init()
Definition: webrequest.c:165
+
void webrequest_close()
Definition: webrequest.c:193
+
+ + + + diff --git a/stage2/03-install-piaizu/files/fb/documentation.txt b/stage2/03-install-piaizu/files/fb/documentation.txt new file mode 100644 index 0000000..5e30884 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/documentation.txt @@ -0,0 +1,176 @@ +/*! \mainpage PiAIZU webserver + * LMX interactive page + * + * ``` + * Build date: Tue Nov 21 16:36:36 CET 2017 + * Git describe: 2017-07-05-raspbian-jessie-6-g68cdf34 + * ``` + * + * \section intro_sec Introduction + * + * You have now successfully connected to the Raspberry PIs webserver. + * This documentation has been compiled with Doxygen and will describe how to use + * this Raspberry PI to control the Sony LMX-001 display. This setup is called the PiAIZU. + * + * When this PiAIZU is powered up it boots Linux (Raspbian lite) and an sample application is started. This app will display an animation in the LMX-001 and some basic information. + * The PiAIZU will also act as a WiFi access point and since you can read this document you have probably already successfully connected to it. + * + * This setup has all the nescessary tools and compilers pre-installed to be able to both edit and recompile this sample application. + * + * A few useful tools that has been added: + * * GCC + * * Python + * * sshfs + * * gdb + * * gdb-server + * + * \subsection access How to access the Raspberry + * The Raspberry Pi has a SSH server running and it has been configured with a static IP address that is 192.168.1.1 + * To connect to the Raspberry Pi via ssh: + * + * **In Linux** + * + * Open a terminal and type: + * + * ``` + * ssh pi@192.168.1.1 + * ``` + * + * **In Windows** + * + * Download and install Putty and setup a SSH connection. + * + * **Password is: raspberry** + * + * \subsection about_sw About the sample application + * The sample application and library provided with source code and resides in: + * + * /home/pi/lmx_example + * + * It basically starts with memory mapping the framebuffer: + * + * /dev/fb0 + * + * and then a software layer is put over that to enable the user to specifiy layers or containers that the user then can put various + * kind of information in. This could be text, shapes like lines or dots, or fill the container with a bitmap image. + * Each container has x,y coordinate together with height and width. Each container can be set to be visible or hidden runtime. + * + * To start working the framebuffer needs to be mapped to memory, memory has to be allocated for the containers and some + * initialisation has do be done, this is done by calling the function: + * + * ``` + * container_new() + * ``` + * + * In the first version the containers are statically defined before compile time. This is done in the file: define_containers.h + * Every time a containers contents has been updated the whole container system needs to be compiled before the actual change is + * displayed on the screen. This is done by calling the funcion: + * ``` + * container_compile() + * ``` + * To close the system the funcion + * ``` + * container_close() + * ``` + * must be called to free all the allocated memory and to unmap the framebuffer. Similar approach has been used in the text/font system regarding init and close. + * + * There are various function to add or manipulate the contents of the containers. The handle for each container is basically an integer that is an index that points out which container it is in the array or container_t in define_containers.h. + * + * Functions to decode .bmp files has been implemented and tested on both 24 bit and 32 bit bmp files. The difference is basically that in the 32 bit case you have RGBA and in 24 bit it's only RGB information stored + * The 'A' in RGBA is not being used at the moment. + * + * A simple font has been added that supports uppercase and lower case letters together with numbers and only a few special characters. + * + * \subsection buttons_sec Buttons + * + * The shield connected to the Raspberry has two small button, a lib has been written to be able to register events from these buttons. + * Try to click the buttons while running the sample application to see, for events has been registered that will be trigged depending on + * how long each key press is and on what button. + * + * \subsection web_interface Webinterface + * + * The sample application has an interface to be able to receive commands from the web. To evaluate this functionality enter LMX interactive page. + * From here it is possible to send text and show a cross-hair cursor directly on the LMX-001 display. + * + * This functionality works like this: + * + * The web server (lighttpd) shows the LMX interactive page. When a button is clicked, a cgi script is called. + * The source code of this script is available in the sample applicationlication folder under /hopme/pi/lmx_example/cgi-src. + * This cgi script will via a UNIX socket in /tmp/lmx.socket connect to the LMX sample application. The sample application can also reply with data. + * + * \section install_sec Compilation + * + * The application consist of a library and two sample applicationlications. One written in C and one written in Python, they are called main.c and main.py. + * Both the main.c and main.py use the provided library. The whole buildsystem can be configured by changing the settings in settings.mk. + * For development it can be convenient to to set the flag + * ``` + * LDEXTRA=-Wl,-rpath,./lib/ + * ``` + * to tell the linker to use the locally built liblmx.so instead of the pre-installed one. This is done in settings.mk. + * + * The Makefile contains a few targets: + * - **all** Will build the sample application + * - **clean** Will remove all build files, binaries, object files. Compiled documentation is not affected + * - **format** Runs clang-format on all source, this requires clang-format to be installed which it isn't on the Raspberry + * - **install** Installs the lmx binary into /usr/bin and activates startup scripts in init.d + * - **dbg** Compiles the all with extra prints for debugging, forces a frame to be printed around all containers + * - **doc** Will run Doxygen to recompile this documentation, requires Doxygen to be installed + * - **analyze** Runs scan-build to perform a static code analysis + * + * It is possible to run this program on a Linux computer too. Then the sample applicationlication will + * use the PC:s framebuffer. On Ubuntu you will have to press Ctrl+Alt+F1 to get into a console. From there you can start the sample + * application and you will see the same output as if the program was used on the PiAIZU. + * Example app must first be recompiled for the x86 architecture for that to work, that is a matter of rebuilding it but doing that on + * the host computer. + * + * To simply rebuild the sample application, type: + * ``` + * make + * ``` + * + * to install your changes on the Raspberry Pi rootfs: + * ``` + * sudo make install + * ``` + * + * There are a few buildflags that can be added to get special functions: + * + * The following buildflag will mask out red and blue color, this is usefull when testing the software on a PC to get a + * picture more similar to the one in LMX-001. + * ``` + * SETTING+=-DGREEN_MONOCHROME + * ``` + * + * To convert a RGB BMP to green scale two methods are implemented, Average and Luminosity. To activate try one of the following: + * ``` + * SETTING+=-DGRAYSCALE_LUMINOSITY + * SETTING+=-DGRAYSCALE_AVERAGE + * ``` + * + * \section rebuild_sec Rebuilding Raspbian + * + * To update or add new packages to the Raspbian rootfs you either have to provide Internet to the Raspberry Pi or recompile the whole Raspbian. + * + * The modified Raspbian buildsystem is provided on the PiAIZU SD card image, it resides under: + * ``` + * /home/pi/piaizu_"v2.0.0" + * ``` + * the postfix is the git describe --tags output. In this directory you will find more information on how to rebuild the SD card image. + * + * + * Second option is to provide a Internet connection + * If you have two network connections on your PC you could most probably share your one Internet connection with while your WLAN is connected to the Raspberry Pi AP PiAIZU. + * To do that successfully you need to enable ip forwarding and setup your iptables for NAT. The Internet is full information on how to do this. + * + * \section changelog_sec Change log + * \version v2.1.0 + * - Minor changes to the container api + * - Added python sample application + * - Created a lib, (liblmx.so) of almost all sample application, leaving only main.c outside + * \version v2.0.0 + * - New webinterface + * \version v1.0.0 + * - First release + * + * + */ diff --git a/stage2/03-install-piaizu/files/fb/doxy.cfg b/stage2/03-install-piaizu/files/fb/doxy.cfg new file mode 100644 index 0000000..c513230 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/doxy.cfg @@ -0,0 +1,319 @@ +# Doxyfile 1.8.11 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = "PiAIZU" +PROJECT_NUMBER = +PROJECT_BRIEF = +PROJECT_LOGO = graphics/sonylogo.jpg +OUTPUT_DIRECTORY = ./docs +CREATE_SUBDIRS = NO +ALLOW_UNICODE_NAMES = NO +OUTPUT_LANGUAGE = English +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +QT_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 4 +ALIASES = +TCL_SUBST = +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = NO +OPTIMIZE_FOR_FORTRAN = NO +OPTIMIZE_OUTPUT_VHDL = NO +EXTENSION_MAPPING = +MARKDOWN_SUPPORT = YES +AUTOLINK_SUPPORT = YES +BUILTIN_STL_SUPPORT = NO +CPP_CLI_SUPPORT = NO +SIP_SUPPORT = NO +IDL_PROPERTY_SUPPORT = YES +DISTRIBUTE_GROUP_DOC = NO +GROUP_NESTED_COMPOUNDS = NO +SUBGROUPING = YES +INLINE_GROUPED_CLASSES = NO +INLINE_SIMPLE_STRUCTS = NO +TYPEDEF_HIDES_STRUCT = NO +LOOKUP_CACHE_SIZE = 0 +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = NO +EXTRACT_PACKAGE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +EXTRACT_ANON_NSPACES = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +HIDE_COMPOUND_REFERENCE= NO +SHOW_INCLUDE_FILES = YES +SHOW_GROUPED_MEMB_INC = NO +FORCE_LOCAL_INCLUDES = NO +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_MEMBERS_CTORS_1ST = NO +SORT_GROUP_NAMES = NO +SORT_BY_SCOPE_NAME = NO +STRICT_PROTO_MATCHING = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_FILES = YES +SHOW_NAMESPACES = YES +FILE_VERSION_FILTER = +LAYOUT_FILE = +CITE_BIB_FILES = +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_AS_ERROR = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = ./lib/ ./ ./cgi-src/ +INPUT_ENCODING = UTF-8 +FILE_PATTERNS = +RECURSIVE = NO +EXCLUDE = main.py +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXCLUDE_SYMBOLS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +FILTER_SOURCE_PATTERNS = +USE_MDFILE_AS_MAINPAGE = +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = YES +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = NO +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = NO +REFERENCES_LINK_SOURCE = YES +SOURCE_TOOLTIPS = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +CLANG_ASSISTED_PARSING = NO +CLANG_OPTIONS = +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_EXTRA_STYLESHEET = +HTML_EXTRA_FILES = cgi-src/lmxindex.html +HTML_COLORSTYLE_HUE = 220 +HTML_COLORSTYLE_SAT = 100 +HTML_COLORSTYLE_GAMMA = 80 +HTML_TIMESTAMP = NO +HTML_DYNAMIC_SECTIONS = NO +HTML_INDEX_NUM_ENTRIES = 100 +GENERATE_DOCSET = NO +DOCSET_FEEDNAME = "Doxygen generated docs" +DOCSET_BUNDLE_ID = org.doxygen.Project +DOCSET_PUBLISHER_ID = org.doxygen.Publisher +DOCSET_PUBLISHER_NAME = Publisher +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +CHM_INDEX_ENCODING = +BINARY_TOC = NO +TOC_EXPAND = NO +GENERATE_QHP = NO +QCH_FILE = +QHP_NAMESPACE = org.doxygen.Project +QHP_VIRTUAL_FOLDER = doc +QHP_CUST_FILTER_NAME = +QHP_CUST_FILTER_ATTRS = +QHP_SECT_FILTER_ATTRS = +QHG_LOCATION = +GENERATE_ECLIPSEHELP = NO +ECLIPSE_DOC_ID = org.doxygen.Project +DISABLE_INDEX = NO +GENERATE_TREEVIEW = NO +ENUM_VALUES_PER_LINE = 4 +TREEVIEW_WIDTH = 250 +EXT_LINKS_IN_WINDOW = NO +FORMULA_FONTSIZE = 10 +FORMULA_TRANSPARENT = YES +USE_MATHJAX = NO +MATHJAX_FORMAT = HTML-CSS +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest +MATHJAX_EXTENSIONS = +MATHJAX_CODEFILE = +SEARCHENGINE = YES +SERVER_BASED_SEARCH = NO +EXTERNAL_SEARCH = NO +SEARCHENGINE_URL = +SEARCHDATA_FILE = searchdata.xml +EXTERNAL_SEARCH_ID = +EXTRA_SEARCH_MAPPINGS = +#--------------------------------------------------------------------------- +# Configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4 +EXTRA_PACKAGES = +LATEX_HEADER = +LATEX_FOOTER = +LATEX_EXTRA_STYLESHEET = +LATEX_EXTRA_FILES = +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +LATEX_SOURCE_CODE = NO +LATEX_BIB_STYLE = plain +LATEX_TIMESTAMP = NO +#--------------------------------------------------------------------------- +# Configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +RTF_SOURCE_CODE = NO +#--------------------------------------------------------------------------- +# Configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_SUBDIR = +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# Configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# Configuration options related to the DOCBOOK output +#--------------------------------------------------------------------------- +GENERATE_DOCBOOK = NO +DOCBOOK_OUTPUT = docbook +DOCBOOK_PROGRAMLISTING = NO +#--------------------------------------------------------------------------- +# Configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# Configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = ./src/ +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration options related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +EXTERNAL_PAGES = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +MSCGEN_PATH = +DIA_PATH = +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = YES +DOT_NUM_THREADS = 0 +DOT_FONTNAME = Helvetica +DOT_FONTSIZE = 10 +DOT_FONTPATH = +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +UML_LIMIT_NUM_FIELDS = 10 +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +INTERACTIVE_SVG = NO +DOT_PATH = +DOTFILE_DIRS = +MSCFILE_DIRS = +DIAFILE_DIRS = +PLANTUML_JAR_PATH = +PLANTUML_INCLUDE_PATH = +DOT_GRAPH_MAX_NODES = 50 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES diff --git a/stage2/03-install-piaizu/files/fb/graphics/alphabet.bmp b/stage2/03-install-piaizu/files/fb/graphics/alphabet.bmp new file mode 100644 index 0000000..4d43476 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/alphabet.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/alphabet.xcf b/stage2/03-install-piaizu/files/fb/graphics/alphabet.xcf new file mode 100644 index 0000000..af1faa5 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/alphabet.xcf differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00001.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00001.bmp new file mode 100644 index 0000000..c13fa0a Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00001.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00002.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00002.bmp new file mode 100644 index 0000000..c13fa0a Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00002.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00003.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00003.bmp new file mode 100644 index 0000000..11b5b7b Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00003.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00004.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00004.bmp new file mode 100644 index 0000000..4fa24f7 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00004.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00005.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00005.bmp new file mode 100644 index 0000000..61d865f Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00005.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00006.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00006.bmp new file mode 100644 index 0000000..49cca74 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00006.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00007.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00007.bmp new file mode 100644 index 0000000..d15bc8c Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00007.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00008.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00008.bmp new file mode 100644 index 0000000..a24736e Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00008.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00009.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00009.bmp new file mode 100644 index 0000000..a241752 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00009.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00010.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00010.bmp new file mode 100644 index 0000000..43e1079 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00010.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00011.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00011.bmp new file mode 100644 index 0000000..ebbc484 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00011.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00012.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00012.bmp new file mode 100644 index 0000000..7d06a8e Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00012.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00013.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00013.bmp new file mode 100644 index 0000000..32a2cd4 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00013.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00014.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00014.bmp new file mode 100644 index 0000000..0e0f136 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00014.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00015.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00015.bmp new file mode 100644 index 0000000..ca86807 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00015.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00016.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00016.bmp new file mode 100644 index 0000000..5598647 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00016.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00017.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00017.bmp new file mode 100644 index 0000000..f638554 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00017.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00018.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00018.bmp new file mode 100644 index 0000000..1100d96 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00018.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00019.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00019.bmp new file mode 100644 index 0000000..66c62f4 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00019.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00020.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00020.bmp new file mode 100644 index 0000000..a6c10d9 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00020.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00021.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00021.bmp new file mode 100644 index 0000000..06eefa4 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00021.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00022.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00022.bmp new file mode 100644 index 0000000..6a84334 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00022.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00023.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00023.bmp new file mode 100644 index 0000000..8f87f18 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00023.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00024.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00024.bmp new file mode 100644 index 0000000..5f1e029 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00024.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00025.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00025.bmp new file mode 100644 index 0000000..d205926 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00025.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00026.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00026.bmp new file mode 100644 index 0000000..3a9edeb Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00026.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00027.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00027.bmp new file mode 100644 index 0000000..3ee477f Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00027.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00028.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00028.bmp new file mode 100644 index 0000000..3013c3b Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00028.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00029.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00029.bmp new file mode 100644 index 0000000..32dbbcc Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00029.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00030.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00030.bmp new file mode 100644 index 0000000..4cced8a Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00030.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00031.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00031.bmp new file mode 100644 index 0000000..8ffd631 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00031.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00032.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00032.bmp new file mode 100644 index 0000000..4c8341b Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00032.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00033.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00033.bmp new file mode 100644 index 0000000..7b6fa3d Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00033.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00034.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00034.bmp new file mode 100644 index 0000000..17df62d Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00034.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00035.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00035.bmp new file mode 100644 index 0000000..85f64c6 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00035.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00036.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00036.bmp new file mode 100644 index 0000000..7a85f36 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00036.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00037.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00037.bmp new file mode 100644 index 0000000..7794827 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00037.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00038.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00038.bmp new file mode 100644 index 0000000..290f681 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00038.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00039.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00039.bmp new file mode 100644 index 0000000..be7cb21 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00039.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00040.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00040.bmp new file mode 100644 index 0000000..820913d Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00040.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00041.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00041.bmp new file mode 100644 index 0000000..eb893f1 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00041.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00042.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00042.bmp new file mode 100644 index 0000000..f1d1c46 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00042.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00043.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00043.bmp new file mode 100644 index 0000000..9a7404d Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00043.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00044.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00044.bmp new file mode 100644 index 0000000..34a9618 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00044.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00045.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00045.bmp new file mode 100644 index 0000000..cd49665 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00045.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00046.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00046.bmp new file mode 100644 index 0000000..f2e087d Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00046.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00047.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00047.bmp new file mode 100644 index 0000000..05b9105 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00047.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00048.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00048.bmp new file mode 100644 index 0000000..f2ce447 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00048.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00049.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00049.bmp new file mode 100644 index 0000000..434b386 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00049.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00050.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00050.bmp new file mode 100644 index 0000000..6e91251 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00050.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00051.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00051.bmp new file mode 100644 index 0000000..29b27a4 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00051.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00052.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00052.bmp new file mode 100644 index 0000000..4c25f12 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00052.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00053.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00053.bmp new file mode 100644 index 0000000..84cc66b Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00053.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00054.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00054.bmp new file mode 100644 index 0000000..241b925 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00054.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00055.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00055.bmp new file mode 100644 index 0000000..74b14fc Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00055.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00056.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00056.bmp new file mode 100644 index 0000000..c4937b7 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00056.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00057.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00057.bmp new file mode 100644 index 0000000..e80eb91 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00057.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00058.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00058.bmp new file mode 100644 index 0000000..1798691 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00058.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00059.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00059.bmp new file mode 100644 index 0000000..6e685c8 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00059.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00060.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00060.bmp new file mode 100644 index 0000000..c5e6c72 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00060.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00061.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00061.bmp new file mode 100644 index 0000000..a3a36f4 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00061.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00062.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00062.bmp new file mode 100644 index 0000000..4518291 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00062.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00063.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00063.bmp new file mode 100644 index 0000000..8638597 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00063.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00064.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00064.bmp new file mode 100644 index 0000000..ccfa406 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00064.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00065.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00065.bmp new file mode 100644 index 0000000..7bff0c3 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00065.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00066.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00066.bmp new file mode 100644 index 0000000..95aca2a Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00066.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00067.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00067.bmp new file mode 100644 index 0000000..7a707c4 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00067.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00068.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00068.bmp new file mode 100644 index 0000000..6e84d36 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00068.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00069.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00069.bmp new file mode 100644 index 0000000..997dc1d Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00069.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00070.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00070.bmp new file mode 100644 index 0000000..92ef474 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00070.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00071.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00071.bmp new file mode 100644 index 0000000..3446988 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00071.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00072.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00072.bmp new file mode 100644 index 0000000..904e446 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00072.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00073.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00073.bmp new file mode 100644 index 0000000..3e4dcb1 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00073.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00074.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00074.bmp new file mode 100644 index 0000000..83a7634 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00074.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00075.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00075.bmp new file mode 100644 index 0000000..0d84a62 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00075.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00076.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00076.bmp new file mode 100644 index 0000000..9ac1a78 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00076.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00077.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00077.bmp new file mode 100644 index 0000000..472f568 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00077.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00078.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00078.bmp new file mode 100644 index 0000000..7e288ee Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00078.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00079.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00079.bmp new file mode 100644 index 0000000..bd14de6 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00079.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00080.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00080.bmp new file mode 100644 index 0000000..62b0a99 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00080.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00081.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00081.bmp new file mode 100644 index 0000000..76a7fd7 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00081.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00082.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00082.bmp new file mode 100644 index 0000000..f532be8 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00082.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00083.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00083.bmp new file mode 100644 index 0000000..a48e738 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00083.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00084.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00084.bmp new file mode 100644 index 0000000..493f53b Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00084.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00085.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00085.bmp new file mode 100644 index 0000000..3a41ed1 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00085.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00086.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00086.bmp new file mode 100644 index 0000000..83e4e26 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00086.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00087.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00087.bmp new file mode 100644 index 0000000..06c4247 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00087.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00088.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00088.bmp new file mode 100644 index 0000000..0ded5fb Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00088.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00089.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00089.bmp new file mode 100644 index 0000000..d1916db Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00089.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00090.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00090.bmp new file mode 100644 index 0000000..b4525b9 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00090.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00091.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00091.bmp new file mode 100644 index 0000000..055561b Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00091.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00092.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00092.bmp new file mode 100644 index 0000000..ddcefbb Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00092.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00093.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00093.bmp new file mode 100644 index 0000000..25aca6a Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00093.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00094.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00094.bmp new file mode 100644 index 0000000..e82c8a8 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00094.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00095.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00095.bmp new file mode 100644 index 0000000..063df77 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00095.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00096.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00096.bmp new file mode 100644 index 0000000..5d21829 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00096.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00097.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00097.bmp new file mode 100644 index 0000000..60c7384 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00097.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00098.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00098.bmp new file mode 100644 index 0000000..c89bd1f Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00098.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00099.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00099.bmp new file mode 100644 index 0000000..869c490 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00099.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00100.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00100.bmp new file mode 100644 index 0000000..cbda31d Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00100.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00101.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00101.bmp new file mode 100644 index 0000000..bbfa857 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00101.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00102.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00102.bmp new file mode 100644 index 0000000..b0805fb Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00102.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00103.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00103.bmp new file mode 100644 index 0000000..fb5030b Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00103.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00104.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00104.bmp new file mode 100644 index 0000000..4249ddd Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00104.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00105.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00105.bmp new file mode 100644 index 0000000..74ae492 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00105.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00106.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00106.bmp new file mode 100644 index 0000000..1bd2300 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00106.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00107.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00107.bmp new file mode 100644 index 0000000..6d7ef24 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00107.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00108.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00108.bmp new file mode 100644 index 0000000..54f8667 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00108.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00109.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00109.bmp new file mode 100644 index 0000000..9fa6be8 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00109.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00110.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00110.bmp new file mode 100644 index 0000000..c5dfe63 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00110.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00111.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00111.bmp new file mode 100644 index 0000000..4476d53 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00111.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00112.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00112.bmp new file mode 100644 index 0000000..a126ebf Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00112.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00113.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00113.bmp new file mode 100644 index 0000000..3e21f1e Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00113.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00114.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00114.bmp new file mode 100644 index 0000000..f0f31b1 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00114.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00115.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00115.bmp new file mode 100644 index 0000000..f80f752 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00115.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00116.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00116.bmp new file mode 100644 index 0000000..8f5ccf5 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00116.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00117.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00117.bmp new file mode 100644 index 0000000..4c10e96 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00117.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00118.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00118.bmp new file mode 100644 index 0000000..2e20401 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00118.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00119.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00119.bmp new file mode 100644 index 0000000..b559826 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00119.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00120.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00120.bmp new file mode 100644 index 0000000..d690bdf Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00120.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00121.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00121.bmp new file mode 100644 index 0000000..7f6bbc0 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00121.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00122.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00122.bmp new file mode 100644 index 0000000..e672aba Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00122.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00123.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00123.bmp new file mode 100644 index 0000000..8c2c2b4 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00123.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00124.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00124.bmp new file mode 100644 index 0000000..c3ac8fe Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00124.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00125.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00125.bmp new file mode 100644 index 0000000..c3ac8fe Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00125.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00126.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00126.bmp new file mode 100644 index 0000000..06559b7 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00126.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00127.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00127.bmp new file mode 100644 index 0000000..06559b7 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00127.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00128.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00128.bmp new file mode 100644 index 0000000..204733a Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00128.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00129.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00129.bmp new file mode 100644 index 0000000..1678177 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00129.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00130.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00130.bmp new file mode 100644 index 0000000..fb66953 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00130.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00131.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00131.bmp new file mode 100644 index 0000000..fb66953 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00131.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00132.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00132.bmp new file mode 100644 index 0000000..fb66953 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00132.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00133.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00133.bmp new file mode 100644 index 0000000..263a49f Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00133.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00134.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00134.bmp new file mode 100644 index 0000000..263a49f Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00134.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00135.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00135.bmp new file mode 100644 index 0000000..263a49f Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00135.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00136.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00136.bmp new file mode 100644 index 0000000..263a49f Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00136.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00137.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00137.bmp new file mode 100644 index 0000000..263a49f Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00137.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00138.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00138.bmp new file mode 100644 index 0000000..a2d5035 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00138.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00139.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00139.bmp new file mode 100644 index 0000000..a2d5035 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00139.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00140.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00140.bmp new file mode 100644 index 0000000..a2d5035 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00140.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00141.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00141.bmp new file mode 100644 index 0000000..a2d5035 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00141.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00142.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00142.bmp new file mode 100644 index 0000000..a2d5035 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00142.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00143.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00143.bmp new file mode 100644 index 0000000..a2d5035 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00143.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00144.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00144.bmp new file mode 100644 index 0000000..a2d5035 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00144.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00145.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00145.bmp new file mode 100644 index 0000000..6361b1a Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00145.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00146.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00146.bmp new file mode 100644 index 0000000..e87d7b5 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00146.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00147.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00147.bmp new file mode 100644 index 0000000..e87d7b5 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00147.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00148.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00148.bmp new file mode 100644 index 0000000..e87d7b5 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00148.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00149.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00149.bmp new file mode 100644 index 0000000..e87d7b5 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00149.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00150.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00150.bmp new file mode 100644 index 0000000..e87d7b5 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00150.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00151.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00151.bmp new file mode 100644 index 0000000..e87d7b5 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00151.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00152.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00152.bmp new file mode 100644 index 0000000..e87d7b5 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00152.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00153.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00153.bmp new file mode 100644 index 0000000..890ec09 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00153.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00154.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00154.bmp new file mode 100644 index 0000000..9827d3d Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00154.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00155.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00155.bmp new file mode 100644 index 0000000..9827d3d Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00155.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00156.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00156.bmp new file mode 100644 index 0000000..3f27d11 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00156.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00157.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00157.bmp new file mode 100644 index 0000000..3f27d11 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00157.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00158.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00158.bmp new file mode 100644 index 0000000..3f27d11 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00158.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00159.bmp b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00159.bmp new file mode 100644 index 0000000..3f27d11 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/anim/sonylogo_00159.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/python.bmp b/stage2/03-install-piaizu/files/fb/graphics/python.bmp new file mode 100644 index 0000000..8e20d3a Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/python.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/sonylogo.bmp b/stage2/03-install-piaizu/files/fb/graphics/sonylogo.bmp new file mode 100644 index 0000000..0eac19f Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/sonylogo.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/sonylogo.jpg b/stage2/03-install-piaizu/files/fb/graphics/sonylogo.jpg new file mode 100644 index 0000000..b93bfa0 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/sonylogo.jpg differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/wifi_ap_a.bmp b/stage2/03-install-piaizu/files/fb/graphics/wifi_ap_a.bmp new file mode 100644 index 0000000..160ef14 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/wifi_ap_a.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/wifi_ap_b.bmp b/stage2/03-install-piaizu/files/fb/graphics/wifi_ap_b.bmp new file mode 100644 index 0000000..b597a81 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/wifi_ap_b.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/wifi_ap_c.bmp b/stage2/03-install-piaizu/files/fb/graphics/wifi_ap_c.bmp new file mode 100644 index 0000000..a766955 Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/wifi_ap_c.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/graphics/wifi_ap_d.bmp b/stage2/03-install-piaizu/files/fb/graphics/wifi_ap_d.bmp new file mode 100644 index 0000000..07de33d Binary files /dev/null and b/stage2/03-install-piaizu/files/fb/graphics/wifi_ap_d.bmp differ diff --git a/stage2/03-install-piaizu/files/fb/lib/Makefile b/stage2/03-install-piaizu/files/fb/lib/Makefile new file mode 100644 index 0000000..f46465b --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/lib/Makefile @@ -0,0 +1,44 @@ +.phony: clean format install dbg doc all analyze + +VERSION = $(shell git rev-parse HEAD) +DATE = $(shell date) + +SOURCE = $(wildcard *.c) +OBJS = $(SOURCE:.c=.o) +HEADERS = $(wildcard ./*.h) $(wildcard ../cgi-src/*.h) + +CFLAGS +=-Wall -std=c11 -D_DEFAULT_SOURCE -D_GNU_SOURCE -Wextra -Werror -fPIC +CFLAGS += -DGITSHA='"$(VERSION)"' -DDATE='"$(DATE)"' -I../cgi-src/ $(DBG_FLAGS) $(SETTING) + +include ../settings.mk + +LDFLAGS = -shared +PREFIX ?= / + +LIBLMX=liblmx.so + +CC ?= gcc + +all: $(LIBLMX) + +dbg: + $(MAKE) $(LIBLMX) DBG_FLAGS="-DDBG -O0 -save-temps -g" + +$(OBJS): $(SOURCE) $(HEADERS) + +$(LIBLMX): $(OBJS) + $(CC) -o $@ $^ $(LDFLAGS) + +format: $(SOURCE) $(HEADERS) + clang-format -i $^ + +install: $(LIBLMX) + install -vm 755 $(LIBLMX) $(PREFIX)/usr/lib/ + install -vm 444 *.h $(PREFIX)/usr/include/ + ldconfig + +analyze: clean + scan-build -analyze-headers -enable-checker alpha -enable-checker unix -enable-checker security -enable-checker deadcode -enable-checker nullability make + +clean: + -rm $(LIBLMX) *.o *.i *.s diff --git a/stage2/03-install-piaizu/files/fb/lib/bmp.c b/stage2/03-install-piaizu/files/fb/lib/bmp.c new file mode 100644 index 0000000..ee8ef2a --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/lib/bmp.c @@ -0,0 +1,188 @@ +#include "container.h" +#include "framebuffer.h" +#include "log.h" +#include +#include +#include +#include +/* + offset size description + 00 2 signature, must be 4D42 hex + 02 4 size of BMP file in bytes (unreliable) + 06 2 reserved, must be zero + 08 2 reserved, must be zero + 10 4 offset to start of image data in bytes + 14 4 size of BITMAPINFOHEADER structure, must be 40. + 18 4 image width in pixels + 22 4 image height in pixels + 26 2 number of planes in the image, must be 1. + 28 2 number of bits per pixel (1, 4, 8, or 24) + 30 4 compression type (0=none, 1=RLE-8, 2=RLE-4) + 34 4 size of image data in bytes (including padding) + 38 4 horizontal resolution in pixels per meter (unreliable) + 42 4 vertical resolution in pixels per meter (unreliable) + 46 4 number of colors in image, or zero + 50 4 number of important colors, or zero +*/ + +// clang-format off +#if GRAYSCALE_LUMINOSITY + + #define GRAY_SCALE(rgb) \ + (((((((rgb) & 0x000000FF) * 7) + /*B*/ \ + ((((rgb) >> 8) & 0x000000FF) * 72) + /*G*/ \ + ((((rgb) >> 16) & 0x000000FF) * 21) ) / 100) << 8) & /*R*/ \ + 0x0000FF00) + +#elif GRAYSCALE_AVERAGE + + #define GRAY_SCALE(rgb) \ + (((((((rgb) & 0x000000FF)) + /*B*/ \ + ((((rgb) >> 8) & 0x000000FF)) + /*G*/ \ + ((((rgb) >> 16) & 0x000000FF)) ) / 3) << 8) & /*R*/ \ + 0x0000FF00) + +#else + + #define GRAY_SCALE(rgb) (rgb) + +#endif +// clang-format on + +#pragma pack(2) +typedef struct { + + uint8_t signature[2]; + uint32_t filesize; + uint16_t reserved_a; + uint16_t reserved_b; + uint32_t data_offset; + uint32_t header_size; + uint32_t width; + uint32_t height; + uint16_t planes; + uint16_t bits_per_pixel; + uint32_t compression; + uint32_t img_size_bytes; + uint32_t x_res; + uint32_t y_res; + uint32_t n_colors; + uint32_t n_important_colors; + +} bmp_header_t; + +int bmp_open_path(const char *path, const char *file, gimp_bitmap_t **bitmap) { + bmp_header_t header; + char filepath[255]; + ssize_t n; + unsigned char *bmp_data = NULL; + + int fd; + + if (bitmap == NULL) { + return -1; + } + sprintf(filepath, "%s/%s", path, file); + fd = open(filepath, O_RDONLY); + if (fd == -1) { + LOG("Couldn't open %s %m\n", filepath); + return -1; + } + + lseek(fd, 0L, SEEK_SET); + + n = read(fd, &header, sizeof(header)); + if (n == -1) { + LOG("Error reading filepath: %m"); + } + + bmp_data = calloc(header.img_size_bytes + sizeof(gimp_bitmap_t), 1); + if (bmp_data == NULL) { + return -1; + } + + *bitmap = calloc((header.height * (header.width + 2) * 4) + sizeof(gimp_bitmap_t), 1); + if (*bitmap == NULL) { + + free(bmp_data); + return -1; + } + + (*bitmap)->width = header.width; + (*bitmap)->height = header.height; + + (*bitmap)->bytes_per_pixel = 4; /* We use RGBA in as STD */ + + lseek(fd, header.data_offset, SEEK_SET); + n = read(fd, bmp_data, header.img_size_bytes); + if (n == -1) { + LOG("Error reading file %m\n"); + return n; + } + close(fd); + +#ifdef DBG + LOG("\nFilename: %s\nsignature: %c%c \n" + "filesize: %d\n" + "reserved_a: %d\n" + "reserved_b: %d\n" + "data_offset: 0x%x\n" + "header_size: %d\n" + "width: %d\n" + "height: %d\n" + "planes: %d\n" + "bits_per_pixel: %d\n" + "compression: %d\n" + "img_size_bytes: %d\n" + "x_res: %d\n" + "y_res: %d\n" + "n_colors: %d\n" + "n_important_colors: %d\n", + filepath, header.signature[0], header.signature[1], header.filesize, header.reserved_a, header.reserved_b, + header.data_offset, header.header_size, header.width, header.height, header.planes, header.bits_per_pixel, + header.compression, header.img_size_bytes, header.x_res, header.y_res, header.n_colors, + header.n_important_colors); +#endif + { + unsigned int x, y; + int padding = 0; + + if ((header.width * (header.bits_per_pixel / 8)) % 4) { + padding = 4 - (header.width * (header.bits_per_pixel / 8)) % 4; + } + + for (y = 0; y < ((*bitmap)->height); y++) { + for (x = 0; x < (*bitmap)->width; x++) { + + uint32_t *src; + uint32_t *dst; + + src = (uint32_t *)&bmp_data[(x * (header.bits_per_pixel / 8)) + + ((((header.height - 1) - y) * header.width) * (header.bits_per_pixel / 8)) + + (((header.height - 1) - y) * padding)]; + + dst = (uint32_t *)&(*bitmap)->pixel_data[(y * ((*bitmap)->width) + x) * (*bitmap)->bytes_per_pixel]; + + if (header.bits_per_pixel == 32) { + *dst = GRAY_SCALE((*src >> 8)); + } else { + *dst = GRAY_SCALE((*src)); + } + } + } + free(bmp_data); + } + + return 0; +} + +int bmp_open(const char *file, gimp_bitmap_t **bitmap) { + return bmp_open_path(".", file, bitmap); +} + +void bmp_free(gimp_bitmap_t **bitmap) { + if (bitmap) { + free(*bitmap); + *bitmap = NULL; + } +} diff --git a/stage2/03-install-piaizu/files/fb/lib/bmp.h b/stage2/03-install-piaizu/files/fb/lib/bmp.h new file mode 100644 index 0000000..ab54d88 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/lib/bmp.h @@ -0,0 +1,32 @@ +#pragma once +#include "container.h" + +/** + * + * @param file filename to open, like logo.bmp + * @param bitmap bitmap that later can be used in a container + * @return Returns 0 on success, -1 on failure. + * + * Opens a .bmp file, decodes it and creates a gimp_bitmap_t bitmap + * that can be printed in a container. + */ +int bmp_open(const char *file, gimp_bitmap_t **bitmap); + +/** + * @param path path to file + * @param file filename to open, like logo.bmp + * @param bitmap bitmap that later can be used in a container + * @return Returns 0 on success, -1 on failure. + * + * Opens a .bmp file, decodes it and creates a gimp_bitmap_t bitmap + * that can be printed in a container. + */ +int bmp_open_path(const char *path, const char *file, gimp_bitmap_t **bitmap); + +/** + * + * @param bitmap bitmap to destroy and free + * + * Frees the bitmap and sets the pointer to null. + */ +void bmp_free(gimp_bitmap_t **bitmap); diff --git a/stage2/03-install-piaizu/files/fb/lib/container.c b/stage2/03-install-piaizu/files/fb/lib/container.c new file mode 100644 index 0000000..a79993e --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/lib/container.c @@ -0,0 +1,308 @@ +#include "container.h" +#include "log.h" +#include +#include +#include + +#define ALPHA 3 +#define RED 2 +#define GREEN 1 +#define BLUE 0 + +#if DBG +#define FRAMES_VISIBLE(x) 1 +#else +#define FRAMES_VISIBLE(x) x +#endif + +static containers_t default_container_data = { + .n = 2, + .c = + { + { + /* 0 master layer */ + .x = 0, + .y = 0, + .width = LMX_PIXEL_WIDTH, + .height = LMX_PIXEL_HEIGHT, + .bits_per_pixel = 32, + .transparent = false, + .visible = true, + .frame = FRAMES_VISIBLE(0), + .bg_color = {0x00, 0x00, 0x00, 0x00}, + .description = "Master container, copy of HW framebuffer", + .data = NULL, + }, + { + /* 1 */ + .x = 0, + .y = 0, + .width = LMX_PIXEL_WIDTH, + .height = LMX_PIXEL_HEIGHT, + .bits_per_pixel = 32, + .transparent = false, + .visible = true, + .frame = FRAMES_VISIBLE(0), + .bg_color = {0x00, 0x00, 0x00, 0x00}, + .description = "Full screen", + .data = NULL, + }, + }, +}; + +static containers_t *container_data; + +#ifdef GREEN_MONOCHROME +#define RGB_BITMASK 0x0000FF00 +#else +#define RGB_BITMASK 0x00FFFFFF +#endif + +/* Static functions*/ +int container_valid(unsigned int container) { + if (container == 0 || container >= container_data->n) { + return -1; + } else { + return 0; + } +} + +/* Public functions */ +container_t *container_get(int container); + +void container_reset(unsigned int container) { + + memset(container_get(container)->data, 0x00, container_get(container)->framesize_mem); + + if (container_get(container)->frame) { + container_draw_line(container, 0, 0, container_get(container)->width - 1, 0); + container_draw_line(container, 0, container_get(container)->height - 1, container_get(container)->width - 1, + container_get(container)->height - 1); + container_draw_line(container, 0, 1, 0, container_get(container)->height - 1); + + container_draw_line(container, container_get(container)->width - 1, 0, container_get(container)->width - 1, + container_get(container)->height - 1); + } +} + +static inline int container_get_pixel(unsigned int c, int col, int row, uint32_t *rgba) { + uint32_t *px; + + px = (uint32_t *)container_data->c[c].data; + + *rgba = px[(col + row * (container_data->c[c].width + container_data->c[c].padding))]; + + return 0; +} + +static inline int container_set_pixel(unsigned int c, int col, int row, uint32_t rgba) { + + uint32_t *px; + + px = (uint32_t *)container_data->c[c].data; + + px[(col + row * (container_data->c[c].width + container_data->c[c].padding))] = rgba & RGB_BITMASK; + + return 0; +} + +void container_visible(unsigned int container, bool visible) { + if (container_valid(container)) { + return; + } + +#ifdef DBG + LOG("Container: %d is %s\n", container, visible ? "Visible" : "Invisible"); +#endif + container_data->c[container].visible = visible; + return; +} + +int container_compile() { + + unsigned int c = 0; + + for (c = 1; c < container_data->n; c++) { + if (!container_data->c[c].visible) { + continue; + } + + for (unsigned int row = 0; row < container_data->c[c].height; row++) { + for (unsigned int col = 0; col < container_data->c[c].width; col++) { + uint32_t rgba; + + container_get_pixel(c, col, row, &rgba); + if (container_data->c[c].transparent) { + if ((rgba & 0x00FFFFFF) == 0x00) { + continue; + } + } +#ifdef ROTATE_180 + container_set_pixel(0, (container_data->c[0].width - 1) - (container_data->c[c].x + col), + (container_data->c[0].height - 1) - (container_data->c[c].y + row), rgba); +#else + container_set_pixel(0, container_data->c[c].x + col, container_data->c[c].y + row, rgba); +#endif + } + } + } + + framebuffer_update(container_data->c[0].data); + memset(container_data->c[0].data, 0x00, + container_data->c[0].width * container_data->c[0].height * sizeof(uint8_t) * 4); + return 0; +} + +int container_bitmap_at_xy(unsigned int container, int x, int y, gimp_bitmap_t *bm, bool transparent) { + unsigned int w; + unsigned int h; + + uint32_t *px; + + if (container_valid(container)) { + return -1; + } + if (bm == NULL) { + return -1; + } + + for (h = 0; h < bm->height; h++) { + + for (w = 0; w < bm->width; w++) { + px = (uint32_t *)bm->pixel_data; + if (transparent) { + if ((px[(w + h * bm->width)] & 0x00FFFFFF) == 0x00) { + continue; + } + } + + container_set_pixel(container, w + x, y + h, px[(w + h * bm->width)]); + } + } + + return 0; +} + +int container_fill_bitmap(unsigned int container, gimp_bitmap_t *bm, bool transparent) { + return container_bitmap_at_xy(container, 0, 0, bm, transparent); +} + +container_t *container_get(int container) { + return &container_data->c[container]; +} +int container_get_n(void) { + return container_data->n; +} + +void container_close() { + unsigned int i; + for (i = 0; i < container_data->n; i++) { + container_t *l = &container_data->c[i]; + if (l->data) { + free(l->data); + } + } + free(container_data); + destroy_frame_buffer(); +} + +void container_new(containers_t *containers) { + /* Initialise all containers */ + unsigned int i; + struct frame_buffer fb; + size_t total_bytes = 0; + + fb = new_frame_buffer(); + + if (containers == NULL) { + size_t s = sizeof(containers_t) + default_container_data.n * sizeof(container_t); + container_data = malloc(s); + memcpy(container_data, &default_container_data, s); + + } else { + size_t s = sizeof(containers_t) + containers->n * sizeof(container_t); + + container_data = malloc(s); + memcpy(container_data, containers, s); + } + + for (i = 0; i < container_data->n; i++) { + void * data; + size_t allocsize = 0; + container_t *l = &container_data->c[i]; + + /* Layer 0 must have same dimension than the framebuffer */ + if (i == 0) { + allocsize = fb.buffer_size; + l->width = fb.width; + l->height = fb.height; + l->padding = fb.padding; + } else { + allocsize = (l->width) * l->height * (fb.var_info.bits_per_pixel / 8); + l->padding = 0; + } + + data = calloc(allocsize, 1); /** todo Do not allocate this amount for each container. */ + + l->framesize_mem = allocsize; + total_bytes += l->framesize_mem; + LOG("Container %02d: % 5d x% 5d bits/pix %d Visible: %s Transparent: %s " + "size: % 8zd bytes padding: %2d %s\n", + i, l->width, l->height, fb.var_info.bits_per_pixel, l->visible ? "True " : "False", + l->transparent ? "True " : "False", l->framesize_mem, l->padding, l->description); + + /* All containers must have same color format, at least to start with */ + l->bits_per_pixel = fb.var_info.bits_per_pixel; + l->data = data; + + container_reset(i); + } + LOG("Total bytes allocated to %zd containers is: %zd bytes\n", container_data->n - 1, total_bytes); +} + +void container_move(unsigned int container, int delta_x, int delta_y) { + if (container_valid(container)) { + return; + } + container_data->c[container].x += delta_x; + container_data->c[container].y += delta_y; +} + +int container_draw_line( + unsigned int container, unsigned int from_x, unsigned int from_y, unsigned int to_x, unsigned int to_y) { + double k; + int m; + unsigned int x, y; + uint32_t rgba = 0x0; + + if (container_valid(container)) { + return -1; + } + if (to_x >= container_data->c[container].width || to_y >= container_data->c[container].height || + from_x >= container_data->c[container].width || from_y >= container_data->c[container].height) { + return -1; + } + + rgba = 0x0000FF00; + + if ((to_x - from_x) == 0) { + + for (y = from_y; y < to_y; y++) { + container_set_pixel(container, to_x, y, rgba); + } + + return 0; + } + + k = (double)to_y - from_y; + k = k / (to_x - from_x); + + m = (to_y - k * to_x); + + for (x = from_x; x <= to_x; x++) { + y = (k * x) + m; + container_set_pixel(container, x, y, rgba); + } + + return 0; +} diff --git a/stage2/03-install-piaizu/files/fb/lib/container.h b/stage2/03-install-piaizu/files/fb/lib/container.h new file mode 100644 index 0000000..21a2558 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/lib/container.h @@ -0,0 +1,145 @@ +#pragma once + +#include "framebuffer.h" +#include + +typedef uint8_t rgba_t[4]; + +#define LMX_PIXEL_WIDTH 419 +#define LMX_PIXEL_HEIGHT 138 + +#define LMX_W LMX_PIXEL_WIDTH +#define LMX_H LMX_PIXEL_HEIGHT + +typedef struct { + int handle; + int x; + int y; + unsigned int width; + unsigned int height; + int bits_per_pixel; + int padding; + bool transparent; + bool visible; + char frame; + size_t framesize_mem; + rgba_t bg_color; + char * description; + uint8_t (*data)[]; +} container_t; + +typedef struct { + size_t n; + container_t c[]; +} containers_t; + +#pragma pack(2) +typedef struct { + unsigned int width; + unsigned int height; + unsigned int bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA */ + unsigned char pixel_data[]; +} gimp_bitmap_t; + +/** + * + * Creates a new set of containers, allocates memory, + * reads out the current framebuffer size etc.. + */ +void container_new(containers_t *containers); + +/** + * + * @param container Container to fill with bitmap + * @param x Start filling at offset x + * @param y Start filling at offset y + * @param bm bitmap image to fill + * @param transparent Dark pixels are not overwriting background for + * transparancy + * + * Calls container_bitmap_at_xy with x,y set to 0. + * + * Places a bitmap image at coordinates x,y in container at index + * "container" + */ +int container_bitmap_at_xy(unsigned int container, int x, int y, gimp_bitmap_t *bm, bool transparent); + +/** + * + * @param container Container to fill with bitmap + * @param bm bitmap image to fill + * @param transparent Dark pixels are not overwriting background for + * transparancy + * + * Calls container_bitmap_at_xy with x,y set to 0. + */ +int container_fill_bitmap(unsigned int container, gimp_bitmap_t *bm, bool transparent); + +/** + * + * Will compile all containers into container 0 which is a copy of the + * framebuffer, and then the data is set to the real framebuffer + * to be displayed on the screen. + */ +int container_compile(); + +/** + * @param container Container to show/hide + * @param visible Set to true to show and false hide. + * + * Set a container to be visible or hidden. + * Content of container is not destroyed + */ +void container_visible(unsigned int container, bool visible); + +/** + * @param container Container to move + * @param delta_x Move steps in x axis + * @param delta_y Move steps in y axis + * + * Move container with delta_x and delta_y + */ +void container_move(unsigned int container, int delta_x, int delta_y); + +/** + * @param container Container to reset to inital value + * + * Resets the container to initial state. Destroys + * all contents. + */ +void container_reset(unsigned int container); + +/** + * + * Closes the framebuffer, frees all memory used for containers etc. + * Use this on exit. + */ +void container_close(); + +/** + * @param container Container to draw in + * @param from_x Start x point of line + * @param from_y Start y point of line + * @param to_x End x point of line + * @param to_y End y point of line + * + * @return 0 on success, -1 on error. + * + * This function will draw a line in a container + */ + +int container_draw_line( + unsigned int container, unsigned int from_x, unsigned int from_y, unsigned int to_x, unsigned int to_y); + +/** + * + * @return returns amount of defined containers. + */ +int container_get_n(void); + +/** + * @param container Container to container_get + * + * @return pointer to container. + */ +container_t *container_get(int container); diff --git a/stage2/03-install-piaizu/files/fb/lib/framebuffer.c b/stage2/03-install-piaizu/files/fb/lib/framebuffer.c new file mode 100644 index 0000000..2def145 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/lib/framebuffer.c @@ -0,0 +1,62 @@ +#include "framebuffer.h" +#include "log.h" +#include +#include +#include +#include +#include +#include +#include + +static struct frame_buffer fb = {0}; + +struct frame_buffer new_frame_buffer() { + + fb.file_descriptor = open("/dev/fb0", O_RDWR); + if (fb.file_descriptor == -1) { + perror("Error: cannot open framebuffer device"); + exit(1); + } + + if (ioctl(fb.file_descriptor, FBIOGET_FSCREENINFO, &fb.fixed_info) == -1) { + perror("Error reading fixed information"); + exit(2); + } + + if (ioctl(fb.file_descriptor, FBIOGET_VSCREENINFO, &fb.var_info) == -1) { + perror("Error reading variable information"); + exit(3); + } + + fb.width = fb.var_info.xres; + fb.height = fb.var_info.yres; + fb.linelength = fb.fixed_info.line_length; + fb.padding = (fb.fixed_info.line_length / (fb.var_info.bits_per_pixel / 8)) - (fb.var_info.xres); + + LOG("Framebuffer: (width %d, height %d) bpp %d, bytesize %d (%d) linelength " + "%d, padding %d\n", + fb.var_info.xres, fb.var_info.yres, fb.var_info.bits_per_pixel, fb.fixed_info.smem_len, + fb.width * fb.height * fb.var_info.bits_per_pixel / 8, fb.fixed_info.line_length, fb.padding); + + fb.buffer_size = fb.fixed_info.smem_len; + fb.buffer = (char *)mmap(0, fb.buffer_size, PROT_READ | PROT_WRITE, MAP_SHARED, fb.file_descriptor, 0); + + if (fb.buffer == (void *)-1) { + perror("Error: failed to map framebuffer device to memory"); + exit(5); + } + + memset(fb.buffer, 0x00, fb.buffer_size); + + /* Return a copy of the frambuffer struct */ + return fb; +} + +void destroy_frame_buffer() { + munmap(fb.buffer, fb.buffer_size); + close(fb.file_descriptor); +} + +void framebuffer_update(void *mem) { + memcpy(fb.buffer, mem, fb.buffer_size); +} diff --git a/stage2/03-install-piaizu/files/fb/lib/framebuffer.h b/stage2/03-install-piaizu/files/fb/lib/framebuffer.h new file mode 100644 index 0000000..db9435e --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/lib/framebuffer.h @@ -0,0 +1,25 @@ +#pragma once +#include +#include +#include + +struct frame_buffer { + int file_descriptor; + + struct fb_fix_screeninfo fixed_info; + struct fb_var_screeninfo var_info; + + int padding; + int linelength; + int width; + int height; + + long int buffer_size; + char * buffer; +}; + +struct frame_buffer new_frame_buffer(); + +void framebuffer_update(void *mem); + +void destroy_frame_buffer(); diff --git a/stage2/03-install-piaizu/files/fb/lib/fwatch.c b/stage2/03-install-piaizu/files/fb/lib/fwatch.c new file mode 100644 index 0000000..4aa6438 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/lib/fwatch.c @@ -0,0 +1,123 @@ +#include "fwatch.h" +#include "log.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define max(a, b) \ + ({ \ + __typeof__(a) _a = (a); \ + __typeof__(b) _b = (b); \ + _a > _b ? _a : _b; \ + }) + +#define FWATCH_CLIENTS_MAX 5 + +typedef struct { + fwatch_cb_f cb; + int fd; +} fwatch_client_t; + +typedef struct { + unsigned int n_registered; + fd_set rfds; + struct timeval timeout; + int maxfd; + fwatch_client_t clients[FWATCH_CLIENTS_MAX]; +} fwatch_t; + +static fwatch_t fwatch; + +int fwatch_add(fwatch_cb_f cb, int fd, char *fname) { + + if (!cb) { + return -1; + } + if (fwatch.n_registered >= FWATCH_CLIENTS_MAX) { + return -1; + } + if (fd == -1) { + fd = open(fname, O_RDONLY); + if (fd == -1) { + LOG("Registered %s fd:%d callback %p\n", fname, fd, cb); + return -1; + } + } + + LOG("Registered %s fd:%d callback %p\n", fname, fd, cb); + fwatch.clients[fwatch.n_registered].cb = cb; + fwatch.clients[fwatch.n_registered].fd = fd; + + fwatch.n_registered++; + + return 0; +} + +int fwatch_start() { + + unsigned int i; + int maxfd = 0; + + FD_ZERO(&fwatch.rfds); + + for (i = 0; i < fwatch.n_registered; i++) { + int fd = fwatch.clients[i].fd; + maxfd = max(maxfd, fd); + FD_SET(fd, &fwatch.rfds); + } + fwatch.maxfd = maxfd; + return 0; +} + +int fwatch_do(int us) { + + int retval; + struct timeval timeout; + unsigned int i; + + timeout.tv_sec = us / 1000000; + timeout.tv_usec = us % 1000000; + + for (i = 0; i < fwatch.n_registered; i++) { + int fd = fwatch.clients[i].fd; + FD_SET(fd, &fwatch.rfds); + } + + retval = select(fwatch.maxfd + 1, &fwatch.rfds, NULL, NULL, &timeout); + + if (retval == -1) { + LOG("Error occured while waiting for select %m\n"); + return -1; + } + + if (retval == 0) { + return 0; + } + + if (retval > 0) { + + for (i = 0; i < fwatch.n_registered; i++) { + + int fd = fwatch.clients[i].fd; + + if (FD_ISSET(fd, &fwatch.rfds)) { + + if (fwatch.clients[i].cb) { + fwatch.clients[i].cb(fd); + } + } + } + } + return 0; +} diff --git a/stage2/03-install-piaizu/files/fb/lib/fwatch.h b/stage2/03-install-piaizu/files/fb/lib/fwatch.h new file mode 100644 index 0000000..1c6e930 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/lib/fwatch.h @@ -0,0 +1,30 @@ +#pragma once + +typedef void (*fwatch_cb_f)(int fd); + +/** + * @param us Timeout time for select in µS + * + * @returns 0 on success, -1 on error. + */ +int fwatch_do(int us); + +/** + * + * @returns 0 + * + * Will start the module. No more registration should be done after start has been called. + */ +int fwatch_start(); + +/** + * @param cb callback to be called when file is ready + * @param fd file descriptor, if zero, fname will be used to open file + * @param fname filename of the file to select on + * + * @returns 0 on success, -1 on error + * + * This function will call function cb when select notifies that + * the file in fd has data to be read. + */ +int fwatch_add(fwatch_cb_f cb, int fd, char *fname); diff --git a/stage2/03-install-piaizu/files/fb/lib/keys.c b/stage2/03-install-piaizu/files/fb/lib/keys.c new file mode 100644 index 0000000..b9a4145 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/lib/keys.c @@ -0,0 +1,185 @@ +#include "keys.h" +#include "fwatch.h" +#include "log.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define N_KEY_PRESS_CALLBACKS 10 +#define N_BUTTONS 2 +#define WAIT_TIMEOUT_S 30 +#define EVENT_FILE "/dev/input/event0" + +/* internal typedefs */ +typedef struct { + key_e key; + struct timeval time_pressed; + struct timeval time_released; + double time_hold; +} key_action_t; + +typedef struct { + key_press_f cb; + key_e key; + double time; + int handle; +} key_press_event_t; + +static bool already_started = false; + +static key_press_event_t client_callbacks[N_KEY_PRESS_CALLBACKS] = {{0}}; + +static unsigned int key_press_callback_index = 0; + +int key_time_down(key_action_t *key) { + + struct timeval result; + if (key == NULL) { + return -1; + } + + timersub(&key->time_released, &key->time_pressed, &result); + key->time_hold = (double)result.tv_sec + ((double)result.tv_usec / 1000000); + + return 0; +} + +static int keys_parse_callbacks(key_action_t *keyaction) { + unsigned int i; + if (!keyaction) { + return -1; + } + + for (i = 0; i < key_press_callback_index && i < N_KEY_PRESS_CALLBACKS; i++) { + + if (keyaction->key == client_callbacks[i].key) { + + if (keyaction->time_hold >= client_callbacks[i].time) { + if (client_callbacks[i].cb != NULL) { + client_callbacks[i].cb(keyaction->time_hold, keyaction->key, client_callbacks[i].handle); + + keyaction->time_hold = 0.0; + return 0; + } + } + } + } + + return 1; +} + +int keys_register_cb(key_press_f cb, key_e key, double time, int handle) { + + if (!cb) + return -1; + + if (already_started) { + return -1; + } + + if (key_press_callback_index < N_KEY_PRESS_CALLBACKS) { + + client_callbacks[key_press_callback_index].cb = cb; + client_callbacks[key_press_callback_index].key = key; + client_callbacks[key_press_callback_index].time = time; + client_callbacks[key_press_callback_index].handle = handle; + + key_press_callback_index++; + return 0; + } + return -1; +} + +void keys_file_watch_callback(int fd) { + struct input_event evt; + + // clang-format off + static key_action_t buttons[N_BUTTONS] = { + { + .key = KEY_CHAR_LEFT, .time_pressed = {0}, .time_released = {0}, .time_hold = 0, + }, + { + .key = KEY_CHAR_RIGHT, .time_pressed = {0}, .time_released = {0}, .time_hold = 0, + }}; + // clang-format on + + read(fd, &evt, sizeof(struct input_event)); + if (evt.type == EV_SYN && evt.code == SYN_DROPPED) { + + } else if (evt.type == EV_KEY) { + + if (evt.value == 1) { + + switch (evt.code) { + case KEY_CHAR_LEFT: + case KEY_CHAR_RIGHT: + buttons[evt.code - KEY_CHAR_LEFT].time_pressed.tv_sec = evt.time.tv_sec; + buttons[evt.code - KEY_CHAR_LEFT].time_pressed.tv_usec = evt.time.tv_usec; + buttons[evt.code - KEY_CHAR_LEFT].time_hold = 0; + + break; + default: + // continue; + break; + } + + } else { + + switch (evt.code) { + case KEY_CHAR_LEFT: + case KEY_CHAR_RIGHT: + buttons[evt.code - KEY_CHAR_LEFT].time_released.tv_sec = evt.time.tv_sec; + buttons[evt.code - KEY_CHAR_LEFT].time_released.tv_usec = evt.time.tv_usec; + key_time_down(&buttons[evt.code - KEY_CHAR_LEFT]); + keys_parse_callbacks(&buttons[evt.code - KEY_CHAR_LEFT]); + break; + default: + // continue; + break; + } + } + } + + return; +} + +void keys_sort_registered_callbacks() { + unsigned int a; + unsigned int b; + key_press_event_t tmp; + for (a = 0; a < key_press_callback_index; a++) { + for (b = a + 1; b < key_press_callback_index; b++) { + if (client_callbacks[a].time < client_callbacks[b].time) { + memcpy(&tmp, &client_callbacks[b], sizeof(key_press_event_t)); + memcpy(&client_callbacks[b], &client_callbacks[a], sizeof(key_press_event_t)); + memcpy(&client_callbacks[a], &tmp, sizeof(key_press_event_t)); + } + } + } +} + +int keys_start() { + + if (already_started) { + + return -1; + } + already_started = true; + + keys_sort_registered_callbacks(); + if (fwatch_add(keys_file_watch_callback, -1, EVENT_FILE) == 0) { + return 0; + } + + return 0; +} diff --git a/stage2/03-install-piaizu/files/fb/lib/keys.h b/stage2/03-install-piaizu/files/fb/lib/keys.h new file mode 100644 index 0000000..8d68016 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/lib/keys.h @@ -0,0 +1,39 @@ +#pragma once + +/** + * + * Two buttons exist on the PiAIZU EXT shield. + */ +typedef enum { + KEY_CHAR_LEFT = 105, + KEY_CHAR_RIGHT, +} key_e; + +/** + * The callback format to be used when registering for an + * event. + */ +typedef void (*key_press_f)(double downtime, key_e key, int handle); + +/** + * @param cb Callback function pointer + * @param key Key to register, aka "button" + * @param time Time the key has to be held low before an event is + * triggered + * @param handle passed as parameter into the callback function + * + * This function must be called before start. After start has been called + * no new events can be registered. + */ +int keys_register_cb(key_press_f cb, key_e key, double time, int handle); + +/** + * + * Call this function to start the thread watching the low level events. + */ +int keys_start(); + +/** + * Clean up and close down thread + */ +int keys_close(); diff --git a/stage2/03-install-piaizu/files/fb/lib/log.h b/stage2/03-install-piaizu/files/fb/lib/log.h new file mode 100644 index 0000000..923625d --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/lib/log.h @@ -0,0 +1,7 @@ +#pragma once +#include +#include + +#define __FILENAME__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) + +#define LOG(str, ...) printf("[%s:%d] " str, __FILENAME__, __LINE__, ##__VA_ARGS__) diff --git a/stage2/03-install-piaizu/files/fb/lib/text.c b/stage2/03-install-piaizu/files/fb/lib/text.c new file mode 100644 index 0000000..766c4c1 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/lib/text.c @@ -0,0 +1,203 @@ +#include "text.h" +#include "bmp.h" +#include "container.h" +#include "log.h" +#include +#include +#include + +typedef struct { + char character; + int offset_col; + int offset_row; + int width; + int height; + gimp_bitmap_t *font; +} font_character_t; + +static font_character_t alphabet_tbl[] = { + {.character = 'A', .offset_col = 0, .offset_row = 1, .width = 12, .height = 13, .font = NULL}, + {.character = 'B', .offset_col = 14, .offset_row = 1, .width = 8, .height = 13, .font = NULL}, + {.character = 'C', .offset_col = 25, .offset_row = 1, .width = 11, .height = 13, .font = NULL}, + {.character = 'D', .offset_col = 39, .offset_row = 1, .width = 11, .height = 13, .font = NULL}, + {.character = 'E', .offset_col = 53, .offset_row = 1, .width = 8, .height = 13, .font = NULL}, + {.character = 'F', .offset_col = 64, .offset_row = 1, .width = 9, .height = 13, .font = NULL}, + {.character = 'G', .offset_col = 73, .offset_row = 1, .width = 12, .height = 13, .font = NULL}, + {.character = 'H', .offset_col = 88, .offset_row = 1, .width = 13, .height = 13, .font = NULL}, + {.character = 'I', .offset_col = 102, .offset_row = 1, .width = 2, .height = 13, .font = NULL}, + {.character = 'J', .offset_col = 105, .offset_row = 1, .width = 6, .height = 16, .font = NULL}, + {.character = 'K', .offset_col = 114, .offset_row = 1, .width = 12, .height = 13, .font = NULL}, + {.character = 'L', .offset_col = 125, .offset_row = 1, .width = 8, .height = 13, .font = NULL}, + {.character = 'M', .offset_col = 135, .offset_row = 1, .width = 14, .height = 13, .font = NULL}, + {.character = 'N', .offset_col = 152, .offset_row = 1, .width = 10, .height = 13, .font = NULL}, + {.character = 'O', .offset_col = 164, .offset_row = 1, .width = 13, .height = 13, .font = NULL}, + {.character = 'P', .offset_col = 180, .offset_row = 1, .width = 10, .height = 13, .font = NULL}, + {.character = 'Q', .offset_col = 190, .offset_row = 1, .width = 13, .height = 15, .font = NULL}, + {.character = 'R', .offset_col = 205, .offset_row = 1, .width = 11, .height = 13, .font = NULL}, + {.character = 'S', .offset_col = 216, .offset_row = 1, .width = 11, .height = 13, .font = NULL}, + {.character = 'T', .offset_col = 227, .offset_row = 1, .width = 13, .height = 13, .font = NULL}, + {.character = 'U', .offset_col = 241, .offset_row = 1, .width = 11, .height = 13, .font = NULL}, + {.character = 'V', .offset_col = 251, .offset_row = 1, .width = 14, .height = 13, .font = NULL}, + {.character = 'W', .offset_col = 266, .offset_row = 1, .width = 16, .height = 13, .font = NULL}, + {.character = 'X', .offset_col = 285, .offset_row = 1, .width = 12, .height = 13, .font = NULL}, + {.character = 'Y', .offset_col = 297, .offset_row = 1, .width = 12, .height = 13, .font = NULL}, + {.character = 'Z', .offset_col = 310, .offset_row = 1, .width = 12, .height = 13, .font = NULL}, + /* Lower case */ + {.character = 'a', .offset_col = 1, .offset_row = 22, .width = 9, .height = 16, .font = NULL}, + {.character = 'b', .offset_col = 11, .offset_row = 22, .width = 10, .height = 16, .font = NULL}, + {.character = 'c', .offset_col = 22, .offset_row = 22, .width = 9, .height = 16, .font = NULL}, + {.character = 'd', .offset_col = 31, .offset_row = 22, .width = 9, .height = 16, .font = NULL}, + {.character = 'e', .offset_col = 41, .offset_row = 22, .width = 10, .height = 16, .font = NULL}, + {.character = 'f', .offset_col = 52, .offset_row = 22, .width = 7, .height = 16, .font = NULL}, + {.character = 'g', .offset_col = 59, .offset_row = 22, .width = 10, .height = 20, .font = NULL}, + {.character = 'h', .offset_col = 71, .offset_row = 22, .width = 8, .height = 16, .font = NULL}, + {.character = 'i', .offset_col = 82, .offset_row = 22, .width = 3, .height = 16, .font = NULL}, + {.character = 'j', .offset_col = 87, .offset_row = 22, .width = 4, .height = 20, .font = NULL}, + {.character = 'k', .offset_col = 92, .offset_row = 22, .width = 8, .height = 16, .font = NULL}, + {.character = 'l', .offset_col = 102, .offset_row = 22, .width = 4, .height = 16, .font = NULL}, + {.character = 'm', .offset_col = 107, .offset_row = 22, .width = 15, .height = 16, .font = NULL}, + {.character = 'n', .offset_col = 124, .offset_row = 22, .width = 8, .height = 16, .font = NULL}, + {.character = 'o', .offset_col = 134, .offset_row = 22, .width = 10, .height = 16, .font = NULL}, + {.character = 'p', .offset_col = 146, .offset_row = 22, .width = 10, .height = 20, .font = NULL}, + {.character = 'q', .offset_col = 155, .offset_row = 22, .width = 12, .height = 20, .font = NULL}, + {.character = 'r', .offset_col = 168, .offset_row = 22, .width = 7, .height = 16, .font = NULL}, + {.character = 's', .offset_col = 175, .offset_row = 22, .width = 8, .height = 16, .font = NULL}, + {.character = 't', .offset_col = 183, .offset_row = 22, .width = 8, .height = 16, .font = NULL}, + {.character = 'u', .offset_col = 191, .offset_row = 22, .width = 9, .height = 16, .font = NULL}, + {.character = 'v', .offset_col = 201, .offset_row = 22, .width = 10, .height = 16, .font = NULL}, + {.character = 'w', .offset_col = 213, .offset_row = 22, .width = 12, .height = 16, .font = NULL}, + {.character = 'x', .offset_col = 227, .offset_row = 22, .width = 12, .height = 16, .font = NULL}, + {.character = 'y', .offset_col = 239, .offset_row = 22, .width = 10, .height = 20, .font = NULL}, + {.character = 'z', .offset_col = 250, .offset_row = 22, .width = 12, .height = 16, .font = NULL}, + {.character = '0', .offset_col = 0, .offset_row = 42, .width = 12, .height = 16, .font = NULL}, + {.character = '1', .offset_col = 13, .offset_row = 42, .width = 8, .height = 16, .font = NULL}, + {.character = '2', .offset_col = 23, .offset_row = 42, .width = 10, .height = 16, .font = NULL}, + {.character = '3', .offset_col = 34, .offset_row = 42, .width = 9, .height = 16, .font = NULL}, + {.character = '4', .offset_col = 44, .offset_row = 42, .width = 9, .height = 16, .font = NULL}, + {.character = '5', .offset_col = 55, .offset_row = 42, .width = 9, .height = 16, .font = NULL}, + {.character = '6', .offset_col = 66, .offset_row = 42, .width = 10, .height = 16, .font = NULL}, + {.character = '7', .offset_col = 78, .offset_row = 42, .width = 10, .height = 16, .font = NULL}, + {.character = '8', .offset_col = 89, .offset_row = 42, .width = 10, .height = 16, .font = NULL}, + {.character = '9', .offset_col = 99, .offset_row = 42, .width = 10, .height = 16, .font = NULL}, + {.character = '.', .offset_col = 230, .offset_row = 42, .width = 3, .height = 16, .font = NULL}, + {.character = '/', .offset_col = 234, .offset_row = 44, .width = 7, .height = 16, .font = NULL}, + {.character = ':', .offset_col = 248, .offset_row = 42, .width = 5, .height = 16, .font = NULL}, + +}; + +void text_close() { + unsigned int i; + for (i = 0; i < sizeof(alphabet_tbl) / sizeof(alphabet_tbl[0]); i++) { + if (alphabet_tbl[i].font != NULL) { + free(alphabet_tbl[i].font); + } else { + continue; + } + } +} + +void text_init() { + unsigned int i; + size_t charsize; + int x; + int y; + uint32_t(*destfont)[]; + uint32_t(*srcfont)[]; + gimp_bitmap_t *alphabet; + + long int dest_px = 0; + long int src_px = 0; + + i = bmp_open("graphics/alphabet.bmp", &alphabet); + if (i) { + + return; + } + + for (i = 0; i < sizeof(alphabet_tbl) / sizeof(alphabet_tbl[0]); i++) { + charsize = alphabet_tbl[i].width * alphabet_tbl[i].height * sizeof(rgba_t); + alphabet_tbl[i].font = calloc(charsize + sizeof(gimp_bitmap_t), 1); + + alphabet_tbl[i].font->width = alphabet_tbl[i].width; + alphabet_tbl[i].font->height = alphabet_tbl[i].height; + alphabet_tbl[i].font->bytes_per_pixel = sizeof(rgba_t); + + destfont = (uint32_t(*)[])alphabet_tbl[i].font->pixel_data; + + for (y = 0; y < alphabet_tbl[i].height; y++) { + for (x = 0; x < alphabet_tbl[i].width; x++) { + + src_px = (alphabet_tbl[i].offset_row + y) * alphabet->width; + src_px += alphabet_tbl[i].offset_col + x; + + srcfont = (uint32_t(*)[]) & alphabet->pixel_data; + + dest_px = y * alphabet_tbl[i].font->width; + dest_px += x; + + if (((*srcfont)[src_px] & 0xFFFF00) != 00) { + (*destfont)[dest_px] = (*srcfont)[src_px]; + } + } + } + } + bmp_free(&alphabet); +} + +#define OFFSET_LOWERCASE ('Z' - 'A') + 1 +#define OFFSET_NUMBERS OFFSET_LOWERCASE + ('z' - 'a') + 1 +#define OFFSET_SPECIAL OFFSET_NUMBERS + ('9' - '0') + 1 + +font_character_t *text_get_char_font(char c) { + if (c >= 'a' && c <= 'z') { + return &alphabet_tbl[(c - 'a') + OFFSET_LOWERCASE]; + } else if (c >= 'A' && c <= 'Z') { + return &alphabet_tbl[c - 'A']; + } else if (c >= '0' && c <= '9') { + return &alphabet_tbl[(c - '0') + OFFSET_NUMBERS]; + } else if (c >= '.' && c <= '/') { + return &alphabet_tbl[(c - '.') + OFFSET_SPECIAL]; + } else if (c == ':') { + return &alphabet_tbl[(c - ':') + OFFSET_SPECIAL + 2]; + } + return NULL; +} + +gimp_bitmap_t *text_get_char_bitmap(char c) { + font_character_t *f; + f = text_get_char_font(c); + if (f) { + return f->font; + } + return NULL; +} + +void text_put(int container, char *string) { + int strsize; + int i; + font_character_t *c; + int x = 0; + int y = 2; + + strsize = strlen(string); + for (i = 0; i < strsize; i++) { + if (string[i] == ' ') { + x = x + 7; + continue; + } + if (string[i] == '\n') { + y = y + 20; + x = 0; + continue; + } + c = text_get_char_font(string[i]); + if (c == NULL) { + continue; + } + + container_bitmap_at_xy(container, x, y, c->font, true); + x += c->width; + x++; + x++; + } +} diff --git a/stage2/03-install-piaizu/files/fb/lib/text.h b/stage2/03-install-piaizu/files/fb/lib/text.h new file mode 100644 index 0000000..7ea0fca --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/lib/text.h @@ -0,0 +1,9 @@ +#pragma once + +#include "container.h" + +void text_init(); + +void text_put(int container, char *string); + +void text_close(); diff --git a/stage2/03-install-piaizu/files/fb/lib/version.c b/stage2/03-install-piaizu/files/fb/lib/version.c new file mode 100644 index 0000000..edee5e5 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/lib/version.c @@ -0,0 +1,12 @@ +#include "version.h" +#include "log.h" + +char *version_git_get(void) { + + return GITSHA; +} + +char *version_date_get(void) { + + return DATE; +} diff --git a/stage2/03-install-piaizu/files/fb/lib/version.h b/stage2/03-install-piaizu/files/fb/lib/version.h new file mode 100644 index 0000000..e4fb17d --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/lib/version.h @@ -0,0 +1,4 @@ +#pragma once + +char *version_git_get(void); +char *version_date_get(void); diff --git a/stage2/03-install-piaizu/files/fb/lib/webrequest.c b/stage2/03-install-piaizu/files/fb/lib/webrequest.c new file mode 100644 index 0000000..462ddef --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/lib/webrequest.c @@ -0,0 +1,196 @@ +#include "fwatch.h" +#include "lmxsocket.h" +#include "log.h" +#include "text.h" +#include +#include +#include +#include +#include +#include +#include +#include + +static int sock_fd; /* Just to be used when closing the file */ +static coordinate_t current_coords = {.x = LMX_PIXEL_WIDTH / 2, .y = LMX_PIXEL_HEIGHT / 2}; + +void webrequest_update_text(unsigned int c, char *text) { + container_reset(c); + text_put(c, text); +} + +void webrequest_update_crosshair(unsigned int c, coordinate_t *coord) { + container_reset(c); + + container_draw_line(c, 0, coord->y, LMX_PIXEL_WIDTH - 1, coord->y); /* Horisontal line */ + container_draw_line(c, coord->x, 0, coord->x, LMX_PIXEL_HEIGHT - 1); /* Vertical line */ + current_coords.x = coord->x; + current_coords.y = coord->y; +} + +void webrequest_handle(int sock) { + ssize_t readsize; + struct sockaddr_un src_addr; + socklen_t src_addr_len; + char buf[DATAGRAM_SIZE]; + socket_datagram_header_t *sdh; + + src_addr_len = sizeof(struct sockaddr_un); + readsize = recvfrom(sock, buf, DATAGRAM_SIZE, 0, (struct sockaddr *)&src_addr, &src_addr_len); + + if (readsize < 0) { + LOG("Receiving datagram packet %d %m", sock); + exit(1); + } + + sdh = (void *)buf; + + switch (sdh->type) { + case SOCKET_DATAGRAM_TYPE_COORD: { + socket_datagram_lmx_coordinate_t *coord = (socket_datagram_lmx_coordinate_t *)sdh; + LOG("Received coordinate: %zd bytes \n=======\nx:%d y:%d\n=======\n", readsize, coord->coord.x, + coord->coord.y); + webrequest_update_crosshair(11, &coord->coord); + break; + } + case SOCKET_DATAGRAM_TYPE_MOVE: { + socket_datagram_lmx_move_t *coord = (socket_datagram_lmx_move_t *)sdh; + coordinate_t new_coord; + new_coord.x = current_coords.x; + new_coord.y = current_coords.y; + + switch (coord->move) { + case MOVE_UP: + if (new_coord.y) { + new_coord.y--; + } + break; + case MOVE_DOWN: + new_coord.y++; + break; + case MOVE_LEFT: + if (new_coord.x) { + new_coord.x--; + } + break; + case MOVE_RIGHT: + new_coord.x++; + break; + case MOVE_UP_LEFT: + if (new_coord.y) { + new_coord.y--; + } + if (new_coord.x) { + new_coord.x--; + } + break; + case MOVE_UP_RIGHT: + if (new_coord.y) { + new_coord.y--; + } + new_coord.x++; + break; + case MOVE_DOWN_LEFT: + if (new_coord.x) { + new_coord.x--; + } + new_coord.y++; + break; + case MOVE_DOWN_RIGHT: + new_coord.x++; + new_coord.y++; + break; + case MOVE_CLEAR: + container_reset(11); + return; + } + LOG("Received move: %zd bytes \n=======\nx:%d y:%d Container: %d\n=======\n", readsize, new_coord.x, + new_coord.y, coord->header.container); + webrequest_update_crosshair(coord->header.container, &new_coord); + break; + } + case SOCKET_DATAGRAM_TYPE_TEXT: { + socket_datagram_lmx_text_t *text = (socket_datagram_lmx_text_t *)sdh; + LOG("Received text: %zd bytes \n=======\n%s\n=======\n", readsize, text->text); + webrequest_update_text(10, text->text); + break; + } + + case SOCKET_DATAGRAM_TYPE_INFO: { + int i, n; + socket_datagram_lmx_info_t *response; + container_t * c; + size_t s; + + n = container_get_n(); + s = sizeof(socket_datagram_lmx_info_t) + (n * sizeof(container_info_t)); + + response = malloc(s); + + response->header.type = SOCKET_DATAGRAM_TYPE_INFO; + response->header.size = s; + response->n_containers = n; + for (i = 0; i < n; i++) { + container_info_t *ci = &response->containers[i]; + c = container_get(i); + + ci->x = c->x; + ci->y = c->y; + ci->width = c->width; + ci->height = c->height; + ci->transparent = c->transparent; + ci->visible = c->visible; + ci->frame = c->frame; + ci->framesize_mem = c->framesize_mem; + strncpy(ci->description, c->description, DESCRIPTION_LENGHT); + } + + LOG("Received info request: %zd bytes, sending response %zd bytes to " + "src_addr %s\n", + readsize, s, src_addr.sun_path); + if (sendto(sock, response, s, 0, (struct sockaddr *)&src_addr, src_addr_len) < 0) { + LOG("Error sending datagram message: %m\n"); + } + free(response); + break; + } + default: { + LOG("Received: %zd bytes but command is not supported: %d\n", readsize, sdh->type); + break; + } + } + return; +} + +int webrequest_init() { + + int sock; + struct sockaddr_un name; + + /* Create socket from which to read. */ + sock = socket(AF_UNIX, SOCK_DGRAM, 0); + if (sock < 0) { + perror("opening datagram socket"); + return -1; + } + + /* Create name. */ + name.sun_family = AF_UNIX; + strncpy(name.sun_path, SOCKET_NAME, sizeof(name.sun_path)); + + /* Bind the UNIX domain address to the created socket */ + if (bind(sock, (struct sockaddr *)&name, sizeof(struct sockaddr_un))) { + perror("binding name to datagram socket"); + return -1; + } + chmod(SOCKET_NAME, 0777); + + fwatch_add(webrequest_handle, sock, SOCKET_NAME); + sock_fd = sock; + return 0; +} + +void webrequest_close() { + close(sock_fd); + unlink(SOCKET_NAME); +} diff --git a/stage2/03-install-piaizu/files/fb/lib/webrequest.h b/stage2/03-install-piaizu/files/fb/lib/webrequest.h new file mode 100644 index 0000000..42ddaa9 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/lib/webrequest.h @@ -0,0 +1,12 @@ +#pragma once + +/** + * Initiate the webrequest api. This function will register it self in the fwatch module. + */ +int webrequest_init(); + +/** + * + * Will close and clean used resources. + */ +void webrequest_close(); diff --git a/stage2/03-install-piaizu/files/fb/lmx001 b/stage2/03-install-piaizu/files/fb/lmx001 new file mode 100755 index 0000000..ba842db --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/lmx001 @@ -0,0 +1,35 @@ +#!/bin/sh + +### BEGIN INIT INFO +# Provides: lmx +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Should-Stop: +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Start of LMX-001 example app +# Description: LMX-001 framebuffer app for PiAIZU +# Authenticator +### END INIT INFO + +PATH=/sbin:/bin:/usr/sbin:/usr/bin +DAEMON_SBIN=/usr/bin/lmx +DAEMON_CONF= +NAME=lmx +DESC="PiAIZU example app" +PIDFILE=/run/lmx.pid + +[ -x "$DAEMON_SBIN" ] || exit 0 + + +case "$1" in + start) + cd /usr/bin/ + /usr/bin/lmx & + ;; + stop) + killall lmx + ;; +esac + +exit 0 diff --git a/stage2/03-install-piaizu/files/fb/main.c b/stage2/03-install-piaizu/files/fb/main.c new file mode 100644 index 0000000..e541d36 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/main.c @@ -0,0 +1,249 @@ +#include "bmp.h" +#include "container.h" +#include "define_containers.h" +#include "fwatch.h" +#include "keys.h" +#include "log.h" +#include "text.h" +#include "webrequest.h" +#include +#include +#include +#include +#include +#include +#include + +#define START_FRAME 0 +#define AP_ANIM_EVERY_FRAME 45 + +void animate_wifi_ap(); +void animate_sony_logi(bool fade_out); +static bool shutdown = false; + +static const char *logoanim[] = { + "sonylogo_00001.bmp", "sonylogo_00002.bmp", "sonylogo_00003.bmp", "sonylogo_00004.bmp", "sonylogo_00005.bmp", + "sonylogo_00006.bmp", "sonylogo_00007.bmp", "sonylogo_00008.bmp", "sonylogo_00009.bmp", "sonylogo_00010.bmp", + "sonylogo_00011.bmp", "sonylogo_00012.bmp", "sonylogo_00013.bmp", "sonylogo_00014.bmp", "sonylogo_00015.bmp", + "sonylogo_00016.bmp", "sonylogo_00017.bmp", "sonylogo_00018.bmp", "sonylogo_00019.bmp", "sonylogo_00020.bmp", + "sonylogo_00021.bmp", "sonylogo_00022.bmp", "sonylogo_00023.bmp", "sonylogo_00024.bmp", "sonylogo_00025.bmp", + "sonylogo_00026.bmp", "sonylogo_00027.bmp", "sonylogo_00028.bmp", "sonylogo_00029.bmp", "sonylogo_00030.bmp", + "sonylogo_00031.bmp", "sonylogo_00032.bmp", "sonylogo_00033.bmp", "sonylogo_00034.bmp", "sonylogo_00035.bmp", + "sonylogo_00036.bmp", "sonylogo_00037.bmp", "sonylogo_00038.bmp", "sonylogo_00039.bmp", "sonylogo_00040.bmp", + "sonylogo_00041.bmp", "sonylogo_00042.bmp", "sonylogo_00043.bmp", "sonylogo_00044.bmp", "sonylogo_00045.bmp", + "sonylogo_00046.bmp", "sonylogo_00047.bmp", "sonylogo_00048.bmp", "sonylogo_00049.bmp", "sonylogo_00050.bmp", + "sonylogo_00051.bmp", "sonylogo_00052.bmp", "sonylogo_00053.bmp", "sonylogo_00054.bmp", "sonylogo_00055.bmp", + "sonylogo_00056.bmp", "sonylogo_00057.bmp", "sonylogo_00058.bmp", "sonylogo_00059.bmp", "sonylogo_00060.bmp", + "sonylogo_00061.bmp", "sonylogo_00062.bmp", "sonylogo_00063.bmp", "sonylogo_00064.bmp", "sonylogo_00065.bmp", + "sonylogo_00066.bmp", "sonylogo_00067.bmp", "sonylogo_00068.bmp", "sonylogo_00069.bmp", "sonylogo_00070.bmp", + "sonylogo_00071.bmp", "sonylogo_00072.bmp", "sonylogo_00073.bmp", "sonylogo_00074.bmp", "sonylogo_00075.bmp", + "sonylogo_00076.bmp", "sonylogo_00077.bmp", "sonylogo_00078.bmp", "sonylogo_00079.bmp", "sonylogo_00080.bmp", + "sonylogo_00081.bmp", "sonylogo_00082.bmp", "sonylogo_00083.bmp", "sonylogo_00084.bmp", "sonylogo_00085.bmp", + "sonylogo_00086.bmp", "sonylogo_00087.bmp", "sonylogo_00088.bmp", "sonylogo_00089.bmp", "sonylogo_00090.bmp", + "sonylogo_00091.bmp", "sonylogo_00092.bmp", "sonylogo_00093.bmp", "sonylogo_00094.bmp", "sonylogo_00095.bmp", + "sonylogo_00096.bmp", "sonylogo_00097.bmp", "sonylogo_00098.bmp", "sonylogo_00099.bmp", "sonylogo_00100.bmp", + "sonylogo_00101.bmp", "sonylogo_00102.bmp", "sonylogo_00103.bmp", "sonylogo_00104.bmp", "sonylogo_00105.bmp", + "sonylogo_00106.bmp", "sonylogo_00107.bmp", "sonylogo_00108.bmp", "sonylogo_00109.bmp", "sonylogo_00110.bmp", + "sonylogo_00111.bmp", "sonylogo_00112.bmp", "sonylogo_00113.bmp", "sonylogo_00114.bmp", "sonylogo_00115.bmp", + "sonylogo_00116.bmp", "sonylogo_00117.bmp", "sonylogo_00118.bmp", "sonylogo_00119.bmp", "sonylogo_00120.bmp", + "sonylogo_00121.bmp", "sonylogo_00122.bmp", "sonylogo_00123.bmp", "sonylogo_00124.bmp", "sonylogo_00125.bmp", + "sonylogo_00126.bmp", "sonylogo_00127.bmp", "sonylogo_00128.bmp", "sonylogo_00129.bmp", "sonylogo_00130.bmp", + "sonylogo_00131.bmp", "sonylogo_00132.bmp", "sonylogo_00133.bmp", "sonylogo_00134.bmp", "sonylogo_00135.bmp", + "sonylogo_00136.bmp", "sonylogo_00137.bmp", "sonylogo_00138.bmp", "sonylogo_00139.bmp", "sonylogo_00140.bmp", + "sonylogo_00141.bmp", "sonylogo_00142.bmp", "sonylogo_00143.bmp", "sonylogo_00144.bmp", "sonylogo_00145.bmp", + "sonylogo_00146.bmp", "sonylogo_00147.bmp", "sonylogo_00148.bmp", "sonylogo_00149.bmp", "sonylogo_00150.bmp", + "sonylogo_00151.bmp", "sonylogo_00152.bmp", "sonylogo_00153.bmp", "sonylogo_00154.bmp", "sonylogo_00155.bmp", + "sonylogo_00156.bmp", "sonylogo_00157.bmp", "sonylogo_00158.bmp", "sonylogo_00159.bmp", +}; + +static gimp_bitmap_t *sony_bm[sizeof(logoanim) / sizeof(logoanim[0])]; + +void intShutdown(int sign) { + (void)sign; + shutdown = true; +} + +typedef enum { + EVENT_LEFT_PRESS_SHORT, + EVENT_LEFT_PRESS_LONG, + EVENT_RIGHT_PRESS_SHORT, + EVENT_RIGHT_PRESS_LONG, + EVENT_N, +} event_key_handle_e; + +#define EVENT_TEXT_SIZE 50 +void key_press_callback(double presstime, key_e key, int handle) { + + char testtext[EVENT_TEXT_SIZE] = ""; + + (void)presstime; + (void)key; + + container_reset(9); + switch (handle) { + case EVENT_LEFT_PRESS_SHORT: + snprintf(testtext, EVENT_TEXT_SIZE, "Left\nShort\n%0.2fs", presstime); + break; + case EVENT_LEFT_PRESS_LONG: + snprintf(testtext, EVENT_TEXT_SIZE, "Left\nLong\n%0.2fs", presstime); + + break; + case EVENT_RIGHT_PRESS_SHORT: + snprintf(testtext, EVENT_TEXT_SIZE, "Right\nShort\n%0.2fs", presstime); + + break; + case EVENT_RIGHT_PRESS_LONG: + snprintf(testtext, EVENT_TEXT_SIZE, "Right\nLong\n%0.2fs", presstime); + + break; + default: + break; + } + text_put(KEY_INFO, testtext); +} + +int main() { + + gimp_bitmap_t *bitmap; + + /* Catch a whole bunch of signals and shutdown properly */ + signal(SIGINT, intShutdown); + signal(SIGTERM, intShutdown); + signal(SIGSTOP, intShutdown); + signal(SIGKILL, intShutdown); + + LOG("Git sha: %s\nBuild date: %s\n\n", GITSHA, DATE); + + /* Initialize the framebuffer and container lib */ + container_new(&containers); + + /* Initialize the text/font lib */ + text_init(); + + keys_register_cb(key_press_callback, KEY_CHAR_RIGHT, 1, EVENT_RIGHT_PRESS_LONG); + keys_register_cb(key_press_callback, KEY_CHAR_LEFT, 1, EVENT_LEFT_PRESS_LONG); + + keys_register_cb(key_press_callback, KEY_CHAR_LEFT, 0.1, EVENT_LEFT_PRESS_SHORT); + keys_register_cb(key_press_callback, KEY_CHAR_RIGHT, 0.1, EVENT_RIGHT_PRESS_SHORT); + + if (keys_start()) { + goto on_err; + } + + if (webrequest_init()) { + goto on_err; + } + + if (fwatch_start()) { + goto on_err; + } + + container_visible(SONY_LOGO, true); + container_visible(AP_A, true); + container_visible(AP_B, false); + container_visible(AP_C, false); + container_visible(AP_D, false); + + if (bmp_open_path("graphics", "wifi_ap_a.bmp", &bitmap) != 0) + return -1; + container_fill_bitmap(AP_A, bitmap, true); + bmp_free(&bitmap); + + if (bmp_open_path("graphics", "wifi_ap_b.bmp", &bitmap) != 0) + return -1; + container_fill_bitmap(AP_B, bitmap, true); + bmp_free(&bitmap); + + if (bmp_open_path("graphics", "wifi_ap_c.bmp", &bitmap) != 0) + return -1; + container_fill_bitmap(AP_C, bitmap, true); + bmp_free(&bitmap); + + if (bmp_open_path("graphics", "wifi_ap_d.bmp", &bitmap) != 0) + return -1; + container_fill_bitmap(AP_D, bitmap, true); + bmp_free(&bitmap); + + text_put(WIFI_TEXTBOX, "Connect to WiFi SSID: PiAIZU\nGoto: http://192.168.1.1/"); + + container_visible(WIFI_TEXTBOX, true); + container_compile(); + + container_fill_bitmap(AP_D, bitmap, true); + bmp_free(&bitmap); + + text_put(TEXT, "AP"); + container_compile(); + for (unsigned int anim = START_FRAME; anim < sizeof(logoanim) / sizeof(logoanim[0]); anim++) { + bmp_open_path("graphics/anim", logoanim[anim], &sony_bm[anim]); + } + + animate_sony_logi(true); + + bool do_anim = true; + do { + + do_anim = !do_anim; + animate_sony_logi(do_anim); + fwatch_do(25000); + + } while (!shutdown); + LOG("Cleaning up and shutting down...\n"); + +on_err: + for (unsigned int anim = START_FRAME; anim < sizeof(logoanim) / sizeof(logoanim[0]); anim++) { + bmp_free(&sony_bm[anim]); + } + + webrequest_close(); + container_close(); + text_close(); + + return 0; +} +static int wifi = AP_B; +void animate_wifi_ap() { + + do { + if (wifi <= AP_D) { + container_visible(wifi, true); + + wifi++; + } else { + container_visible(AP_A, true); + container_visible(AP_B, false); + container_visible(AP_C, false); + container_visible(AP_D, false); + + wifi = AP_B; + } + } while (0); +} + +void animate_sony_logi(bool fade_out) { + unsigned int anim; + + if (fade_out) { + for (anim = START_FRAME; anim < sizeof(logoanim) / sizeof(logoanim[0]) && !shutdown; anim++) { + + container_fill_bitmap(SONY_LOGO, sony_bm[anim], true); + + if (anim % AP_ANIM_EVERY_FRAME == 0) { + animate_wifi_ap(); + } + container_compile(); + fwatch_do(4000); + } + } else { + for (anim = (sizeof(logoanim) / sizeof(logoanim[0])) - 1; anim > START_FRAME && !shutdown; anim--) { + + container_fill_bitmap(SONY_LOGO, sony_bm[anim], true); + + if (anim % AP_ANIM_EVERY_FRAME == 0) { + animate_wifi_ap(); + } + container_compile(); + fwatch_do(4000); + } + } +} diff --git a/stage2/03-install-piaizu/files/fb/main.py b/stage2/03-install-piaizu/files/fb/main.py new file mode 100644 index 0000000..283306b --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/main.py @@ -0,0 +1,115 @@ +from ctypes import * +from time import gmtime, strftime +import sys, time + +class container(Structure): + _fields_ = [ + ( "handle", c_int ), + ( "x", c_int ), + ( "y", c_int ), + ( "width", c_uint), + ( "height", c_uint), + ( "bits_per_pixel", c_int ), + ( "padding", c_int ), + ( "transparent", c_bool ), + ( "visible", c_bool ), + ( "frame", c_bool ), + ( "framesize_mem", c_long ), + ( "bg_color", c_int ), + ( "description", c_char_p), + ( "(*data)[]", c_void_p) + ] + +class containers(Structure): + _fields_ = [ + ( "n", c_int ), + ( "c", container * 10 ), + ] + +class lmx_lib(): + global lib + def __init__(self): + self.lib = CDLL("lib/liblmx.so") + n = 0 + c = containers() + c.c[n] = container(n,1,1,419,150,32,0,1,1,0,0,0,"Master Copy of FB",None) + n += 1 + c.c[n] = container(n,1,1,419,70,32,0,1,1,0,0,0,"Clock frame",None) + n += 1 + c.c[n] = container(n,1,71,419,65,32,0,1,1,0,0,0,"Build date",None) + n += 1 + c.c[n] = container(n,419-159,1,159,47,32,0,1,1,0,0,0,"Python logo",None) + n += 1 + c.c[n] = container(n,1,110,419,65,15,0,1,1,0,0,0,"Buttons",None) + n += 1 + c.n = n + self.lib.container_new(pointer(c)) + self.lib.text_init() + + def __del__(self): + self.lib.container_close() + self.lib.text_close() + +class lmx_button(object): + KEY_CHAR_LEFT = 105 + KEY_CHAR_RIGHT = 106 + + def callback(self, presstime, key, handle): + + if key == self.KEY_CHAR_LEFT: + s = "Left key" + elif key == self.KEY_CHAR_RIGHT: + s = "Right key" + + s2 = s + " {:03f} s".format(presstime) + print(s2) + self.lib.lib.container_reset(4) + self.lib.lib.text_put(4, s2) + + def __init__(self, lib): + CMPFUNC = CFUNCTYPE(None, c_double, c_int, c_int) + self.button_callback = CMPFUNC(self.callback) + self.lib = lib + + lib.lib.keys_register_cb(self.button_callback, self.KEY_CHAR_LEFT, 1, 0); + lib.lib.keys_register_cb(self.button_callback, self.KEY_CHAR_RIGHT, 2, 1); + + lib.lib.keys_start() + + def __del__(self): + lib.lib.keys_close() + +class show_bmp(): + def __init__(self, lib, filename, layer): + pyth_bmp = c_void_p() + lib.bmp_open(filename, pointer(pyth_bmp)) + lib.container_fill_bitmap(3,pyth_bmp,1) + lib.bmp_free(pointer(pyth_bmp)) + +def main(): + print("Starting LMX sample application") + + lmx = lmx_lib() + button = lmx_button(lmx) + lmx.lib.fwatch_start(); + + t = cast(lmx.lib.version_date_get(), c_char_p).value + + lmx.lib.text_put(2, "Lib build\n" + t); + + show_bmp(lmx.lib, "graphics/python.bmp", 3) + + while True: + try: + timenow = strftime("%Y %m %d\n%H:%M:%S", gmtime()) + lmx.lib.text_put(1, timenow); + lmx.lib.container_compile() + lmx.lib.container_reset(1) + lmx.lib.fwatch_do(1000) + + except KeyboardInterrupt: + print("Cleaning up and closing down\n") + sys.exit() + +if __name__ == '__main__': + main() diff --git a/stage2/03-install-piaizu/files/fb/settings.mk b/stage2/03-install-piaizu/files/fb/settings.mk new file mode 100644 index 0000000..791ee20 --- /dev/null +++ b/stage2/03-install-piaizu/files/fb/settings.mk @@ -0,0 +1,14 @@ +# ROTATE_180 flag will rotate the whole screen 180 degrees, to be used when use left eye LMX-001 for right side eye. + +#SETTING+=-DROTATE_180 + + +#Gray scale calculation, either use Luminosity, Average or Monochrome, commenting out both will use RGB + +#SETTING+=-DGRAYSCALE_LUMINOSITY +#SETTING+=-DGRAYSCALE_AVERAGE +#SETTING+=-DGREEN_MONOCHROME + +#Extra linker flags, this will tell the linker to use the "local" liblmx.so file from ./lib/ + +#LDEXTRA=-Wl,-rpath,./lib/ diff --git a/stage2/03-install-piaizu/files/hostapd.conf b/stage2/03-install-piaizu/files/hostapd.conf new file mode 100644 index 0000000..f7686d9 --- /dev/null +++ b/stage2/03-install-piaizu/files/hostapd.conf @@ -0,0 +1,48 @@ +# This is the name of the WiFi interface we configured above +interface=wlan0 + +# Use the nl80211 driver with the brcmfmac driver +driver=nl80211 + +# This is the name of the network +ssid=PiAIZU + +# Use the 2.4GHz band +hw_mode=g + +# Use channel 6 +channel=6 + +# Enable 802.11n +ieee80211n=1 + +# Enable WMM +wmm_enabled=0 +#wmm_enabled=1 +# Enable 40MHz channels with 20ns guard interval +ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40] + +# Accept all MAC addresses +macaddr_acl=0 + +# Use WPA authentication +#auth_algs=1 + +# Require clients to know the network name +ignore_broadcast_ssid=0 + +# Use WPA2 +#wpa=2 + +# Use a pre-shared key +#wpa_key_mgmt=WPA-PSK + +# The network passphrase +#wpa_passphrase=raspberry + +# Use AES, instead of TKIP +#rsn_pairwise=CCMP + +ctrl_interface=/var/run/hostapd +ctrl_interface_group=0 + diff --git a/stage2/03-install-piaizu/files/interfaces b/stage2/03-install-piaizu/files/interfaces new file mode 100644 index 0000000..f7c0b88 --- /dev/null +++ b/stage2/03-install-piaizu/files/interfaces @@ -0,0 +1,24 @@ +# interfaces(5) file used by ifup(8) and ifdown(8) + +# Please note that this file is written to be used with dhcpcd +# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf' + +# Include files from /etc/network/interfaces.d: +source-directory /etc/network/interfaces.d + +auto lo +iface lo inet loopback + +iface eth0 inet manual + +allow-hotplug wlan0 +iface wlan0 inet manual + wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf + +allow-hotplug wlan1 +iface wlan1 inet manual + wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf +auto wlan0 +iface wlan0 inet static + address 192.168.1.1 + netmask 255.255.255.0 diff --git a/stage2/03-install-piaizu/files/lighttpd.conf b/stage2/03-install-piaizu/files/lighttpd.conf new file mode 100644 index 0000000..090b2cb --- /dev/null +++ b/stage2/03-install-piaizu/files/lighttpd.conf @@ -0,0 +1,39 @@ +server.modules = ( + "mod_access", + "mod_alias", + "mod_compress", + "mod_redirect", +# "mod_rewrite", + "mod_cgi", +) + +server.document-root = "/var/www/html" +server.upload-dirs = ( "/var/cache/lighttpd/uploads" ) +server.errorlog = "/var/log/lighttpd/error.log" +server.pid-file = "/var/run/lighttpd.pid" +server.username = "www-data" +server.groupname = "www-data" +server.port = 80 + + +index-file.names = ( "index.php", "index.html", "index.lighttpd.html" ) +url.access-deny = ( "~", ".inc" ) +static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".cgi" ) + +compress.cache-dir = "/var/cache/lighttpd/compress/" +compress.filetype = ( "application/javascript", "text/css", "text/html", "text/plain" ) + +# default listening port for IPv6 falls back to the IPv4 port +include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port +include_shell "/usr/share/lighttpd/create-mime.assign.pl" +include_shell "/usr/share/lighttpd/include-conf-enabled.pl" + +$HTTP["url"] =~ "/cgi-bin/" { + cgi.assign = ( "" => "" ) +} + +cgi.assign = ( + ".cgi" => "" +) + + diff --git a/stage2/03-install-piaizu/files/lmx001_init.py b/stage2/03-install-piaizu/files/lmx001_init.py new file mode 100644 index 0000000..881f3e0 --- /dev/null +++ b/stage2/03-install-piaizu/files/lmx001_init.py @@ -0,0 +1,181 @@ +#!/usr/bin/python + +import smbus +import time + +bus = smbus.SMBus(3) # 3 = /dev/i2c-3 + +DEVICE_ADDRESS_C = 0x47 #Common address(0x8E)=>1000 1110=>100 0111(0x47) +DEVICE_ADDRESS_L = 0x38 #Address bit=L (0x70)=>0111 0000=>011 1000(0x38) + +#bus.write_byte_data(device address, register address, value) + +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4D, 0x05) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4E, 0x16) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4F, 0x92) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4B, 0x3C) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4F, 0x12) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4D, 0x05) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4E, 0x16) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4F, 0x92) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x4C, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4D, 0x05) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x4E, 0x16) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4F, 0x12) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4D, 0x05) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4E, 0x1A) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4F, 0x92) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x4F, 0x92) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4F, 0x12) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4D, 0x05) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4E, 0x1E) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4F, 0x92) + + +time.sleep(10.0/1000.0) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4F, 0x12) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4D, 0x05) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4E, 0x22) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4F, 0x92) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4F, 0x12) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4D, 0x05) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4E, 0x26) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4F, 0x92) + +time.sleep(10.0/1000.0) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x1A, 0x89) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x1B, 0x12) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x1C, 0x0B) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x1D, 0x7E) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x1E, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x1F, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x20, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x21, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x22, 0x0F) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x23, 0x05) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x24, 0x5A) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x25, 0x80) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x26, 0x07) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x27, 0x8F) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x28, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x29, 0x86) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x2A, 0x07) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x2B, 0x8F) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x2C, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x2D, 0x86) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x2E, 0x07) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x2F, 0x8F) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x30, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x31, 0x86) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x32, 0x07) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x33, 0x8F) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x34, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x35, 0x86) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x36, 0x07) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x37, 0x8F) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x38, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x39, 0x86) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x3A, 0x07) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x3B, 0x8F) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x3C, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x3D, 0x86) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x3E, 0x07) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x3F, 0x8F) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x40, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x41, 0x86) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x42, 0x07) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x43, 0x8F) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x44, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x45, 0x86) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x46, 0x01) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x47, 0xE2) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x48, 0x7E) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x49, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x4A, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4B, 0x3C) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x4C, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4D, 0x05) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x4E, 0x26) +bus.write_byte_data(DEVICE_ADDRESS_C, 0x4F, 0x92) + +time.sleep(10.0/1000.0) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x00, 0x04) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x01, 0x56) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x02, 0x32) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x03, 0xA2) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x04, 0x41) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x05, 0x42) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x06, 0x03) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x07, 0x41) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x08, 0x80) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x09, 0x80) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x0A, 0x9F) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x0B, 0x17) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x0C, 0x04) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x0D, 0x23) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x0E, 0x06) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x0F, 0x06) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x10, 0x0F) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x11, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x12, 0x04) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x13, 0x17) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x14, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x15, 0x2F) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x16, 0x10) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x17, 0x4A) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x18, 0x46) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x19, 0xA2) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x1A, 0x89) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x1B, 0x12) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x1C, 0x0B) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x1D, 0x7E) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x1E, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x1F, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x20, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x21, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x22, 0x0F) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x23, 0x05) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x24, 0x5A) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x25, 0x80) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x26, 0x07) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x27, 0x8F) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x28, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x29, 0x86) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x2A, 0x07) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x2B, 0x8F) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x2C, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x2D, 0x86) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x2E, 0x07) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x2F, 0x8F) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x30, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x31, 0x86) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x32, 0x07) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x33, 0x8F) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x34, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x35, 0x86) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x36, 0x07) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x37, 0x8F) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x38, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x39, 0x86) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x3A, 0x07) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x3B, 0x8F) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x3C, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x3D, 0x86) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x3E, 0x07) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x3F, 0x8F) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x40, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x41, 0x86) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x42, 0x07) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x43, 0x8F) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x44, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x45, 0x86) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x46, 0x01) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x47, 0xE2) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x48, 0x7E) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x49, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4A, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4B, 0x3C) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4C, 0x00) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4D, 0x02) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4E, 0x80) +bus.write_byte_data(DEVICE_ADDRESS_L, 0x4F, 0x92) diff --git a/stage2/03-install-piaizu/files/modules b/stage2/03-install-piaizu/files/modules new file mode 100644 index 0000000..c696796 --- /dev/null +++ b/stage2/03-install-piaizu/files/modules @@ -0,0 +1,6 @@ +# /etc/modules: kernel modules to load at boot time. +# +# This file contains the names of kernel modules that should be loaded +# at boot time, one per line. Lines beginning with "#" are ignored. + +i2c-dev diff --git a/stage2/03-install-piaizu/files/rc.local b/stage2/03-install-piaizu/files/rc.local new file mode 100755 index 0000000..24b14b5 --- /dev/null +++ b/stage2/03-install-piaizu/files/rc.local @@ -0,0 +1,22 @@ +#!/bin/sh -e +# +# rc.local +# +# This script is executed at the end of each multiuser runlevel. +# Make sure that the script will "" on success or any other +# value on error. +# +# In order to enable or disable this script just change the execution +# bits. +# +# By default this script does nothing. + +# Print the IP address +_IP=$(hostname -I) || true +if [ "$_IP" ]; then + printf "My IP address is %s\n" "$_IP" +fi + + +/usr/sbin/lmx001_init.py +exit 0 diff --git a/stage4/SKIP b/stage4/SKIP new file mode 100644 index 0000000..e69de29 diff --git a/stage5/SKIP b/stage5/SKIP new file mode 100644 index 0000000..e69de29