c3context: Calculate the view projection matrix
Turns out everything was there to do it
Signed-off-by: Michel Pollet <buserror@gmail.com>
c3camera: Added a field-of-view
For calculating perspective matrix
reprap: Updated to reflects changes to libc3
New fbo layer, lights and so on
c3gl_fbo: New bits
Implement the framebuffer objects. It doesn't cover all the cases
but it'll help for now.
Signed-off-by: Michel Pollet <buserror@gmail.com>
c3gl: Implemements lights
Handles (some) fo the light parameters
Signed-off-by: Michel Pollet <buserror@gmail.com>
c3texture: Added a resize() function
Changes the size of the display quad
Signed-off-by: Michel Pollet <buserror@gmail.com>
c3program: can specify uniform order
By passing an array of names, these will occupy the uniform
array first, before the parsing phase populates the list
Signed-off-by: Michel Pollet <buserror@gmail.com>
c3object: Implements 'hidden' objects
Objects and geometry can be hidden from specific c3context_views
using a bitfield
Signed-off-by: Michel Pollet <buserror@gmail.com>
c3geometry: Added a set_dirty() function
Also dirties parent object
Signed-off-by: Michel Pollet <buserror@gmail.com>
c3context: Make sure lights are 'drawn' first
Make sure the light pseudo geometries are always
at the top of the list
Signed-off-by: Michel Pollet <buserror@gmail.com>
c3light: New bit
Records lights position/type and can be carried around
in the geometry, transformed etc.
Signed-off-by: Michel Pollet <buserror@gmail.com>
c3gl: Implemented buffer objects and vertex array objects
Supports vertex objects. Still need support for updating them
Signed-off-by: Michel Pollet <buserror@gmail.com>
c3algebra: Added ortho matrices
Including screen oriented ones
Signed-off-by: Michel Pollet <buserror@gmail.com>
c3geometry: Added geometry buffers
added storage fields for buffer objects
Signed-off-by: Michel Pollet <buserror@gmail.com>
libc3: c_array tweaks
'free' no longer clears the entire struct, only generic
array fields
'realloc' frees the array if passed zero elements
Signed-off-by: Michel Pollet <buserror@gmail.com>
c3context: Added a view draw callback
Unused for now, prepares a view to be drawn
Signed-off-by: Michel Pollet <buserror@gmail.com>
c3geometry: Removed projected vertices
Now uses a world aligned transform matrix. Changed randering code
to use it. Still use a projection matrix for now.
Signed-off-by: Michel Pollet <buserror@gmail.com>
c3algebra: Added frustrum and full perspective
Replacements for glu stuff
Signed-off-by: Michel Pollet <buserror@gmail.com>
c3camera: matrix contains the eye position
Moved stuff around and added the translation to eye coordinates
to the matrix.
Signed-off-by: Michel Pollet <buserror@gmail.com>
spi: Reset the SPI Interrupt Flag
Reset the SPI Interrupt Flag in SPSR uppon read of a SPI byte.
via sebastien.besombes@gmail.com
Signed-off-by: Michel Pollet <buserror@gmail.com>
uart: Made the stdio buffer non-static
Thanks to sebastien.besombes@gmail.com for the report
Signed-off-by: Michel Pollet <buserror@gmail.com>
shared: Removed mongoose
It was never needed in the end
Signed-off-by: Michel Pollet <buserror@gmail.com>
reprap: Split arduidiot_pins for generic use
Returns a simavr irq for an arduinio pin (only for m644 for now)
Signed-off-by: Michel Pollet <buserror@gmail.com>
libc3: remerged
Submodules are a bit sensitive, so I'm remerging this and will use
'git subtree' instead to split libc3 development
Signed-off-by: Michel Pollet <buserror@gmail.com>
gitignore: Updated
Added custom build flags file
Signed-off-by: Michel Pollet <buserror@gmail.com>
simduino: Updated readme
Since it now uses a pty directly
Signed-off-by: Michel Pollet <buserror@gmail.com>
reprap: Uses libc3gl too now
Moved generic code out
Signed-off-by: Michel Pollet <buserror@gmail.com>
reprap: Added support for indexed elements
And spheres
Signed-off-by: Michel Pollet <buserror@gmail.com>
cores: Now duplicate the global structure
Strangely, it didn't, so you could not allocate 2 cores even tho nothing else
is there to stop it...
Signed-off-by: Michel Pollet <buserror@gmail.com>
libc3: Update
Minor update
Signed-off-by: Michel Pollet <buserror@gmail.com>
libc3: Few more updates
c3context can have several viewpoints
c3context has a list of c3programs
c3camera got renamed with standard type names
c3context/c3geometry driver got a dispose callback
gl code has a new generic glsl program loader
Signed-off-by: Michel Pollet <buserror@gmail.com>
libc3: Added c3program
To load shader(s)
Signed-off-by: Michel Pollet <buserror@gmail.com>
reprap: c_utils updates
Added a fre accessors
Signed-off-by: Michel Pollet <buserror@gmail.com>
uart_pty: Add CR/LF conversion to the tap
Make sure whst we type is converted too
Signed-off-by: Michel Pollet <buserror@gmail.com>
reprap: Implemented the 'heatpot'
Somehow raise a temperature using a score, reduces it automatically etc
Signed-off-by: Michel Pollet <buserror@gmail.com>
uart_pty: Introduced the notion of 'tap' port
The previous way to debug was 'stealing' the port by using an xterm on it..
the new way leaves the proper pty available to the application you want to use
but still allow you to have a 'tap' port that sees both the sides of the
communication om the other pty.
You can also type stuff obviously, and it does some cr/lf conversions.
/tmp/simavr-uart0 : will be the normal fake serial port
/tmp/simavr-uarttap0 : is the one to launch an xterm on
This allow you to really see the serial traffic as it happends with both
requests and replies.
Signed-off-by: Michel Pollet <buserror@gmail.com>
reprap: Compatibility with OSX
The shader now works on both platform
Removed the .bin file, made sure it never happends again
Signed-off-by: Michel Pollet <buserror@gmail.com>
reprap: c3 update etc
probably last update befire I spin it out
Signed-off-by: Michel Pollet <buserror@gmail.com>
reprap: Delete mongoose
Don't need that anymore
Signed-off-by: Michel Pollet <buserror@gmail.com>
core: Cycle timer small fix
Makes it better on threaded GL on OSX
Signed-off-by: Michel Pollet <buserror@gmail.com>
reprap: c3 update
Also:
freenode group verification: token jkndwaw234
Signed-off-by: Michel Pollet <buserror@gmail.com>
cores: New avr-libc fixes
New debian avr-libc has actually deprecated register names, unfortunately
the other distros will catchup in 4 years or so, so we still have to
reactivate them .
Signed-off-by: Michel Pollet <buserror@gmail.com>
usb: Fix for new compiler
Progmem now need 'const'. Also fixed the makefile
Signed-off-by: Michel Pollet <buserror@gmail.com>
reprap: Steppers use proper logic
For underflow detection, instead of using a signed value
Signed-off-by: Michel Pollet <buserror@gmail.com>
Makefile: Use CPPFLAGS for -I stuff
CFLAGS is for code generation
Signed-off-by: Michel Pollet <buserror@gmail.com>
Makefile: Include a .make.options if present
A file .make.options will be loaded if present. It allows specifyong host
dependent flags without polluting the makefile, or use flags that wont work
on all hosts.
My current one contains:
export CC = clang
export CFLAGS = -march=corei7-avx
Signed-off-by: Michel Pollet <buserror@gmail.com>
reprap: c3 documentation
Some documentation. c2 is probably going to be spin out soon
Signed-off-by: Michel Pollet <buserror@gmail.com>
clang: Fixes of warning and nasty bugs
XCode 4.3 & clang fixes. Should also apply to BSD
Found a nasty bug in clang with sign bit propagation
Signed-off-by: Michel Pollet <buserror@gmail.com>
misc: Fixes clang warnings
And it found some genuine bugs too
Signed-off-by: Michel Pollet <buserror@gmail.com>
Makefiles: Tweaked to build using clang/llvm
Converted makefiles and tweaked to make it all work with clang etc.
Welcome to the future!
Signed-off-by: Michel Pollet <buserror@gmail.com>
reprap: c3 stl loader
Quick'n Dirty STL file loader, and added a small model doe the nozzle.
Signed-off-by: Michel Pollet <buserror@gmail.com>
reprap: c3 update
Allows having a custom callback set for geometries
Signed-off-by: Michel Pollet <buserror@gmail.com>
gdb: Fixed a warning
-Wall being pedantic
Signed-off-by: Michel Pollet <buserror@gmail.com>
reprap: c3 update
Added tons of stuff to the micro-scene-graph 3D code.
Signed-off-by: Michel Pollet <buserror@gmail.com>
make: Tweaks for freebsd
Use pkg-config if possible, don't use alloca()
Signed-off-by: Michel Pollet <buserror@gmail.com>
reprap: Added opengl renderer
The small red cross moves as the nozzle. Very primitive still
Rotate with the mouse, sorta.
Signed-off-by: Michel Pollet <buserror@gmail.com>
reprap: Added c3, a small scene graph lib
To display the hotend over the printer bed. Very very primitive
Signed-off-by: Michel Pollet <buserror@gmail.com>
Makefile: Bit more cleanup
Added -O2 for the examples too
Signed-off-by: Michel Pollet <buserror@gmail.com>
cleanup: Remove codecrusader file
Obsolete
Signed-off-by: Michel Pollet <buserror@gmail.com>
vhci: Added a patch
Somehow now also need an extra include...
Signed-off-by: Michel Pollet <buserror@gmail.com>
doc: Updated callgraph
Had'nt updated it in a while
Signed-off-by: Michel Pollet <buserror@gmail.com>
Makefiles: Updated for build on BSD
Remove reference to explicit 'make' and /bin/bash
Signed-off-by: Michel Pollet <buserror@gmail.com>
Migration to github, added some documentation and screenshots
github seems to have quite a bit more traction, so we're migrating the
primagry tree to github, but will also continue to mirror on gitorious.
Signed-off-by: Michel Pollet <buserror@gmail.com>
reprap: Some more updates, also a Marlin binary to test
Added a marlin binary that works, to help repsnapper's
Signed-off-by: Michel Pollet <buserror@gmail.com>
stepper: Keep position in step numbers, not mm
More precise, also use a cycle timer to send status positions in mm
Signed-off-by: Michel Pollet <buserror@gmail.com>
reprap: Added a 'relief' sleep
Tweaked Marlin to do a spurious write to GPIOR0 so allow
the simulator to get some usleep() and not use 100% cpu
Signed-off-by: Michel Pollet <buserror@gmail.com>
uart_pty: Check value of environment variable
Can set it to 0 to disable the xterm
Signed-off-by: Michel Pollet <buserror@gmail.com>
run_avr: Use the new read_ihex_chunks
Still doesn't solve the problem of the avr assembler ihex being sparse,
but at least the problem is no longer int he ihex code.
Signed-off-by: Michel Pollet <buserror@gmail.com>
ihex: Made read_ihexq_chunks allocare the table
The table is allocared and returned as the result
Signed-off-by: Michel Pollet <buserror@gmail.com>
reprap: Progress
Now the reprap board has fake stepper motors that know their position,
with endstops (they work with Marlin) also there is a way to use
arduidiot pins numbers and remap them to AVR pins..
There is a prototype "heatpot" part that will be used to collect
source and drain of heat and calculafe a temperature.
Also added mongoose embedable web server. The current plan is to
use WebGL to render the graphics of the 3D printer... altho it's
not entirely sure as yet.
Signed-off-by: Michel Pollet <buserror@gmail.com>
core: Ensure we can run in >64K flash
From an original patch from alex Bondarenko <alexian79@gmail.com>
Reworked to add a new type for flash addresses.
Signed-off-by: Michel Pollet <buserror@gmail.com>
misc: Cleanup & typos
No functional changes
Signed-off-by: Michel Pollet <buserror@gmail.com>
mega1280: Made PORTK work
This was triggering a limit in the AVR core IO table
Signed-off-by: Michel Pollet <buserror@gmail.com>
core: Increased the number of possible IOs
Also added a sanity check
Signed-off-by: Michel Pollet <buserror@gmail.com>
i2ctest: Collapsed both i2ctests into one
Just need one of these
Signed-off-by: Michel Pollet <buserror@gmail.com>
i2ctest: Added a mega1280 version
Probably will lose either this one, or the older version as they
are exactly the same
Signed-off-by: Michel Pollet <buserror@gmail.com>
i2ctest: Moved files to shared
Put the atmel i2c example to a shared directory
Signed-off-by: Michel Pollet <buserror@gmail.com>
cores: Added mega1280
Very little testing was done. ADC was fixed, but still misses the higher
differential channels
Signed-off-by: Michel Pollet <buserror@gmail.com>
ADC: Grown to 64 possible mux values
Needs a bigger ADC, the mega1280 uses 6 bits.
Signed-off-by: Michel Pollet <buserror@gmail.com>
timer: Reconfigure the timer in fast pwm mode
If OCR* changes, the timer still needs to be reconfigured in fast PWM mode.
Signed-off-by: Michel Pollet <buserror@gmail.com>
UART: Added a trace macro
Replaces the comments
Signed-off-by: Michel Pollet <buserror@gmail.com>
thermistor: Now works
Return millivolts, not ADC values
Signed-off-by: Michel Pollet <buserror@gmail.com>
New example board: reprap
Proto shell for a reprap emulator. Currently can run Marlin, up to a point
There are lots of stuff to add, but with a bit of luck we could use the
"pins.h" of the firmware itseld to configure the simavr board, and
have it "adapt" to various hardware boards.
Currently the fake thermistor has been moderately tested, and seems to work.
It needs more work, like linear extrapolation, target temps etc.
elf: Do not set values that weren't present
Some ELF binaries without a simavr section can now be loaded
Signed-off-by: Michel Pollet <buserror@gmail.com>
uart: Trace the use of the x2 flag
No functional change
Signed-off-by: Michel Pollet <buserror@gmail.com>
timer: Added phase correct mode, possibly works
Not tested..
Signed-off-by: Michel Pollet <buserror@gmail.com>
uart_pty: Added a debug terminal
You can now launch an xterm with picocom by setting environment
SIMAVR_UART_XTERM. This could (will) be improved.
Also, the uart_pty symlinks the pty pathname to /tmp/simavr-uart-X
so you can rely on a constant pathname.
Signed-off-by: Michel Pollet <buserror@gmail.com>
uart_udp: Updated, obsolete
Will probably remive this part in the future
Signed-off-by: Michel Pollet <buserror@gmail.com>
simduino: Updated, uses uart_pty
Now works properly again, and uses the new pty part.
Also removed mmap and uses a read/write instead for the flash file,
Signed-off-by: Michel Pollet <buserror@gmail.com>
uart_pty: New part
This one replaces uart_udp, that was really a toy. This new part simulates
a proper serial port (almost) on the host, and allow connection with minicom
or anything you like.
Properly implemented flow control too, do it's safe at any speed.
Signed-off-by: Michel Pollet <buserror@gmail.com>
irq: Added an INIT flag
'filtered' interrupts didn't work if the initial value was the same as the
one used to raise the irq. Now it works properly, can could also be used
to track IRQs in the pool by usage.
Signed-off-by: Michel Pollet <buserror@gmail.com>
uart: Finaly fixed the xon/xoff
Now works as intended
Signed-off-by: Michel Pollet <buserror@gmail.com>
interrupts: Delivery fix
Polled interrupts as for the UART were borken. Now fixed.
Signed-off-by: Michel Pollet <buserror@gmail.com>
fifo: Small update
Expose the size specified as a constant
Signed-off-by: Michel Pollet <buserror@gmail.com>
simavr: Now use the generated config files
Removed the statis tables, use the generated config
Also updated .gitignore
Signed-off-by: Michel Pollet <buserror@gmail.com>
Makefile: Generate config files
The Makefile now tries to detect the cores that can
be built using the current avr-gcc install. This allows
simavr to be built with older toolchain that don't have
the latest cores. Like arduidiot.
It also allows generation of an automated core list for
simavr so the run_avr and others don't have to have an
explicit list of cores. They are now autodetected.
Signed-off-by: Michel Pollet <buserror@gmail.com>
Makefile: OSX Update
Only add the MacPort dir if it's there. This
removes a warning when linking
Signed-off-by: Michel Pollet <buserror@gmail.com>
examples: Exclude USB on non-linux
Skip USB example and parts on OSX
Signed-off-by: Michel Pollet <buserror@gmail.com>
examples: Updated LCD part for OSX
Uses the proper include file on OSX
Signed-off-by: Michel Pollet <buserror@gmail.com>
misc: Updated .gitignore
Added OSX turd files
Signed-off-by: Michel Pollet <buserror@gmail.com>