text:
The wiki is being retired!
Documentation is now handled by the same processes we use for code: Add something to the Documentation/ directory in the coreboot repo, and it will be rendered to https://doc.coreboot.org/. Contributions welcome!
This page contains some (developer) documentation about how ACPI can be used in coreboot.
ACPI setup HOWTO
Please have a look at the files in src/mainboard/asus/a8v-e_se. Please also check out http://acpi.info, which contains the ACPI specification.
Set up hardware
Set the PMIO base address to some known address, and set up the desired ACPI IRQ (usually IRQ9; sometimes it is called the SCI interrupt).
Fixed ACPI Description Table (FADT)
You may skip this section if your SB has it already. Just call it from your MB ACPI setup code (check M2V-MX SE for details).
Now you will need to create an ACPI table which describes the I/O port location for kernel ACPI implementation. This is the FACP table. You will need to create the fadt.c file and fill in the I/O port values plus IRQ:
fadt->sci_int = 9; fadt->pm1a_evt_blk = VT8237R_ACPI_IO_BASE; fadt->pm1b_evt_blk = 0x0; fadt->pm1a_cnt_blk = VT8237R_ACPI_IO_BASE + 0x4; fadt->pm1b_cnt_blk = 0x0; fadt->pm2_cnt_blk = 0x0; fadt->pm_tmr_blk = VT8237R_ACPI_IO_BASE + 0x8; fadt->gpe0_blk = VT8237R_ACPI_IO_BASE + 0x20; fadt->gpe1_blk = 0x0;
In this example the ACPI IRQ is 9, and the PM1A event block starts at VT8237R_ACPI_IO_BASE. You may obtain some values from cat /proc/ioport if running with the proprietary BIOS. Not all blocks are necessary—usually only PM1A PMTMR and GPE0 are used. Please note that this table has the I/O port information stored twice using different formats. Please consult the ACPI specification for details. Most settings in fadt.c can use their default values.
If Linux complains about "IRQ 9 nobody cared", recheck these values. The gpeX_blk must span both status and enable bits (which is easy to get wrong given the unclear documentation on this). If GPE0_STS is 64bit, you have to configure 16 bytes (or 128 bits in the x_* variant).
ACPI spec says to set only one of FIRMWARE_CTRL and X_FIRMWARE_CTRL, which is different to how other x_* values are handled. Set firmware_ctrl if located at <4GB, x_firmware_ctrl if located at >=4GB, and set the other value to 0. It's generally more useful to set firmware_ctrl (to support 32bit operating systems).
Differentiated System Description Table (DSDT)
The DSDT table contains a bytecode that is executed by a driver in the kernel. This table stores also ACPI routing information in _PRT methods. You may add those _PRT methods later.
Generic part of DSDT
A very generic DSDT table would look similar to the ASUS A8V-E/ASUS M2V-MX SE src/mainboard/asus/a8v-e_se/dsdt.asl file.
Scope (\_PR) { Processor (\_PR.CPU0, 0x00, 0x000000, 0x00) {} Processor (\_PR.CPU1, 0x01, 0x000000, 0x00) {} }
This is here for compatibility. More interesting is:
/* For now only define 2 power states: * - S0 which is fully on * - S5 which is soft off * any others would involve declaring the wake up methods */ Name (\_S0, Package () {0x00, 0x00, 0x00, 0x00 }) Name (\_S5, Package () {0x02, 0x02, 0x00, 0x00 })
This defines the SLP_TYP fields in PM1A register. In my case I need to store 010 to perform soft-off, and 000 to wake up. Modify it to fit your chipset needs.
Interrupt routing in DSDT
The _PRT methods define the routing, similar to PIR and MP Table.
Package (0x04) { 0x000BFFFF, 0x00, 0x00, 0x10 }, //slot 0xB Package (0x04) { 0x000BFFFF, 0x01, 0x00, 0x11 }, Package (0x04) { 0x000BFFFF, 0x02, 0x00, 0x12 }, Package (0x04) { 0x000BFFFF, 0x03, 0x00, 0x13 },
This defines the slot 0xB (all functions FFFF) routing as follows:
Note: you cannot indicate the special functions like:
Package (0x04) { 0x000F0001, 0x00, 0x00, 0x14 }, // 0xf Native IDE IRQ 20
It means 0:0f.1 INTA is routed to IRQ20. Linux likes it. Windows does not (code 12). The ACPI standard requires that function is always 0xffff.
Please note that the 0x10, 0x11 are called GSI (global system interrupt). All your interrupts routed through first APIC will start with 0x00, second APIC will perhaps start at IRQ24 etc. This example has no support for legacy PIC routing. For PIC routing you would need to alter the rest of the fields in the _PRT package and also crete PIRQA-PIRQD special devices.
The described above uses static IRQ assignments. Some chipsets like MPC55/CK804 have a configuration register which indicates what APIC pins are routed to what interrupt. Those typically use dynamic IRQ routing which provides a _CRS and _SRS methods to set such registers. For now, those registers are filled in MP-Table setup of each MCP55/CK804 board. All you need is to have static wiring like the MP-Table has.
The rest of the file contains just some legacy devices to make certain OS installers happy. Don't forget to install the iasl compiler and also adjust the coreboot buildsystem to build the binary DSDT for you.
CPU Power Management
The CPU power management is hardware specific. It is described in ACPI specs and also in AMD BIOS and Kernel Developer guide. The rest of this section describes the AMD specific part. AMD needs ACPI objects which describe the similar info as the legacy PowerNow table. Check the BKDG for details.
The content of the tables must be generated at runtime, which is a bit of a problem, because the AML code must be generated or DSDT patched. There is an acpigen infrastructure to generate the AML code.
The actual content for family 0fh revF and later P-States can be generated by complex algorithm implemented in amd_model_fxx_generate_powernow(). This function should be called in acpi_fill_ssdt_generator() callback. Up to revE, all P state info must be hardcoded in tables (not supported).
C States
C states are processor power states. C1 is mandantory and reached on IA32 compatible processors using the HLT instruction, C2 and C3 are optional and must be configured.
C states can be configured in ACPI using two methods:
- by defining the P_BLK base address in the Processor() Definition, and P_LVLx_LAT values in the FADT
- using the _CST object
P_BLK is easier to configure, if the hardware supports that method. ACPI defines that there must be two registers at P_BLK+4 and P_BLK+5 that initiate a transition to C2 or C3 when the register is read. After sleep, the read returns 0. P_LVLx_LAT define the worst case latency of the state transition.
_CST is necessary if you want to support more than 3 C states, or if the transition procedure doesn't follow the ACPI requirement.
PCI root bus _CRS method
Windows needs to know the actual decode ranges for PCI root bus (and any other). Windows needs to know platform independent way, how is I/O routed on PCI0 bus (and other busses).
- For K8 this means to read the I/O and MMIO routing registers (same as k8resdump provides) and use them to create ACPI objects. The actual PCI regs are read in acpi-k8 in modelf and stored as SSDT table. The k8-util.asl code will construct the resources from that SSDT table. One can use the k8-util.asl code which will construct the resource objects. Check the ASUS M2V-MX mainboard ACPI code.
- For i945 the required registers are read in the ASL code in northbridge/intel/i945/acpi/i945_hostbridge.asl.
DSDT debugging
There are two ways. You can store values in "debug" object, which will print it in dmesg. Check http://www.linuxhq.com/kernel/v2.6/28-rc6/Documentation/acpi/debug.txt how to turn that on. In DSDT use store method to write to Debug object. You can write buffers, ints etc:
* Store ("The answer to the question of life, the universe, and everything is:", Debug) * Store (42, Debug)
Second method is userspace interpretation of DSDT table. This can be achieved with ACPI CA Unix package. It is located in acpica-unix-20081204/tools/acpiexec. You can eval the objects and run the methods, like _CRS for example.
If you receive a BSOD with STOP code 0xa5, check this: http://support.microsoft.com/kb/314830.
Other tables
Rest of the ACPI tables is located at acpi_tables.c. I will describe briefly all methods:
If your platform supports MMCONFIG (memory mapped PCI configuration registers, aka extended PCIe configuration) just modify the function with correct base address.
This table describes the ACPI IRQ information, as well as IRQ override. For code example check the M2V-MX SE acpi_tables. You will need to create the sub-table for LAPIC (the APIC counterpart in CPU) and describe the APICs and also deal with so called IRQ overrides.
The interrupt sources are on the right side. The legacy IRQs and the PCI IRQs are connected to both APIC and 8259.
In the legacy case, the APIC is programmed in virtual wire mode. It will just interconnect pin0 of APIC with its output, bypassing APIC completely. OS uses 8259s, and ignores APICs at all.
The APIC should be in this mode in BIOS, to do that for your SB, check the setup_ioapic in vt8237r_lpc.c. Please note that there is some bit which also says if APIC is delivering through wires, or through FSB messages.
Last thing in this table are IRQ overrides. Usually there are two IRQ overrides. IRQ0 override means that IRQ0 is not connected to pin 0 on APIC but to another, most likely pin 2. Check the figure above why. Second IRQ override is for ACPI IRQ. This overrides the 'level' of the interrupt to 'active low'. The rest of the table is filled with NMI entries for the processor.
This is the main function which constructs the tables. Functions described above are callbacks from the "construct" functions called here. You may omit the HPET and MCFG tables.
FACS table
This table must be aligned to 64B boundary (Windows checks this).
Suspend to RAM
There are patches on the mailing list which add support for suspend to RAM in coreboot. The resume start of the computer does not differ until OS waking vector is executed instead of payload.
Checklist of things which needs to be setup correctly:
- Supend clocks, SUSA/B/C plane pins
- Often the Super I/O has some pin to toggle the power for RAM
- SLP_TYPE with S3 definition to your DSDT
- Support for exit-self-refresh in your RAM controller
- An NVRAM which stores the memory configuration, which is known runtime (DQS)
- Chipset tweaks for S3 (like various signal delays)
- CPU tweaks (for AMD the PM1 and PM2 registers and SMAF codes)
- _RAMBASE of coreboot setup to 31MB and set LB_MEM_TOPK to 32MB
- Make sure new code does not corrupt any memory
- Make sure that you reserve _RAMBASE - LB_MEM_TOPK
- SMP might need some fixes
Interfacing mainboard and EC ASL
Coreboot has strict requirements for interfacing EC and mainboard ACPI files. This is done in order to minimize the dependency on the preprocessor, and to provide efficient bytecode execution. This specification is documented in detail on this page.
ACPI bytecode generator
Some ACPI stuff is generated runtime. To achieve this goal we have a AML code generator which generates binary ACPI bytecode. Such code then resides typically in SSDT table. There is a helper function which creates such a table - acpi_create_ssdt_generator(). The content of the table is created through the callback function acpi_fill_ssdt_generator(). So far we have two big users of the generator k8acpi_write_vars() and amd_model_fxx_generate_powernow(). The first function will generate some runtime configuration of HT bus and PCI decode ranges. Second function generates the P-States.
The available functions are in acpigen.h. Mostly there are functions generating some primitive named data structures. However sometimes it's necessary to put more data to a package. ACPI AML code needs to know the block lengths. The len is unknown until we have filled the payload of such package. Therefore when we are done, we need to call function acpigen_patch_len(int len) which will patch last object (package) which need patching. It uses stack internally so more structures can be nested. Look to acpigen.c and learn what functions call acpigen_write_len_f() - those needs patching.
Debugging ACPI
When CONFIG_ACPI_DEBUG is compiled into the kernel, the ACPI debug level can be specified on the kernel command line:
acpi.debug_level=0x2003 (warn, error und tables debug enabled)
The values can be checked at runtime:
# cat /sys/module/acpi/parameters/debug_level Description Hex SET ACPI_LV_ERROR 0x00000001 [*] ACPI_LV_WARN 0x00000002 [*] ACPI_LV_INIT 0x00000004 [*] ACPI_LV_DEBUG_OBJECT 0x00000008 [ ] ACPI_LV_INFO 0x00000010 [ ] ACPI_LV_INIT_NAMES 0x00000020 [ ] ACPI_LV_PARSE 0x00000040 [ ] ACPI_LV_LOAD 0x00000080 [ ] ACPI_LV_DISPATCH 0x00000100 [ ] ACPI_LV_EXEC 0x00000200 [ ] ACPI_LV_NAMES 0x00000400 [ ] ACPI_LV_OPREGION 0x00000800 [ ] ACPI_LV_BFIELD 0x00001000 [ ] ACPI_LV_TABLES 0x00002000 [ ] ACPI_LV_VALUES 0x00004000 [ ] ACPI_LV_OBJECTS 0x00008000 [ ] ACPI_LV_RESOURCES 0x00010000 [ ] ACPI_LV_USER_REQUESTS 0x00020000 [ ] ACPI_LV_PACKAGE 0x00040000 [ ] ACPI_LV_ALLOCATIONS 0x00100000 [ ] ACPI_LV_FUNCTIONS 0x00200000 [ ] ACPI_LV_OPTIMIZATIONS 0x00400000 [ ] ACPI_LV_MUTEX 0x01000000 [ ] ACPI_LV_THREADS 0x02000000 [ ] ACPI_LV_IO 0x04000000 [ ] ACPI_LV_INTERRUPTS 0x08000000 [ ] ACPI_LV_AML_DISASSEMBLE 0x10000000 [ ] ACPI_LV_VERBOSE_INFO 0x20000000 [ ] ACPI_LV_FULL_TABLES 0x40000000 [ ] ACPI_LV_EVENTS 0x80000000 [ ] -- debug_level = 0x00000007 (* = enabled)
Random ACPI wisdom
Windows Errors
At first, not an error, but something to take note: Windows might cache system information and only detect ACPI changes if you modify the table versions. So tweak them liberally when debugging ACPI issues with Windows.
STOP 0xa5
A Blue Screen Of Death with STOP code 0x000000A5 is ACPI related, and it seems that Microsoft is very strict when it comes to ACPI compliance. https://support.microsoft.com/en-us/kb/314830 explains some of the error codes, but not all of them.
- Parameter1 == 0x00001000 means that some memory resource is claimed by ACPI that, according to memory tables, belongs to the OS. Parameter3 is the start address, Parameter4 is the length of the range. They can probably be found somewhere in the ASL code.
- Parameter1 == 0x0000000D means that some _ADR or _HID Symbol is missing in the dsdt.asl.
- Parameter1 == 0x00000011 is "something in the ACPI init". This can be (among other things)
- improper object names, like an object "\._PR_foo" inside the "\._PR" scope (it should be just "foo" instead, or the surrounding scope killed)
- the use of qwords, which XP doesn't like (known error code tuple in this case: (0x11, 0x8, address of SSDT, unknown value))
- improper aml code, acpica as used by Linux is very lenient. (Wrong length field encoding in new acpigen code led to (0x11, 0x8, address of SSDT, unknown value))
The documentation of windbg has more detailed information about STOP 0xa5 than the MSDN article. STOP 0xa5 can be debugged by using checked builds of ntoskrnl and hal.dll and a second machine connected with a null-modem cable and windbg as kernel debugger.
"unexpected error" in Windows XP / Server 2003 setup
(from http://www.coreboot.org/pipermail/coreboot/2011-May/065179.html)
Windows XP or Server 2003 setup might fail with an error message such as:
"An unexpected error (805262864) occurred at line 1768 of d:\xpclient\base\boot\setup\arcdisp.c"
The value 805262864 varies, and is the physical address, in decimal, of one of the ACPI tables.
The error message is displayed when a 1024 dword page table array used by setupldr runs out of space.
This table is used for mapping various physical addresses, such as those of ACPI tables (a separate table identity maps the lower 16MB used by setupldr code and data). Setupldr only looks at ACPI tables (FACP) to determine make and model of the system. The make and model of the system is needed when setupldr scans the good/bad bios lists contained in txtsetup.sif. The good/bad bios lists are used to bypass installation of the ACPI enabled kernel on certain systems known to have ACPI problems. The code loop that scans the lists creates a new mapping each time it reads an ACPI table, and never frees mappings. The code uses FACP OEM ID to determine the system model. The code sequentially reads tables listed in the RSDT array until the FACP is found. Each read consumes one page table entry. If more that 4 tables precede the FACP in the RSDT array, the 1024 entry page table array will run out of space before the good/bad bios list processing completes.
BIOS can work around this Windows XP/Server 2003 limitation by placing the FACP early in the RSDT array.
Other errors
- Quoting MSDN: A "Stop: 0x0000007E" error message or a "Stop: 0x0000008E" error message typically means that a kernel mode component, such as a driver, encountered an error that could not be handled by the built-in Windows error handler.
Using checked builds
There's a faulty assert in acpi.sys that trips only on checked builds. Get rid of "else" statements in ASL code that the compiler can't optimize away (ie. "if () { Return Foo } else { Return Bar }" is changed to "if () { Return Foo } Return Bar" and thus won't trigger this assert). We primarily had that with acpigen generated ElseOps (since those see no optimizer pass).
Don't nest scopes improperly
Windows ACPI doesn't like
Scope(\foo) { Name(\foo.bar) { ... } }
Either make that
Scope(\foo) { Name (bar) { .. } }
or eliminate the scope:
Name(\foo.bar) { ... }
Removable Devices
Windows does not like to install on removable devices. And some devices (like eMMC) are assumed to be removable, unless you tell Windows they are not, by adding a node under your eMMC controller device providing an _RMV method:
/* eMMC is non-removable device */ Device (CARD) { Name (_ADR, 0x00000008) Method(_RMV, 0x0, NotSerialized) { Return (0) } }
Linux Errors
ACPI 2.0/3.0 without XSDT
Linux 2.6.12.x requires an XSDT if the RSDP revision is larger than 0 as it's hardcoded to use that instead of the RSDT then. Fixed in later Linux versions.
PCI Hotplug _BBN fail
pci_hotplug: PCI Hot Plug PCI Core version: 0.5 pciehp: acpi_pciehprm:\_SB_.PCI0 evaluate _BBN fail=0x5 pciehp: acpi_pciehprm:get_device PCI ROOT HID fail=0x5
Add the following under PCI0 device to get rid of the error:
Name(_ADR, 0) Name(_BBN, 0)
Random Notes
Shutdown sequences differ between systems
Success with shutting down a system from Windows doesn't mean that Linux properly shuts down the system (and this probably applies the other way around, too)
Further Resources
- A good FAQ: http://www.acpi.info/acpi_faq.htm
- ACPI BIOS Guideline for Linux by Thomas Renninger
- How to debug ACPI Problems by Thomas Renninger
- ACPI table dump script
- Suspend to RAM utility
- Windows Vista ACPI information, incl. advice on common problems in ACPI implementations
- Debugging ACPI using acpiexec
- How events work Ubuntu wiki DSDT


text:
DC 48V Power Supply
Rockonfactory.com supplies thousands of DC 48V Power Supply to Canada, USA, UK, France, Germany, Europe and Worldwide since 2006. Factory direct low price, large selection of DC 48V Power Supply and we would also produce the customized DC 48V Power Supply for your design too. Quick shipping with tracking number, easy and safe ordering with PayPal and Credit Card. Enjoy more quality LED lighting products with the latest technology on Rockonfactory.com. We daily update new products onto our website. For more, Please contact us at email@example.com

subset: commoncrawl


text:
Saying that her husband "loves children, he's like a big kid himself," the wife of the U.S. Army soldier accused of killing 17 Afghan civilians on March 11 has told NBC News that the accusations against Staff Sgt. Robert Bales are "unbelievable to me."
"I have no idea what happened, but he would not ... he loves children, and he would not do that," said Karilyn Bales.
Part of her conversation with NBC's Matt Lauer aired on Sunday's NBC Nightly News. More is due to be aired on this morning's The Today Show.
Update at 7:15 a.m. ET: Karilyn Bales also told Lauer that "I just don't think he was involved." MSNBC reports that "when asked by Lauer if it was a case of mistaken identity, she said: 'I don't have enough information. This is not him.' "
Our original post continues:
In related news, The New York Times is reporting that the 17th fatality was "the unborn baby of one of the victims ... according to Afghan officials."
As we reported on Friday, after saying for nearly two weeks that there had been 16 deaths, Army officials increased the number late last week without explaining why.
Also, there's word this morning that "the U.S. paid $50,000 in compensation for each villager killed and $11,000 for each person wounded in a shooting rampage allegedly carried out by a rogue American soldier in southern Afghanistan, Afghan officials said Sunday." The Associated Press adds that "the families were told that the money came from President Obama. The unusually large payouts were the latest move by the White House to mend relations with the Afghan people after the killings threatened to shatter already tense relations."
On Friday, the 38-year-old Staff Sgt. Bales was charged with 17 counts of murder and six counts each of attempted murder and assault. He is now being held at Ft. Leavenworth in Kansas and could face the death penalty if convicted. Investigators now believe he "split the slaughter into two episodes, returning to his base after the first attack and later slipping away to kill again, two American officials said Saturday," according to the AP.
Copyright 2020 NPR. To see more, visit https://www.npr.org.


text:
User Interfaces
The GUI framework is the software library which allows applications to put pixels onto the LCD. It handles contention between applications, deals with windows and usually provides an abstraction away from pixel-by-pixel drawing through widget libraries.
On a desktop system, this is separated into several components: An X-server which allows client applications to connect and draw things in the client's window. Then there are the widget toolkits, where you generally have a choice between Motif, GTK+, QT or Enlightenment (there are many others, but these are the more common ones). On an embedded system, this separation is not always as clear cut.
Global overviews
- LinuxDevices has a more detailed guide to embedded graphics here, although this is quite old now.
- Thomas Petazzoni gave a conference giving general information about the various graphical libraries available for embedded Linux devices, at Embedded Linux Conference Europe 2008. Slides and video are available.
Back Ends
Frame buffer (FBDev)
Most Linux systems on embedded devices only provide a frame buffer device. This allows an application to memory-map the pixels on the screen and write to them as if it was a regular array. This frame buffer interface is universal across all architectures and all devices, allowing applications utilizing the frame buffer to be ported easily. The disadvantage is that quite often the Application Processor has more advanced graphics hardware for rendering which is not utilized by the frame buffer interface. Another disadvantage is when contention for the frame buffer exists. What happens when two applications want to write to the framebuffer at once? How do they know not to overwrite each other's contents?
DirectFB addresses the issue of not utilising hardware acceleration by providing applications with a more advanced programming interface. Common graphics operations such as line drawing, blit'ing and basic windowing are provided. When the underlying hardware is able to accelerate these operations, this acceleration is used. When hardware acceleration is not available, the operation is performed in software, providing maximum compatibility for applications. While this is an excellent project, the number of hardware-accelerated devices supported are small and does not include any CPUs you'd find on a phone. This may, of course, change in the future. DirectFB also addresses the contention issue by providing windowing. Applications request a window from DirectFB, which ensures no applications overwrite each other's contents (Similar to X).
See DirectFB article.
Nano-X (Formally Microwindows)
An alternative to using a frame buffer device is to use an x server as you would on a desktop PC. There are many (MANY) applications out there which use X. The problem with x servers are their footprint. Both memory and storage requirements of a normal x server are too large for small embedded systems. To address this, an x-like server has been produced called Nano-X. While not conforming to the X windows API, the API is similar, allowing X windows applications to be ported. The last item of news on the nano-x site is dated 2005, so this project may be dead.
KDrive (formally Micro-x)
Unlike nano-x, KDrive is a complete X server and even supports the RENDER X windows extensions. Although KDrive is a full X Server, it goes to great lengths to not become bloated and is designed with embedded systems in mind. As KDrive supports the RENDER extensions, accelerating drawing operations in hardware is possible, but requires modification for the target Application Processor's graphics core. As with DirectFB, the list of supported hardware accelerated devices does not include graphics cores found in phones. There is an x server for the HP IPaq, however this simply uses the standard frame buffer and adds support for the VGA-Out device. Maemo uses Xomap, an accelerated KDrive for OMAP platforms, namely TI OMAP 1710 and 2420.
See X11 article for more information.
OpenKODE is a new specification for mobile devices and includes OpenGL ES, OpenVG, OpenMAX and similar into a single, integrated API. The emphases here is hardware acceleration. OpenKODE is cross platform and is gathering a lot of industry support. One reason why this might be of interest is rather nicely demonstrated by nVidia in this user interface demo which uses an OpenKODE 1.0 implementation: Next-Gen Phone Interface. There are currently no open source implementations of the OpenKODE specification, however there are OpenGL ES & OpenVG (binary) Linux drivers available for PowerVR MBX & SGX cores, found in higher-end [Application Processors]. These drivers are not available from Imagination Technologies (who designed the PowerVR series) directly but are instead supplied with the BSP for your chosen CPU.
Widget Toolkits
A widget toolkit provides useful widgets such as buttons, menus, text boxes etc. The application programmer doesn't care what a button looks like, just what happens when it's pressed. On embedded systems, you generally have two choices: GTK+ or QT. Recently however, people working on the E17 (Enlightenment) window manager project have started looking at running enlightenment on embedded devices. Also emerging are more advanced, Flash based user interfaces. Sadly though, there are currently no open source equivalents at present.
GTK+ has excellent support on embedded systems. Ports of GTK+ have been made for rendering directly to the frame buffer, to a DirectFB device and of course KDrive. For more information about GTK+, visit [1].
QT is a commercial product written by a company called Trolltech that has been bought by Nokia in January 2008. Written in C++ and providing a C++ API, Qt is not only a graphical library, but a full development framework : database access, XML, threads, data structures, networking, etc.
Until version Qt 4.5, Qt was distributed using a dual-licensing scheme :
- A version of the library distributed under the GPL. As applications using a library are considered derived works of the library, applications using the GPL version of Qt must be released under the GPL. While this is fine for the free software and open source community and some companies, it may not suit others companies needs.
- A version of the library under a commercial license, allowing the creation of proprietary products.
Since Qt 4.5, Qt is also distributed under the LGPL license, which also proprietary applications without buying a commercial license.
QT as it stands is unsuitable for embedded devices due to it's large size and large dependency tree. However, a few years ago, Trolltech launched an embedded version of QT, cleverly named Qt/Embedded. While this is still used for the OPIE application framework, Troltech have updated Qt/Embedded and produced their own framework called Qtopia. Out of the box, both Qt/Embedded and Qtopia render directly to the frame buffer. In Qtopia, it is possible to accelerate this rendering by re-implementing several of the classes the library uses to perform all drawing operations. The Both QT/Embedded & the Qtopia framework also handles windowing internally when multiple applications are running. More recently, Trolltech has incorporated OpenGL ES into Qtopia, which is used for hardware accelerated drawing operations and for compositing multiple windows. The Trolltech documentation also hints at visual effects similar to those on Beryl/Compiz, although there are no screen-shots avaliable.
Enlightenment started life as a window manager for X11. Over the years, it has transformed into a very rich, full desktop environment similar to KDE and Gnome. Enlightenment has always had a very slick user interface with lots of eye-candy. The latest development version of Enlightenment, E17 is highly modularised. E17 has its own widget toolkit called the Enlightenment Widget Library (Ewl). The Ewl draws its widgets using the Enlightenment Foundation Library (ELF) which renders onto a canvas component called EVAS. EVAS supports compositing with true alpha-blending allowing some very attractive user interfaces. EVAS also supports multiple back-ends including X11, OpenGL, and the Linux framebuffer.
See Enlightenment Foundation Libraries article.
Quantum Step
QuantumStep is essentially OpenStep for mobile devices. It's layered on top of X11 so is (in theory) fairly portable. Developers may be familiar with another product derived from NeXTStep... MacOS X. QS uses the MacOS X development chain, including Xcode and Objective-C. So... if you're a Mac-o-phile, then there is an open alternative to the iPhone.
WxEmbedded is the embedded variant of WxWidgets. It is a widget library on top of X11, GTK+, DirectFB, Nano-X, MicroWindows, MGL and WinCE. Applications are portable between those platforms and get the native look and feel on them.
WxWidgets has a nice cross platform GUI programming assistants called [[2]]. It is unclear how usable this tool is in combination with WxEmbedded, but if you are interested in WxEmbedded, DialogBlocks is definitely worthwhile investigating.
Application Frameworks
The widget toolkits provide facilities for applications to draw buttons on the screen, but what if they want to find a telephone number? On a typical phone, lots of different applications are going to need a contact list. Having a different contact list for each application is going to get silly. Instead, there are several application framesworks available. These can be split into 3 groups, those based on QT, those based on GTK+ and those based on Enlightenment. This is similar to the KDE vs Gnome vs Enlightenment dilemma, just on embedded devices. In general, GTK+ frameworks use Kdrive as an X server and the matchbox window manager. Frameworks based on QT (there are only 2 of them) use the windowing system built into QT/Embedded (now Qtopia Core). As such, an application using a GTK+ framework can't run simultaneously with an application using a QT based framework.
The last 12-months has seen interest in Embedded Linux explode. As a result, the market has become fragmented, with lots of different competing application frameworks. All of these newer frameworks (OpenMoko, GPE, GPE Phone Edition, Hiker, Sato, Sugar & Hildon) are based on the GTK+/KDrive/Matchbox combination. All of these projects have forked GTK+ and develop on separate branches, which is a lot of duplicated and wasted effort. To address the problem of fragmentation, the Gnome Mobile Initiative was founded to bring these different frameworks together and introduce some consistency & compatibility. The Gnome Mobile website is at http://www.gnome.org/mobile.
GTK+ Based Frameworks
OpenMoko is an open source project sponsored by FIC. It aims to create a complete open source software stack for mobile phones. As the work is being sponsored by FIC, the first phone OpenMoko is designed to run on is the FIC Neo1973. OpenMoko uses KDrive to provide the back end for graphics. All the widgets used on the phone are designed specifically for OpenMoko and written using the GTK+ toolkit.
GPE Palmtop Environment
From GPE's homepage: "The GPE Palmtop Environment aims to provide a Free Software GUI environment for palmtop/handheld computers running the GNU/Linux™ operating system. GPE uses the X Window System, and the GTK+-2.6 widget toolkit.
GPE is not a single piece of software, but an entire environment of components which make it possible to use your GNU/Linux handheld for standard tasks such as Personal Information Management (PIM). GPE makes it easy for developers to create powerful programs, by giving them the infrastructure they need.
Besides providing core software such as shared libraries, and perhaps more importantly, the GPE environment fixes standards for program interaction, such as SQL, XML, and other data schemas."
A recent development has been the launch of GPE Phone edition. This aims to implement a complete LIPS compliant software stack. For more information on GPE in general, visit [3]
Hiker (Access Linux Platform)
The Access Linux Platform contains an application framework called Hiker. Hiker is built on top of GTK+ and provides facilities to allow applications to exchange data etc. More information at the Access Linux Platform's website: www.access-company.com/products/linux/alp.html
Sato is another framework based on GTK+ and is produced by OpenedHand for their "Poky" Linux distribution. Sato includes lots of applications such as games, a web browser, contact list etc. See pokylinux.org for details.
Hildon (Maemo)
Hildon is user interface part of the Maemo distribution used on Nokia web tablets. It has started to be ported to other platforms such as Ultra-Mobile computers (E.g. Samsung Q1) as part of the Ubuntu Mobile & Embedded project. It, again, is based on GTK+ and contains widgets for menus, status bars etc. The best place to look into Hildon is through the http://maemo.org website.
Sugar (OLPC)
Sugar is the user interface used in the One Laptop Per Child project. It takes a different approach to the "desktop" metaphor and uses its own unique user interface. The Sugar wiki can be found at http://wiki.laptop.org/go/Sugar.
QT/Qtopia Based Frameworks
from Qtopia's homepage: " Qtopia is unrivaled as the application platform and user interface for Linux, allowing efficient creation of mobile and embedded devices."
Qtopia is split up into different versions, including a Qtopia Phone Edition. Qtopia core is name given to the actual application framework. Apart from several demos and examples, Qtopia cores does not come with any applications. Applications are included in the "Open Source Edition" and "Phone Edition". For more information, visit [4].
Open Palmtop Integrated Environment (OPIE)
Originally started as an alternative GUI for the Sharp Zaurus, OPIE has now spread across several devices and has a large collection of applications. Opie uses an older version of QT/Embedded which lacks many of the feature of the more modern Qtopia. However, due to it's stability & large application base it remains a very interesting prospect. More information at [5]
Enlightenment Based Frameworks
Currently, there are many distinct projects using Enlightenment on embedded devices. the developers have been working with embedded devices in mind and there are numerous blog posts about things which have been prototyped.
Fancypants is an "advanced graphics and high-performance multi-media platform for developing embedded applications in consumer, commercial and industrial devices." It is developed commercially by Fluffy Spider Technologies. It uses EVAS and Ecore from the Enlightenment project and includes a very attractive user interface. See http://www.fancypants-graphics.com/ for details, including videos showing off some of the features.
OpenInkpot is a "project for creating a free and open-source Linux distribution for eink-based devices". It is a non-commercial project developing firmware for different e-ink readers, using Evas and Ewl for the software. Currently in early stages. See the project page for further details.
Illume is an Enlightenment DR17 module to make the window manager friendly for phones and PDAs. It's in use in OpenMoko and FreeSmartPhone - FSO. This module is integrated in SVN as part of E17 modules.
Guarana is a framework on top of Enlightenment Foundation Libraries to help with Rich GUI, it ships with widgets targeted at set-top boxes and media centers (will merge with Elementary, see EFL), as well as Model-View-Controller framework and a plugin system. It's being used in Digital TV set-top boxes and Enjoy media player.
Disko is a LGPL-licensed application framework, that can be used to develop GUI applications for embedded devices. It is closely connected to the DirectFB hardware abstraction library and specialised in touchscreen and remote control navigation. It provides a plugin based management component, which enables easy writing and extending embedded applications. Media playback (DVD, DVB, IPTV and audio streams) is provided by the well known xine media library. Disko has been ported to the TI DaVinci chipset together with Direct FB and runs on x86 as well. Disko homepage
Crank Software's Storyboard UI Suite
The Crank™ Storyboard™ UI Suite is a graphical development tool and runtime engine designed for the requirements of the embedded consumer market. Crank Storyboard Designer enables user interface (UI) designers to easily prototype the look and feel of a product, and then move the prototype directly to the embedded target for deployment. The Crank Storyboard Embedded Engine is the runtime component that drives the content developed in Crank Storyboard Designer on embedded devices. It is architected exclusively to address the unique challenges of bringing a rich user interface (UI) user experience (UX) to resource-constrained embedded devices.


text:
As law and order breaks down, Christians come under attack
KATHMANDU, Nepal, July 30 (Compass Direct News) — Three years after a pro-democracy movement led to the proclamation of Nepal as a secular state, some Christians say they are in greater peril than ever.
They are now being targeted by militant Hindu organizations that blame the church for the abolition of Hinduism as the state religion and the end of monarchy. A little-known, shadowy organization that claimed to be building an army of suicide bombers has achieved notoriety with two brutal attacks on Catholics in two years.
Since May, when the Nepal Defense Army (NDA) — which claims to have links with militant Hindu organizations across the border in India — struck one of Kathmandu valley's oldest and biggest churches, the group has threatened to drive all Christians from the country. And now a group claiming to be the parent organization of the NDA has warned that on Aug. 10 it will start a "Save the Hindu nation" movement.
Police say Ram Prasad Mainali, the elusive NDA chief, hired a local woman to plant a bomb at the Assumption Church on May 23 during mass. Two women and a schoolgirl were killed in the attack. The NDA also claimed responsibility for killing a Catholic priest, John Prakash Moyalan, in southern Nepal last year.
Though police have issued an alert for his arrest, Mainali continues to evade capture, and it is murmured that he has political connections. Undeterred by the hunt, he continues to threaten the Christian community.
Last month, the Rev. Pius Perumana, a senior Catholic priest, received a phone call.
"The caller said he was in charge of the NDA in Kathmandu valley," said Perumana of Ishalaya Catholic Church, located in Godavari on the southern rim of the capital. "However, I recognized the voice. It was Ram Prasad Mainali himself."
Godavari is an important Catholic hub that includes a Catholic pastoral center, a shelter for destitute, HIV-infected women and homeless children, a day care center and a small clinic.
Perumana said he has received at least five threatening calls from the Hindu supremist ordering him to close all Christian organizations and leave Nepal, he said. The NDA leader has also been calling Protestant pastors, demanding money. In districts outside Kathmandu, where security is weak, some pastors are said to have paid up out of fear.
Mainali's success has spawned at least one copycat extortion attempt.
"At least one pastor in Kathmandu has received an extortion letter," said Chirendra Satyal, spokesman of the Assumption Church. "The writer claimed to be the vice-president of a Hindu group, the National Defence Party (NDP), calling it the mother organization of which Mainali's NDA was the military arm. The pastor was asked to pay 7.5 million Nepalese rupees [US$98,190]."
The letter warned that starting on Aug. 10, the underground organization will start a "Save the Hindu nation" movement.
No Christian Corpses
Until three years ago, Nepal used to be the only Hindu kingdom in the world where Christians faced discrimination by the state, ostracization by society and imprisonment if found guilty of preaching Christ.
Things officially changed in 2006 after a pro-democracy movement led to the ouster of the army-backed regime of Hindu King Gyanendra, and Parliament proclaimed the Himalayan kingdom a secular, federal state.
But three years later, nothing has changed in reality, said the Rev. Nayaran Sharma, bishop of the Protestant Believers' Church.
"We bought a plot of land in a forest in Gorkha district in western Nepal so that we could have an official graveyard," Sharma told Compass. "But when the locals heard of it, they made us return the land, saying they did not want corpses in their midst as they would attract evil."
Even three years after Nepal became secular, Christians have to be buried clandestinely on private property with the danger of graves being dug up, he said.
"Churches have not yet been registered by the government, and so we don't get state assistance like the Hindu temples and Muslim mosques do," Sharma said. "Temples are provided free land, electricity and water; the madrassas — the Muslim schools — receive state funding, and the government subsidizes the annual Muslim pilgrimage to Mecca."
Christians make up about 2.5 percent of Nepal's 25 million population. Nearly 75 percent of the population in Nepal is Hindu.
Christians are said to be both angered and disheartened by the new, 601-member constituent assembly mandated to draft a new constitution by May 2010.
"There's not one Christian among the 601, though the government had the power to nominate members from unrepresented communities," Sharma said. "Though Christianity has been in Nepal for almost 350 years, Christians are still like orphans. There is no one to speak for us, and we are discriminated against beyond imagination."
Soft Targets
Political instability and the subsequent lawlessness and impunity leave Christians vulnerable to violence, as Sanjay Ekka, a Catholic priest from India's impoverished Jharkhand state, learned on Monday (July 27).
Ekka came to Nepal in 2000 to teach at St. Xavier's School, a Jesuit-run school in eastern Jhapa district. Five years ago, he was brought to the capital city of Kathmandu to run the Loyola Students' Home, a hostel for boys from the Tamang community of Nepal, who, like Ekka's own tribe, the Oraons, are among the poorest, least educated and most oppressed groups in Nepal.
Despite the similarities of the two tribes, the 40-year-old Ekka was subjected to a savage attack on Monday (July 27) by an expelled student that left his left arm severely slashed and deep gashes on his hip.
"It's another sign of the growing lawlessness in the country," says the Rev. Lawrence Maniyar, former principal of St. Xavier's School in Kathmandu valley, which was founded in 1951. "With crimes soaring, Christians are being targeted as they are seen as soft targets."
Another factor endangering Christians in Nepal is the tension in the nascent republic's relations with its southern neighbor and largest trading partner, India. As the smaller neighbour, Nepal has lived in fear of being annexed since 1975, when the kingdom of Sikkim decided to abrogate monarchy and become part of India after a controversial referendum.
Tensions worsened in 1989, when India imposed a virtual blockade of Nepal, hitting the fragile economy of the land-locked kingdom. A substantial number of Christian priests in Nepal are from India.
"The heads of three Catholic organizations have been asked to leave Nepal," said Bishop Anthony Sharma.
They are the Rev. Boniface Tigga, principal of St. Xavier's School in Kathmandu valley, the principal of St. Mary's Higher Secondary School, identified only as Sister Nancy, and Sister Teresa Mandassery, who heads the Navjyoti Day Care Center for the mentally challenged in Kathmandu. All three are from India.
"Now the animosity is out in the open," said Maniyar of St Xavier's in Kathmandu valley. "There has been growing union trouble in St. Xavier's School. While we were holding talks with the union representatives, they told us to our face, 'You priests from Kerala [in southern India] think you can run the school the way you want."
Maniyar said it is useless trying to explain reality to such people.
"We are in Nepal not because we are Indians," he says. "We are here because we are Jesuits. It is an international organization with an administrative structure of its own, and we have to follow our superiors and go where ever they want us to."


text:
William P. Hilger started what would become Stearns, Inc. among the lakes and plains of central Minnesota. His first successful product was an electrically powered windshield heater that was a big hit in the colder climates of central Minnesota in the late 1920's, and eventually was a must-have product for cars from California to Maine. The company changed hands after World War II and became Stearns Manufacturing Company. The heating systems in cars had matured to the point where, anymore, the idea of needing a frost shield was old-fashioned. The business then turned towards the future: Plastics.
In the ensuing decades, Stearns would manufacture high quality outdoor products such as life jackets, water ski belts, and plastic boat interiors. Federal law changes in 1971 allowed companies to actually design a better looking Type III PFD that didn't have to be a bulky orange block. This was the starter's gun in a race towards ownership of the designed PFD market; a race that Stearns would easily win. In 2008, Coleman added to its family of brands the distinct quality of Stearns products, the most recognized player in the life jacket business. Consider the brightly colored and best-selling kids' floaties, the Stearns Puddle Jumpers. It's a natural fit.
Many of your favorite Stearns® products are designed, made and assembled in the US. Stearns, a subsidiary of The Coleman Company, Inc., is investing millions of dollars into the Sauk Rapids, MN facility where these world-class products are designed, tested and made to higher standards. It's just one more way we bring quality, safety and innovation to the water.


text:
Bongo Man Tribal Music Percussions iPhone Cases
Design by BluedarkArt TheChameleonART | ArtsCase Shop
Bongo Man Tribal Music Percussions iPhone X Cases - Design by BluedarkArt
The series Tough Cases offers the possibility of protecting your Apple iPhone X with DOUBLE protection and Slim Profile
This Series offers an extra layer of protection with its dual layer of hard rubber case and TPU.
This Phone case for iPhone X its made with Polycarbonate, a premium material known for its durability and resistance to high impact. With no additional bulk, protects your device against shock and scratches
This Designer Phone Cases showcase an exclusive graphic design made by Artists and famous designers from all over the world so you can have an stylish phone case that goes with your personality
FOLLOW THECHAMELEONART on FACEBOOK! Thank You! :)


text:
Becoming a True Disciple
As we obey His commandments and serve our fellowmen, we become better disciples of Jesus Christ.
Those of us who have entered into the waters of baptism and received the gift of the Holy Ghost have covenanted that we are willing to take upon ourselves the name of Jesus Christ, or in other words, we declare ourselves to be disciples of the Lord. We renew that covenant each week as we partake of the sacrament, and we demonstrate that discipleship by the way that we live. Such discipleship was beautifully demonstrated in recent events in Mexico.
It had been a beautiful spring for the fruit-growing communities in northern Mexico. The fruit trees were in full bloom, and expectations were high for a bounteous harvest. Plans were already being made to pay off loans, replace needed equipment and aging orchards, and meet personal commitments such as school tuition for family members. Plans were even being made for family vacations. There was a general air of optimism. Then, on a Monday afternoon in late March, a winter storm moved in, and it began to snow. It snowed until about three o'clock in the morning. Then, as the clouds moved out, the temperature plummeted. Throughout the night and early morning, every effort was made to save at least a part of the fruit crop. It was all to no avail. It simply got too cold, and the crop was totally frozen. There would be no fruit to be harvested and sold this year. Tuesday dawned with the sickening and disheartening loss of all those wonderful plans, expectations, and dreams of just the day before.
I received an email regarding that terrible Tuesday morning from Sandra Hatch, the wife of John Hatch, then-first counselor in the presidency of the Colonia Juárez Chihuahua Temple. I quote portions of that email: "John got up early—about 6:30—to run up to the temple to see if we should cancel the session this morning. He came back saying that the parking lot and road were clear, so we decided to go ahead. We figured that maybe some of the workers who didn't have orchards would come, and we could put all the workers into the session. … It was so inspiring to see the men come in, one after another. There they were, after no sleep at all, and figuring their crops were lost. … I was watching them during our preparation meeting, and they were having a hard time staying awake. But instead of figuring they had a good excuse to not come, they were there. And there were 38 people in the session (a full session)! It was an uplifting morning for us, and we thanked Heavenly Father for good people who do their duty, no matter what happens. I felt a special spirit there this morning. I am sure He was pleased to know that we love His house and felt that it was a good place to be on such a difficult morning."
The story does not end there and in fact is still ongoing.
Most of those who lost their fruit crop had some land available on which to plant alternative crops for the season, such as chili peppers or beans. These crops could provide at least some cash flow sufficient to survive on until next year's fruit crop. However, there was one good brother with a young family who did not have additional land and was facing a year with no revenue at all. Others in the community, seeing the dire situation of this brother and acting on their own initiative and expense, arranged for a piece of property, used their own equipment to prepare the land, and provided the chili plants for him to plant.
I know the men about whom I have just spoken. Knowing them, I was not surprised at what they did. But those who do not know them will probably be asking two questions, both beginning with the word why. Why would they come to the temple to perform their duties and to serve after having been up all night long, only to realize that they had lost the greater part of their revenue for the whole year? Why would they use what were now scarce and very precious resources to help another in desperate need when they themselves were now in such dire financial straits?
If you understand what it means to be a disciple of Jesus Christ, then you will know the answer to these two questions.
Making the covenant to be a disciple of Christ is the beginning of a lifelong process, and the path is not always easy. As we repent of our sins and strive to do what He would have us do and serve our fellowmen as He would serve them, we will inevitably become more like Him. Becoming like Him and being one with Him is the ultimate goal and objective—and essentially the very definition of true discipleship.
As the Savior asked His disciples when He visited the American continent, "Therefore, what manner of men ought ye to be?" And then, answering His own question, He said, "Verily I say unto you, even as I am" (3 Nephi 27:27).
Becoming as the Savior is not an easy task, especially in the world in which we live. We face obstacles and adversity virtually every day of our lives. There is a reason for this, and it is one of the primary purposes of mortality. As we read in Abraham 3:25, "And we will prove them herewith, to see if they will do all things whatsoever the Lord their God shall command them."
These tests or trials vary in nature and intensity. But no one will leave this mortal existence without passing through them. Mostly, we picture trials as the loss of a crop or a job; the death of a loved one; illness; physical, mental, or emotional incapacitation; poverty; or loss of friends. However, even the attainment of seemingly worthwhile objectives can bring their own dangers of unhelpful pride, where we aspire more to the honors of men than the approbation of heaven. These may include worldly popularity, public recognition, physical prowess, artistic or athletic talent, prosperity, and riches. Regarding these latter trials, some of us may have feelings similar to those expressed by Tevye in Fiddler on the Roof: If riches are a curse, "may [God] smite me with it. And may I never recover!"1
But these latter types of trials may be even more daunting and dangerous and more difficult to overcome than the former. Our discipleship will be developed and proven not by the type of trials that we are faced with but how we endure them. As we have been taught by President Henry B. Eyring: "So, the great test of life is to see whether we will hearken to and obey God's commands in the midst of the storms of life. It is not to endure storms, but to choose the right while they rage. And the tragedy of life is to fail in that test and so fail to qualify to return in glory to our heavenly home" ("Spiritual Preparedness: Start Early and Be Steady," Liahona and Ensign, Nov. 2005, 38).
I am the proud grandfather of 23 grandchildren. They never cease to amaze me with their grasp of eternal truths, even in their very early and tender years. As I was preparing for this talk, I asked each of them to send me a very brief definition of what it meant to them to be a disciple or a follower of Jesus Christ. I received wonderful answers from all of them. But I would like to share with you this response from eight-year-old Benjamin: "Being a disciple of Jesus Christ means being an example. It means being a missionary and preparing to be a missionary. It means to serve others. It means you read the scriptures and say your prayers. It means you keep the Sabbath day holy. It means you listen to the promptings of the Holy Ghost. It means going to church and going to the temple."
I agree with Benjamin. Discipleship is all about doing and becoming. As we obey His commandments and serve our fellowmen, we become better disciples of Jesus Christ. Obedience and submission to His will bring the companionship of the Holy Ghost, along with those blessings of peace, joy, and security that always accompany this third member of the Godhead. And they can come in no other way. Ultimately, it is total submission to His will that helps us become as our Savior is. Again, becoming like Him and being one with Him is the ultimate goal and objective—and essentially the very definition of true discipleship.
Discipleship is what I saw being practiced in the Colonia Juárez Temple and in its nearby fields as brothers and sisters in the faith reaffirmed their commitments to God and to each other despite heartrending adversity.
I testify that as we obey His commandments, serve others, and submit our will to His will, we will, indeed, become His true disciples. I so testify in the name of Jesus Christ, amen.


text:
Bar and Waiting Apprenticeship
- Employer
- Lifetime Training
- Location
- Chester
- Salary
- £224.70 - 312.60 per week
- Closing date
- 7 Jan 2024
View more
- Specialism
- Catering
- Sector
- Hospitality & Travel
- Role Type
- Apprenticeship, Intermediate
- Start Date
- Immediate
- Duration
- 12-18 months
Job Details
As Bar and Waiting Staff at Vintage Inns you are the personality behind the beer pumps, the expert on the drink's menu and know our food menu inside out, frequently recommending your favourites. As the friendly face our guests remember, you'll inject your personality every moment you're with our guests so that they love to come back time and time again.
-Greet, serve and look after our guests
-Maintain the highest standards of cleanliness and safety
-Work with the team to create a friendly atmosphere our guests will love
-Know the menus inside out, making recommendations to our guests
-Be a champion of brand standards
You don't even need any experience. So long as you can provide a warm, helpful manner to everyone you meet, we can teach you the ins and outs of working as part of our busy teams.
By taking on a full-time role as a bar and waiting apprentice under the supervision of our passionate teams, not only will you achieve a Level 2 Hospitality Team Member Apprenticeship, you will be able to support the running of our businesses, creating some amazing moments!
What your apprenticeship includes
-A mixture of face to face and skype/phone catch ups every 4 - 6 weeks
-A mixture of on and off the job training, including workshops and webinars
-Reviews every 12 weeks with the Apprentice, Line Manager and Lifetime Trainer
-Feedback sessions to discuss progress
-Obtain Functional Skills in English and Maths (if you don't already have GCSE)
-30 hours paid work every week
Benefits for M&B staff
-Love eating out? You'll love it even more with a massive 33% discount across all our brands. Whether its date night at Miller & Carter or family roast at Toby Carvery, we've got you covered.
-Never a dull moment - fun, laughs and lifelong friends!
-Funded qualification up to degree level
-Charity is important to us. From the company charities to the one which is close to your heart; you can choose how to give something back.
-Enjoy a 33% discount off a cosy stay at our Inn Keepers Lodges.
-On top of all this, we offer a pension; 28 days paid holiday; high-street shopping discounts; and we even give you free shares!
Wage will be:
16-20 years old - £7.49 an hour
21-22 years old - £10.18 an hour
23+ years old - £10.42 an hour
At Mitchells and Butlers you will be working towards a Hospitality Team Member Level 2 Apprenticeship standard over the course of 15 months.
Lifetime provides award-winning apprenticeship programmes and expert strategy advice. We are specialists in delivering apprenticeships across the Business Services, Management, Health and Social Care, Early Years, Active Leisure, Hospitality and Retail sectors between levels 2 to 5. We've developed through organic growth and strategic acquisitions over the last 25 years to become the UK's largest national provider of apprenticeships. We support over 20,000 learners a year, using our extensive knowledge and robust resource. Our team of over 1,000 employees ensures that we provide high quality, national coverage. Lifetime's Head Office houses our Operations 'Support Hub', while our delivery teams of Regional Trainers, English and maths Tutors, Area Managers, and Quality Improvement Coaches are field-based throughout the UK. This ensures that we can offer nationwide coverage with local delivery.
- Website
- https://www.lifetimetraining.co.uk/
- Telephone
- 0333 014 3669
Get job alerts
Create a job alert and receive personalised job recommendations straight to your inbox.
Create alert


text:
Cozen O'Connor expands in Wilmington
Cozen O'Connor has hired a bankruptcy partner from Whiteford Taylor & Preston in Delaware.
To read more
Subscribe to Global Restructuring Review
Register for limited access
Register to receive our newsletter and gain limited access to subscriber content.
Register now
Subscribe to unlock unlimited access
Get news, unique commentary, expert analysis and essential resources from the Global Restructuring Review experts.
Subscribe now


text:
General and description
Cpfind is a control point detector for hugin. It expects a project file as input and write a project file with control points on success. The general usage is
cpfind -o output.pto input.pto
Internal the control point detector algorithm is divided into 2 parts:
- The first step is the feature description: In this step the images of the project file are loaded and so called keypoints are searched. They describe distinctive features in the image. Cpfind is using a gradient based descriptor for the feature description of the keypoints.
- In a second step, the feature matching, all keypoints of two images are matched against each other to find features which are on both images. If this matching was successful two keypoints in the two images become one control point.
Rectilinear and fisheye images
Cpfind can find control points in rectilinear and fisheye images. To achieve good control points images with a high horizontal field of view (e.g. ultra wide rectilinear or fisheye) are therefore remapped into a conformal space (cpfind is using the stereographic projection) and the feature matching occurs in this space. Before writing the control points the coordinates are remapped back to the image space. This happens automatic depending on the information about the lens in the input project file. So check that your input project file contains reasonable information about the used lens.
Using celeste
Outdoor panorama often contains clouds. Clouds are bad areas for setting control points because they are moving object. Cpfind can use the same algorithm as celeste_standalone to masked out areas which contains clouds. (This is only done internal for the keypoint finding step and does not change the alpha channel of your image. If you want to generate a mask image use celeste_standalone). To run cpfind with celeste use
cpfind --celeste -o output.pto input.pto
Using cpfind with integrated celeste should be superior against using cpfind and celeste_standalone sequential. When running cpfind with celeste areas of clouds, which often contains keypoints with a high quality measure, are disregarded and areas without clouds are used instead. When running cpfind without celeste also keypoints on clouds are found. When afterwards running celeste_standalone these control points are removed. In the worst case all control points of a certain image pair are removed.
So running cpfind with celeste leads to a better "control point quality" for outdoor panorama (e.g. panorama with clouds). Running cpfind with celeste takes longer than cpfind alone. So for indoor panorama this option does not need to specified (because of longer computation time).
The celeste step can be fine tuned by the parameters --celesteRadius and --celesteThreshold.
Matching strategy
All pairs
Here all image pairs are matched against each other. E.g. if your project contains 5 images then cpfind --allpairs matches the image pairs: 0-1, 0-2, 0-3, 0-4, 1-2, 1-3, 1-4, 2-3, 2-4 and 3-4
This strategy works for all shooting strategy (single-row, multi-row, unordered). It finds (nearly) all connected image pairs. But it is computational expensive for projects with many images, because it test many image pairs which are not connected.
Linear match
This matching strategy works best for single row panoramas:
cpfind --linearmatch -o output.pto input.pto
This will only detect matches between adjacent images, e.g. for the 5 image example it will matches images pairs 0-1, 1-2, 2-3 and 3-4. The matching distance can be increased with the switch --linearmatchlen. E.g. with --linearmatchlen 2 cpfind will match a image with the next image and the image after next, in our example it would be 0-1, 0-2, 1-2, 1-3, 2-3, 2-4 and 3-4.
Multirow matching
Since Hugin 2024.0 this is the default matching strategy. This is an optimized matching strategy for single and multi-row panorama:
cpfind --multirow -o output.pto input.pto
The algorithm is the same as described in multi-row panorama. If after running this multi-row approach not all images are connected then all not yet checked image pairs are matched against each other. By integrating this algorithm into cpfind it is faster by using several cores of modern CPUs and don't caching the keypoints to disc (which is time consuming). If you want to use this multi-row matching inside hugin set the control point detector type to All images at once, this is so that Hugin passes all images to cpfind and lets cpfind apply the multirow matching smarts itself.
Matching overlapping images (prealigned panorama)
This setting is for finding control points in panorama, in which the rough positions of the images are already known (e.g. when using a template or when generating the pto file by a script)
cpfind --prealigned -o output.pto input.pto
This algorithm does only matches images pairs, which overlaps and don't already have control point. All other image pairs are ignored.
The algorithm is the same as described in prealigned control point detector setting. By integrating this algorithm into cpfind it is faster by using several cores of modern CPUs and don't caching the keypoints to disc (which is time consuming). If you want to use this prealigned matching inside hugin set the control point detector type to All images at once.
Keypoints caching to disc
The calculation of keypoints takes some time. So cpfind offers the possibility to save the keypoints to a file and reuse them later again. With --kall the keypoints for all images in the project are saved to disc. If you only want the keypoints of particular image use the parameter -k with the image number:
cpfind --kall input.pto cpfind -k 0 -k 1 input.pto
The keypoint files are saved by default into the same directory as the images with the extension .key. In this case no matching of images occurs and therefore no output project file needs to specified. If cpfind finds keyfiles for an image in the project it will use them automatically and not run the feature descriptor again on this image. If you want to save them to another directory use the --keypath switch.
This procedure can also be automate with the switch --cache:
cpfind --cache -o output.pto input.pto
In this case it tries to load existing keypoint files. For images, which don't have a keypoint file, the keypoints are detected and saved to the file. Then it matches all loaded and newly found keypoints and writes the output project.
If you don't need the keyfile longer, the can be deleted automatic by
cpfind --clean input.pto
Extended options
Feature description
For speed reasons cpfind is using images, which are scaled to their half width and height, to find keypoints. With the switch --fullscale cpfind is working on the full scale images. This takes longer but can provide "better" and/or more control points.
The feature description step can be fine-tuned by the parameters:
--sieve1width <int> Sieve 1: Number of buckets on width (default: 10)
--sieve1height <int> Sieve 1: Number of buckets on height (default: 10)
--sieve1size <int> Sieve 1: Max points per bucket (default: 100)
--kdtreesteps <int> KDTree: search steps (default: 200)
--kdtreeseconddist <double> KDTree: distance of 2nd match (default: 0.25)
Cpfind stores maximal sieve1width * sieve1height * sieve1size keypoints per image. If you have only a small overlap, e.g. for 360 degree panorama shoot with fisheye images, you can get better results if you increase sieve1size. You can also try to increase sieve1width and/or sieve1height.
Effectively cpfind splits your image in rectangles or buckets: sieve1width horizontally by sieve1height vertically. It will try to find sieve1size keypoints per bucket. This ensures a reasonably uniform distribution of interest points over your image. These features will be matched in the matching step. With the default parameters, up to 10000 interest points will be used in the feature matching step.
Feature matching
Fine-tuning of the matching step by the following parameters:
--ransaciter <int> Ransac: iterations (default: 1000)
--ransacdist <int> Ransac: homography estimation distance threshold (pixels) (default: 25)
--ransacmode <string> Select the mode used in the ransac step. Possible values: auto, hom, rpy, rpyv, rpyb (default: auto)
- hom: Assume a homography. Only applicable for non-wide angle views. Uses the original panomatic code. It is also more flexible than required and can generate false matches, particularly if most of the matches are located on a single line.
- rpy: Align images using roll, pitch and yaw. This requires a good estimate for the horizontal field of view (and distortion, for heavily distorted images). It is the preferred mode if a calibrated lens is used, or the HFOV could be read successfully from the EXIF data.
- rpyv: Align pair by optimizing roll, pitch, yaw and field of view. Should work without prior knowledge of the field of view, but might fail more often, due to error function used in the panotools optimizer, it tends to shrink the fov to 0.
- rpyvb: Align pair by optimizing roll, pitch, yaw, field of view and the "b" distortion parameter. Probably very fragile, just implemented for testing.
- auto: Use homography for images with hfov < 65 degrees and rpy otherwise.
--minmatches <int> Minimum matches (default: 4)
--sieve2width <int> Sieve 2: Number of buckets on width (default: 5)
--sieve2height <int> Sieve 2: Number of buckets on height (default: 5)
--sieve2size <int> Sieve 2: Max points per bucket (default: 1)
Cpfind generates between minmatches and sieve2width * sieve2height * sieve2size control points between an image pair. (Default setting is between 4 and 25 (=5*5*1) control points per image pair.) If less then minmatches control points are found for a given image pairs these control points are disregarded and this image pair is considered as not connected. For narrow overlaps you can try to decrease minmatches, but this increases the risk of getting wrong control points. This filtering step (sieve2) works similar like sieve1 step described above: The rectangular area, which is covered by control points, is divided into sieve2width * sieve2height rectangles/buckets - sieve1width horizontally by sieve1height vertically. For each bucket only sieve2size control points are saved in the project file. This step is intended to get an uniform distribution of the control points.


text:
BeagleBoard/GSoC/2010 Projects/Pulse Width Modulation
Project: Pulse Width Modulation
Student: Varun Jewalikar
Mentors: Søren Steen Christensen, Cristina Murillo
Repository: http://github.com/neo01124/omap3-pwm
Blog: http://beagleboard-pwm.blogspot.com/
The main aim of this project will be to provide a high level interface for the Pulse Width Modulation output pins of the OMAP3 found on the BeagleBoard. Another aim will be to push this driver upstream(the Linux-OMAP tree). Two applications will be developed to demonstrate the use of this driver:
- Motor control using PWM signals generated by the BeagleBoard using the PWM driver.
- Writing a glue layer for ALSA to communicate with the PWM driver and output sound from the PWM output pins.
Build and Run instructions
- Clone my git tree for the driver.This can be done using the following commands:
git clone git://github.com/neo01124/omap3-pwm.git cd omap3-pwm/
- For newer kernel versions, you can try the fork of the original project (should work with the BeagleBone).
git clone git://github.com/jyore/omap3-pwm.git cd omap3-pwm
- A cross compiling environment will be needed for compiling the driver. Instructions below work with OpenEmbedded but can adapted for codesourcery as well.
$ vim beagle-source-me.txt
Edit the OETREE path. OETREE should point to the OE folder. For me OETREE= ~/OE .
$ source beagle-source-me.txt
This will set the environment variables for cross compilation.
$ make
This will generate the requisite pwm.ko kernel module file.
- Copy the pwm.ko to your target board.
- Once on the system, use insmod to load using the optional frequency parameter. The default frequency is 1024 Hz. Use multiples of two with a max of 16384. pwm9_enable,pwm10_enable and pwm11_enable and frequency are load time parameters.
root@beagleboard# ls pwm.ko root@beagleboard# insmod pwm.ko pwm9_enable=1
The driver implements a character device interface. When it loads, it will create a /dev/pwm9 entry.
- To setup multiple pwm signals on the GPT9/10/11 you should use
root@beagleboard# insmod pwm.ko pwm9_enable=1 pwm10_enable=1
This will work similarly for any other (pwm_9/10/11) combinations as well.
- There are two ways of modifying the parameters from userland.
Using the sysfs interface (Not advised and fully supported) : Then to issue commands you can use any program that can do file I/O cat and echo will work.
root@beagleboard# cat /dev/pwm9 PWM9 Frequency 1024 Hz Stopped root@beagleboard# echo 50 > /dev/pwm9 root@beagleboard:~# cat /dev/pwm9 PWM9 Frequency 1024 Hz Duty Cycle 50% root@beagleboard:~# echo 80 > /dev/pwm9 root@beagleboard:~# cat /dev/pwm9 PWM9 Frequency 1024 Hz Duty Cycle 80%
You can put an oscope on pin 28 of the expansion board to see the signal. Use pin 15 for ground. Or you can measure the voltage on pin 28 and you'll see the duty cycle percentage of 1.8v.
- Using the ioctl() calls :
A fully supported ioctl() interface is available and it is advised to prefer this over the above sysfs interface. Sample code to use the ioctl interface:
#include <termios.h> #include <fcntl.h> #include <errno.h> #include <sys/ioctl.h> #include <linux/ioctl.h> //#define PWM_IOC_MAGIC 0x00 /**/ #define PWM_SET_DUTYCYCLE 1074003969 #define PWM_GET_DUTYCYCLE 1074003970 #define PWM_SET_FREQUENCY 1074003971 #define PWM_GET_FREQUENCY 1074003972 #define PWM_ON 1074003973 #define PWM_OFF 1074003974 #define PWM_SET_POLARITY 1074003975 main() { int fd, status, k, f, sc; fd = open("/dev/pwm9", O_RDWR); scanf("%d", &k); scanf("%d", &f); scanf("%d", &sc); if (ioctl(fd, PWM_SET_FREQUENCY, f) == -1) printf("TIOCMGET failed: %s\n", strerror(errno)); if (ioctl(fd, PWM_SET_DUTYCYCLE, k) == -1) printf("TIOCMGET failed: %s\n", strerror(errno)); if (ioctl(fd, PWM_SET_POLARITY, sc) == -1) printf("TIOCMGET failed: %s\n", strerror(errno)); printf("%d",ioctl(fd, PWM_GET_FREQUENCY, sc)); printf("\n%d",ioctl(fd, PWM_GET_DUTYCYCLE, sc)); close(fd); }
- For more information refer to the README file. [1]
Kernel Patch
The kernel config option CONFIG_OMAP_RESET_CLOCKS is enabled in the default beagleboard defconfigs. You'll get an oops using pwm.ko with this enabled. This is a kernel power saving feature. You'll need to disable this config option to use this driver. Below is a sample patch for linux-omap-2.6.32's defconfig. Adjust for the kernel you are using. Gumstix users already have this turned off in default kernels.
diff --git a/recipes/linux/linux-omap-2.6.32/beagleboard/defconfig b/recipes/linux/linux-omap-2.6.32/beagleboard/defconfig index cebe1f5..2dad30c 100644 --- a/recipes/linux/linux-omap-2.6.32/beagleboard/defconfig +++ b/recipes/linux/linux-omap-2.6.32/beagleboard/defconfig @@ -241,7 +241,7 @@ CONFIG_ARCH_OMAP3=y # # CONFIG_OMAP_DEBUG_POWERDOMAIN is not set # CONFIG_OMAP_DEBUG_CLOCKDOMAIN is not set -CONFIG_OMAP_RESET_CLOCKS=y +# CONFIG_OMAP_RESET_CLOCKS is not set # CONFIG_OMAP_MUX is not set CONFIG_OMAP_MCBSP=y CONFIG_OMAP_MBOX_FWK=m


text:
Doug Frobel | Player Split Finder
Current Search
Doug Frobel, In the Regular Season, from 1982 to 1987, sorted by greatest Home Runs.
NEW: Sample Searches for learning more about the power and flexibility of Stathead. • Game data is only available for the American League, National League, and Federal League. Data runs from 1901 to present for regular season data, 1933-Present for the All-Star Game, and 1903-Present for the Postseason. Please see our data coverage page for details.
Sorting only sorts the values in the table shown.
There are hundreds of games prior to 1920 missing RBIs from one or both teams.


text:
Bob Beauprez on AbortionFormer Republican Representative (CO-7, 2003-2007) | |
For over thirty years, NARAL Pro-Choice America has been the political arm of the pro-choice movement and a strong advocate of reproductive freedom and choice. NARAL Pro-Choice America's mission is to protect and preserve the right to choose while promoting policies and programs that improve women's health and make abortion less necessary. NARAL Pro-Choice America works to educate Americans and officeholders about reproductive rights and health issues and elect pro-choice candidates at all levels of government. The NARAL ratings are based on the votes the organization considered most important; the numbers reflect the percentage of time the representative voted the organization's preferred position.