e323e37829
pcu: refactor into a device
2017-02-19 19:34:55 +01:00
b05d1bb7e3
coreanalyzer: fix corner case crash
2017-02-19 19:28:13 +01:00
1573ff5fc1
coreanalyzer: add WB stb signal
2017-02-18 14:53:10 +01:00
039ced6637
coreanalyzer: use VCD scopes for DDS/SPI
2017-02-18 14:25:01 +01:00
7519408857
coreanalyzer: add SPIMaster support
2017-02-18 14:13:20 +01:00
41e8acf3ad
coreanalyzer handle input events without timestamp
...
Offset the timeline by the first non-zero timestamp.
2017-02-18 14:12:02 +01:00
bc3fc26e34
coredevice: expose PCU
2017-02-18 14:09:12 +01:00
whitequark
6fd149f048
Show a message when interrupting a running kernel (except idle kernel).
...
Fixes #625 .
2017-01-31 22:53:38 +00:00
whitequark
74b910e97d
In case of a load error, pass the reason to host interpreter.
...
Fixes #654 .
2017-01-27 12:49:48 +00:00
7c699e2f80
drtio: add FIFO space request count debug API
2017-01-11 13:48:14 -06:00
fdfaa377db
drtio: add debug syscalls
2017-01-08 15:06:14 -06:00
1b49affd18
typo
2017-01-08 13:04:10 -06:00
082fdaf450
move i2c to libboard, do bit-banging on comms CPU
2017-01-04 21:04:38 +01:00
7ff77bceac
move AD9616 and AD9154 initialization to firmware
2017-01-03 16:11:38 +01:00
5efd0fcea5
sawg: documentation
2016-12-06 19:25:40 +01:00
695eb705b3
sawg: extract spline
2016-12-04 16:52:08 +01:00
39becd0b4e
sawg: document
2016-12-04 16:50:49 +01:00
87bd2072e8
sawg: round to int64
2016-12-02 18:07:01 +01:00
6e9bc7c05d
sawg: merge set/set64
2016-12-01 16:45:54 +01:00
ed6d1e73cc
sawg: cleanup
2016-11-30 10:52:35 +01:00
fb58f31c9d
Revert "sawg: test w/o discrete_compensate"
...
This reverts commit b736dd0df7
.
2016-11-29 20:56:04 +01:00
b736dd0df7
sawg: test w/o discrete_compensate
2016-11-29 20:52:02 +01:00
d8b5eac856
sawg: style
2016-11-29 20:51:40 +01:00
d9dd79fb1a
sawg: int32 artiq python
2016-11-29 17:36:03 +01:00
4a03e3fce0
sawg: rtio_output_wide
2016-11-29 17:23:06 +01:00
f6fc7f9216
rtio: rtio_output_{list->wide}
2016-11-29 17:22:55 +01:00
313aa32779
sawg: artiq-python list scoping
2016-11-29 17:20:02 +01:00
c53040e1e4
sawg: work around #632
2016-11-29 17:01:39 +01:00
a3d9e21b8c
sawg: artiq-python changes
2016-11-29 16:58:26 +01:00
23fd225947
sawg: spline knot packing/conversion, unittest
2016-11-29 14:49:07 +01:00
6799bb097a
sawg: adapt to int32/int64 change
2016-11-22 11:57:34 +01:00
4cd2b36995
Merge branch 'phaser' into phaser2
...
* phaser:
runtime: replace a (deliberate) memory leak with an interner.
compiler: disable remarks.
runtime: rewrite i2c support code in Rust.
runtime: rewrite rtio support code in Rust.
2016-11-21 23:11:52 +01:00
feb95bf3cf
Merge branch 'master' into phaser
...
* master:
runtime: replace a (deliberate) memory leak with an interner.
compiler: disable remarks.
runtime: rewrite i2c support code in Rust.
runtime: rewrite rtio support code in Rust.
2016-11-21 22:26:52 +01:00
whitequark
a825584ac0
runtime: rewrite rtio support code in Rust.
2016-11-21 17:13:09 +00:00
4160490e0a
Merge branch 'phaser' into phaser2
...
* phaser: (23 commits)
RELEASE_NOTES: update
pipistrello: add some inputs
Remove last vestiges of nist_qc1.
Fully drop AD9858 and kc705-nist_qc1 support (closes #576 ).
coredevice.dds: reimplement fully in ARTIQ Python.
compiler: unbreak casts to int32/int64.
analyses.constness: fix false positive on x[...].
inferencer: significantly improve the op-assignment diagnostic.
Fix tests.
Move mu_to_seconds, seconds_to_mu to Core.
artiq_devtool: don't crash on invalid utf-8.
artiq_devtool: detect a race condition during connect.
llvm_ir_generator: handle no-op coercions.
conda: use development version of migen/misoc
Revert accidentally committed code.
Revert "gateware: increase RTIO FIFO sizes for NIST_CLOCK. Closes #623 "
analyses.invariant_detection: implement (#622 ).
Fix whitespace.
coredevice.dds: work around the round(numpy.float64()) snafu.
coredevice.dds: update from obsolete int(width=) syntax (fixes #621 ).
...
2016-11-21 17:29:46 +01:00
f7e8961ab0
Merge branch 'master' into phaser
...
* master: (23 commits)
RELEASE_NOTES: update
pipistrello: add some inputs
Remove last vestiges of nist_qc1.
Fully drop AD9858 and kc705-nist_qc1 support (closes #576 ).
coredevice.dds: reimplement fully in ARTIQ Python.
compiler: unbreak casts to int32/int64.
analyses.constness: fix false positive on x[...].
inferencer: significantly improve the op-assignment diagnostic.
Fix tests.
Move mu_to_seconds, seconds_to_mu to Core.
artiq_devtool: don't crash on invalid utf-8.
artiq_devtool: detect a race condition during connect.
llvm_ir_generator: handle no-op coercions.
conda: use development version of migen/misoc
Revert accidentally committed code.
Revert "gateware: increase RTIO FIFO sizes for NIST_CLOCK. Closes #623 "
analyses.invariant_detection: implement (#622 ).
Fix whitespace.
coredevice.dds: work around the round(numpy.float64()) snafu.
coredevice.dds: update from obsolete int(width=) syntax (fixes #621 ).
...
2016-11-21 17:29:39 +01:00
whitequark
f4b7666768
coredevice.dds: reimplement fully in ARTIQ Python.
...
This commit also drops AD9858 support from software.
2016-11-21 15:13:26 +00:00
c73b1af7ab
coredevice/sawg: missing comma
2016-11-21 13:16:44 +01:00
b226dbd257
sawg: unittest data format
2016-11-21 12:35:57 +01:00
whitequark
009d396740
Move mu_to_seconds, seconds_to_mu to Core.
2016-11-21 05:37:30 +00:00
9221a275cb
sawg: kernel support (wip)
2016-11-20 16:39:53 +01:00
whitequark
abf2b32b20
coredevice.dds: work around the round(numpy.float64()) snafu.
2016-11-20 09:49:58 +00:00
whitequark
d7f4397924
coredevice.dds: update from obsolete int(width=) syntax ( fixes #621 ).
2016-11-20 09:49:39 +00:00
641f07119f
runtime: support rtio data wider than 64 bit
2016-11-18 17:08:33 +01:00
aedb6747f2
Merge branch 'master' into phaser
...
* master: (47 commits)
runtime: disable the Nagle algorithm entirely.
runtime: buffer RPC send packets.
runtime: don't print debug messages to the UART.
runtime: print microsecond timestamps in debug messages.
artiq_devtool: abort if build failed.
conda: bump llvmlite-artiq dep.
conda: bump llvmlite-artiq dep.
llvm_ir_generator: use !{→unconditionally.}invariant.load metadata.
artiq_devtool: more robust port forwarding.
setup: remove paramiko dependency (optional and developer-only)
artiq_devtool: implement.
artiq_compile: actually disable attribute writeback.
conda: use pythonparser 1.0.
conda: tighten pythonparser dependency (fixes #600 ).
doc: clarify kernel_invariant doc (fixes #609 ).
compiler: Emit all-kernel_invariant objects as LLVM constants
conda: update for LLVM 3.9.
add has_dds, use config flags
Revert "Revert "Revert "Revert "Update for LLVM 3.9.""""
Revert "Revert "Revert "Update for LLVM 3.9."""
...
2016-11-13 16:54:28 +01:00
whitequark
0e76cbc414
artiq_compile: actually disable attribute writeback.
...
I wrote both halves of this condition but forgot to hook
them together.
Fixes #586 .
2016-11-10 01:04:36 +00:00
whitequark
6fcd57a41a
runtime: fix remaining async RPC bugs.
2016-11-01 10:33:57 +00:00
whitequark
c1e6d4b67c
runtime: fix multiple async RPC bugs.
2016-11-01 06:51:44 +00:00
6d07a16c62
Merge branch 'master' into phaser
...
* master: (72 commits)
gateware: extend mailbox to 3 entries.
master/worker_db: set default value for archive
master: keep dataset manager consistent when set_dataset is called with contradictory attributes
master: archive input datasets. Closes #587
master: ensure same dataset is in broadcast and local when mutating
scheduler: default submission arguments, closes #577
pdq2: sync with pdq2
doc: clarify usage of pause/check_pause, closes #571
dashboard/datasets: use scientific spinbox and increase number of decimals, closes #572
gateware/spi: fix import
runtime: fix use of $(realpath) in Makefile.
test: fix printf specifier.
llvm_ir_generator: make sure RPC allocations are not underaligned.
runtime: use i64 for watchdog timeout, not i32.
runtime: port ksupport to Rust.
runtime: remove some redundant libm functions copied inline.
language: Add "A" (ampere) as well-known unit for arguments
conda: misoc 0.4 (csr)
runtime: cap log level at debug.
runtime: discard unnecessary sections.
...
2016-10-28 01:40:11 +02:00
78700a67bc
sawg: fast-math
2016-10-18 10:05:51 +02:00
b2327cf808
sawg: core is kernel_invariant
2016-10-18 10:05:51 +02:00
4c7c479c94
ad9154: add mirrored bits
2016-10-13 15:02:18 +02:00
9644a3a362
ad9154: mix mode addr, digital gain must be on
2016-10-12 15:00:53 +02:00
1117fe191b
phaser: support core stpl
2016-10-12 12:03:29 +02:00
whitequark
4f11b071a5
runtime: remove useless handshaking in analyzer.
2016-10-07 05:53:16 +00:00
whitequark
557bc4bb56
runtime: remove unnecessary buffering.
2016-10-06 17:25:43 +00:00
whitequark
bcdbd00e7b
runtime: remove unnecessary null bytes from session protocol.
2016-10-06 15:39:00 +00:00
1193ba4bf4
ad9154: merge csr spaces
2016-10-06 16:21:15 +02:00
4d87f0e9e0
phaser: instantiate jesd204b core, wire up
2016-10-06 14:44:22 +02:00
4a0eaf0f95
phaser: add jesd204b rtio dds
...
gateware: add jesd204b awg
gateware: copy phaser (df3825a)
dsp/tools: update satadd mixin
phaser: no DDS stubs
dsp: accu fix
phaser: cleanup/reduce
sawg: kernel support and docs
sawg: coredevice api fixes
sawg: example ddb/experiment
phaser: add conda package
examples/phaser: typo
sawg: adapt tests, fix accu stb
sawg: tweak dds parameters
sawg: move/adapt/extend tests
sawg: test phy, refactor
phaser: non-rtio spi
phaser: target cli update
phaser: ad9154-fmc-ebz pins
phaser: reorganize fmc signal naming
phaser: add test mode stubs
phaser: txen is LVTTL
phaser: clk spi xfer test
phaser: spi for ad9154 and ad9516
phaser: spi tweaks
ad9154: add register map from ad9144.xml
ad9516: add register map from ad9517.xml and manual adaptation
ad9154_reg: just generate getter/setter macros as well
ad9154: reg WIP
ad9154: check and fix registers
kc705: single ended rtio_external_clk
use single ended user_sma_clk_n instead of p/n to free up one clock sma
kc705: mirror clk200 at user_sma_clock_p
ad9516_regs.h: fix B_COUNTER_MSB
phase: wire up clocking differently
needs patched misoc
kc705: feed rtio_external_clock directly
kc705: remove rtio_external_clk for phaser
phaser: spi tweaks
ad9516: some startup
ad9516_reg fixes
phaser: setup ad9516 for supposed 500 MHz operation
ad9516: use full duplex spi
ad9154_reg: add CONFIG_REG_2
ad9154_reg: fixes
phaser: write some ad9154 config
ad9154_reg: fixes
ad9154: more init, and human readable setup
ad9154/ad9516: merge spi support
ad9154: status readout
Revert "kc705: remove rtio_external_clk for phaser"
This reverts commit d500288bb44f2bf2eeb0c2f237aa207b0a8b1366.
Revert "kc705: feed rtio_external_clock directly"
This reverts commit 8dc7825519e3e75b7d3d29c9abf10fc6e3a8b4c5.
Revert "phase: wire up clocking differently"
This reverts commit ad9cc450ffa35abb54b0842d56f6cf6c53c6fbcc.
Revert "kc705: mirror clk200 at user_sma_clock_p"
This reverts commit 7f0dffdcdd28e648af84725682f82ec6e5642eba.
Revert "kc705: single ended rtio_external_clk"
This reverts commit a9426d983fbf5c1cb768da8f1da26d9b7335e9cf.
ad9516: 2000 MHz clock
phaser: test clock dist
phaser: test freqs
ad9154: iostandards
phaser: drop clock monitor
phaser: no separate i2c
phaser: drive rtio from refclk, wire up sysref
phaser: ttl channel for sync
ad9154: 4x interp, status, tweaks
phaser: sync/sysref 33V banks
phaser: sync/sysref LVDS_25 inputs are VCCO tolerant
phaser: user input-only ttls
phaser: rtio fully from refclk
ad9154: reg name usage fix
ad9154: check register modifications
Revert "ad9154: check register modifications"
This reverts commit 45121d90edf89f7bd8703503f9f317ad050f9564.
ad9154: fix status code
ad9154: addrinc, recal serdes pll
phaser: coredevice, example tweaks
sawg: missing import
sawg: type fixes
ad9514: move setup functions
ad9154: msb first also decreasing addr
phaser: use sys4x for rtio internal ref
phaser: move init code to main
phaser: naming cleanup
phaser: cleanup pins
phaser: move spi to kernel cpu
phaser: kernel support for ad9154 spi
ad9154: add r/w methods
ad9154: need return annotations
ad9154: r/w methods are kernels
ad9154_reg: portable helpers
phaser: cleanup startup kernel
ad9154: status test
ad9154: prbs test
ad9154: move setup, document
phaser: more documentation
2016-10-05 16:17:50 +02:00
whitequark
494cfca41c
coreanalyzer: fix rtio_log message extraction.
...
Fixes #550 .
2016-09-14 10:18:00 +00:00
whitequark
25ec99930c
Also serialize numpy.int{32,64} like int in RPC return values.
...
Fixes #555 .
2016-09-09 08:52:18 +00:00
2b282456dc
coredevice/ttl: fix imports
2016-09-07 17:37:14 +08:00
486fe97649
ttl: add level-based APIs ( #218 )
2016-09-07 16:55:21 +08:00
310acca372
dds: fix docstring, closes #540
2016-08-16 14:55:30 +08:00
23b704802d
dds: make init_sync accessible for AD9914 only
2016-08-15 17:45:18 +08:00
raghu
c4d17138a1
added sync for AD9914
2016-08-15 17:44:27 +08:00
89df048efb
analyzer: use picosecond resolution in VCD output. Closes #528
2016-08-03 10:57:15 +08:00
whitequark
933ea53c77
compiler: add basic numpy array support ( #424 ).
2016-07-06 09:51:57 +00:00
whitequark
906db876a6
language: replace coredevice int with numpy.{int32,int64}.
...
Fixes #453 .
2016-07-06 04:44:21 +00:00
73ac153509
spi: expose more documentation on chaining transfers
2016-07-04 12:43:33 +02:00
c6e54e3016
coredevice/core: add syscall type annotation
2016-06-29 10:38:19 +08:00
c8dc6ca07c
inter-experiment smooth handover
2016-06-29 02:37:50 +08:00
5853e31ac2
coredevice/comm_tcp: more appropriate exception
2016-06-26 19:08:40 +08:00
bc7d06468f
coredevice/comm_generic: style
2016-06-26 18:50:02 +08:00
a8b211f891
spi: cross-reference bit ordering and alignment, closes #482
2016-06-15 15:04:04 +02:00
3aab77d7a0
doc: precisions about time cursor interaction
2016-06-12 13:08:47 +08:00
b9c3edd49f
Revert "coredevice: automatically close on pause"
...
This reverts commit 1f50b3428e
.
2016-06-11 10:12:36 -06:00
whitequark
e47538ca33
analyzer: explicitly delimit messages (with \x1D).
...
Fixes #461 .
2016-06-07 11:26:49 +00:00
0ac0547bca
dds: use fast math for asf computations
2016-06-03 23:34:32 -04:00
dhslichter
98ae779941
dds: fix asf_to_amplitude
2016-06-03 23:02:16 -04:00
3d6f55104b
coredevice/TCA6424A: convert 'outputs' value to little endian. Closes #437
2016-05-22 06:53:18 -07:00
whitequark
640022122b
embedding: refactor some more.
2016-05-16 14:38:09 +00:00
whitequark
c94c411fd5
compiler: demangle symbols.
...
In future commits we'll add Itanium C++ ABI style mangling to ARTIQ
emitted function names.
2016-05-16 14:38:09 +00:00
whitequark
a88425b66b
compiler: allow RPCing builtin functions.
...
Fixes #366 .
2016-04-26 01:31:17 +00:00
whitequark
1464bae6b7
compiler: don't typecheck RPCs except for return type.
...
Fixes #260 .
2016-04-26 01:12:36 +00:00
whitequark
5cccdcaad6
coredevice: deserialize int64(width=64) as int(width=64), not host_int.
...
Fixes #402 .
2016-04-21 18:59:54 +00:00
1f50b3428e
coredevice: automatically close on pause
2016-04-12 15:46:21 +08:00
whitequark
9cc9e8b276
embedding: s/kernel_constant_attributes/kernel_invariants/g
...
Requested in #359 .
2016-04-06 22:38:31 +00:00
whitequark
712e16b79e
ttl: mark constant attributes for TTL{In,InOut,ClockGen}.
2016-04-02 18:20:51 +00:00
whitequark
132b55d6be
coredevice: format backtrace RA as +0xN, not 0xN.
...
The absolute address is somewhere in the 0x4000000 range; the one
that is displayed is an offset from the shared object base.
2016-04-02 18:05:40 +00:00
a545598d4c
style
2016-03-29 16:19:03 +08:00
50888865e7
doc/dds: fix init timing margin
2016-03-29 12:01:32 +08:00
ce57794e7f
doc: fix comment about when and how DDS init should be done. Closes #353
2016-03-29 11:10:53 +08:00
whitequark
1038f1321f
compiler: allow specifying per-function "fast-math" flags.
...
Fixes #351 .
2016-03-28 21:44:08 +00:00
whitequark
6f5332f892
compiler: allow flagging syscalls, providing information to optimizer.
...
This also fixes a crash in test_cache introduced in 1d8b0d46
.
2016-03-28 19:56:56 +00:00
whitequark
507ad96db3
coredevice: add some kernel_constant_attributes specifications.
2016-03-28 00:06:00 +00:00
5b536d7c67
i2c: fix variable name ( closes #347 )
2016-03-25 12:51:55 +01:00
4d22db1aff
coredevice/exceptions/ClockFailure: improve description
2016-03-19 18:01:00 +08:00
641831e0e1
dds: improve error reporting
2016-03-19 12:15:19 +08:00
d0af58d122
coredevice: only import common RTIO exceptions
2016-03-19 12:11:47 +08:00
whitequark
501de30626
Report watchdog expiration and RTIO clock failure as exceptions.
...
Fixes #316 .
2016-03-18 22:29:53 +00:00
whitequark
78fa5becea
compiler: refuse to embed a function from another core device.
...
Fixes #332 .
2016-03-18 02:01:14 +00:00
cb8e497ff6
analyzer: fix DDSHandler setup
2016-03-15 22:14:44 +08:00
0076fc4216
analyzer: fix AD9914 FTW decoding
2016-03-15 22:14:21 +08:00
6a9957a2ac
analyzer: fix get_dds_sysclk
2016-03-15 21:47:24 +08:00
e13d424398
analyzer: strip final StoppedMessage for VCD output
2016-03-15 18:33:36 +08:00
8a6873cab2
analyzer: use EOP, flush pipeline on stop
2016-03-15 17:49:59 +08:00
f4f95d330b
Merge branch 'master' of github.com:m-labs/artiq
2016-03-10 11:15:30 +08:00
1739e0f2f8
coredevice: put cache into separate file/device
2016-03-10 10:46:19 +08:00
9edaf16735
exceptions: clarify RTIOBusy
2016-03-09 22:11:32 +01:00
349a66124b
Merge branch 'master' into rtiobusy
...
* master:
coredevice: fix _DDSGeneric __init__ args
rtio/core: fix syntax
rtio: disable replace on rt2wb channels
examples: dds_bus -> core_dds
fix more multi-DDS-bus problems
runtime: fix dds declarations
support for multiple DDS buses (untested)
2016-03-09 17:58:58 +01:00
b32217cc84
coredevice: fix _DDSGeneric __init__ args
2016-03-09 17:23:02 +01:00
0bd9add95e
spi: fix frequency_to_div()
2016-03-09 12:32:31 +01:00
b0de9ee90a
coredevice: add RTIOBusy to __all__
2016-03-09 12:27:45 +01:00
446dcfbfbc
Merge commit '9d1903a' into rtiobusy
...
* commit '9d1903a':
coredevice/i2c,ttl,spi: consistent device get
examples/device_db: remove --no-localhost-bind
Monkey-patch asyncio create_server (fixes #253 ).
pipistrello: drop ttls on pmod, add leds back in
pipistrello: try with fewer leds/pmod ttl
2016-03-09 11:55:08 +01:00
f0b0b1bac7
support for multiple DDS buses (untested)
2016-03-09 17:12:50 +08:00
9d1903a4e2
coredevice/i2c,ttl,spi: consistent device get
2016-03-09 13:01:34 +08:00
2cb58592ff
rtio: add RTIOBusy
2016-03-08 18:04:34 +01:00
71105fd0d7
rtio: collision_error -> collision
2016-03-08 15:38:35 +08:00
c73b080019
doc/PCA9548: clarify channel selection
2016-03-07 00:17:45 +08:00
2770d9c729
doc: I2C/QC2
2016-03-05 19:02:03 +08:00
683716017b
test: I2C/PCA9548 unittest
2016-03-05 19:01:35 +08:00
f2b4b975a3
ad5360: add documentation and an example
2016-03-04 23:36:17 +01:00
18ccac717b
ad5360: t16 is a max
2016-03-04 19:46:18 +01:00
eb2ec40b3a
ad5360: un-factor write_channels
2016-03-04 19:01:29 +01:00
725943fee2
ad5360: add busy and update timings
2016-03-04 18:53:05 +01:00
e834a88340
ad5360: style
2016-03-04 18:15:35 +01:00
710717ca9b
ad5360: add batched zero-length multi-channel set()
2016-03-04 18:14:31 +01:00
4ae3ca5f23
spi/ad5360: refactor, small fixes
2016-03-04 18:14:31 +01:00
200cddc346
coredevice/i2c: fix exception message
2016-03-05 00:51:13 +08:00
70f0a7447f
coredevice/PCA9548: fix I2C address
2016-03-05 00:47:24 +08:00
df71b82037
coredevice/i2c: fix imports
2016-03-05 00:43:13 +08:00
2f1a2782d2
coredevice: add I2C, PCA9548, TCA6424A drivers
2016-03-05 00:17:41 +08:00
ff4a46c278
runtime/i2c: make syscalls more ARTIQ-Python-friendly
2016-03-05 00:16:23 +08:00
3364827744
ttl/TTLClockGen: fix FTW computation with ref_multiplier != 1
2016-03-04 16:59:59 +08:00
4352d15016
coredevice/core: add ref_multiplier and coarse_ref_period attributes
2016-03-04 16:59:35 +08:00
whitequark
6e44c5424d
coredevice.ttl: add missed int64 conversion.
2016-03-04 08:37:43 +00:00
669fbaa4f1
ad53xx->ad5360 and refactor
2016-03-04 00:00:25 +01:00
dc6d116824
spi: have write() delay by transfer duration
2016-03-03 21:57:27 +01:00
9969cd85de
ad53xx: ldac may be none
2016-03-02 15:50:02 +01:00
1e4bccae20
ad53xx: add
2016-03-02 00:12:01 +01:00
162ecdd574
spi: cleanup, add frequency_to_div()
2016-03-02 00:11:17 +01:00
d973eb879f
coredevice.spi: docstring fix
2016-03-01 22:42:00 +01:00
f754d2c117
Merge branch 'spimaster'
...
* spimaster: (52 commits)
runtime/rtio: rtio_process_exceptional_status() has only one user
coredevice.spi, doc/manual: add spi
kc705: move ttl channels together again, update doc
runtime: rt2wb_input -> rtio_input_data
examples/tdr: adapt to compiler changes
bridge: really fix O/OE
runtime: define constants for ttl addresses
coredevice.ttl: fix sensitivity
bridge: fix ttl o/oe addresses
runtime: refactor ttl*()
rtio: rm rtio_write_and_process_status
coredevice.spi: unused import
rt2wb, exceptions: remove RTIOTimeout
gateware.spi: delay only writes to data register, update doc
nist_clock: disable spi1/2
runtime/rt2wb: use input/output terminology and add (async) input
examples: update device_db for nist_clock spi
gateware.spi: rework wb bus sequence
nist_clock: rename spi*.ce to spi*.cs_n
nist_clock: add SPIMasters to spi buses
...
2016-03-01 22:08:08 +01:00
0456169558
coredevice.spi, doc/manual: add spi
2016-03-01 21:29:09 +01:00
f30dc4b39e
runtime: rt2wb_input -> rtio_input_data
2016-03-01 19:22:42 +01:00
3aebbbdb61
coredevice.ttl: fix sensitivity
2016-03-01 18:22:03 +01:00
8adef12781
runtime: refactor ttl*()
...
* remove rt2wb_output
* remove ttl_*() ttl.c ttl.h
* use rtio_output() and rtio_input_timestamp()
* adapt coredevice/compiler layer
* adapt bridge to not artiq_raise_from_c()
2016-03-01 16:36:59 +01:00
29776fae3f
coredevice.spi: unused import
2016-03-01 15:38:40 +01:00
324660ab40
rt2wb, exceptions: remove RTIOTimeout
...
Assume that rt2wb transactions either collide and are then
reported (https://github.com/m-labs/artiq/issues/308 ) or that
they complete and the delay with which they complete does not matter.
If a transaction is ack'ed with a delay because the WB core's downstream
logic is busy, that may lead to a later collision with another WB
transaction.
2016-03-01 14:44:07 +01:00
c7d48a1765
coredevice/TTLOut: add dummy output function
2016-03-01 19:03:10 +08:00
7d7a710a56
runtime/rt2wb: use input/output terminology and add (async) input
2016-03-01 00:35:56 +01:00
7ab7f7d75d
Merge branch 'master' into spimaster
...
* master:
artiq_flash: use term 'gateware'
targets/kc705-nist_clock: add clock generator on LA32 for testing purposes
doc: insist that output() must be called on TTLInOut. Closes #297
doc: update install instructions
coredevice: do not give up on UTF-8 errors in log. Closes #300
use m-labs setup for defaults
fix indentation
2016-02-29 20:47:52 +01:00
6c899e6ba6
runtime/rtio: fix rtio_input_wait(), add RTIOTimeout
2016-02-29 19:49:15 +01:00
16537d347e
coredevice.spi: cleanup
2016-02-29 19:48:26 +01:00
e11366869d
coredevice/spi: clean up api
2016-02-29 17:54:42 +01:00
a1e1f2b387
doc: insist that output() must be called on TTLInOut. Closes #297
2016-03-01 00:28:40 +08:00
4467f91cbf
coredevice: do not give up on UTF-8 errors in log. Closes #300
2016-02-29 22:21:10 +08:00
c226aeb0d4
coredevice/spi: read_sync read bit
2016-02-29 14:55:29 +01:00
df7d15d1fe
runtime: refactor spi into rt2wb
2016-02-29 13:54:36 +01:00
8b2b278457
spi: add coredevice support
2016-02-29 00:44:48 +01:00
whitequark
cf41890255
Correctly display backtraces that contain inlined functions.
2016-02-24 17:44:19 +00:00
whitequark
950eaef08c
coredevice: re-export more exceptions.
2016-02-24 15:09:22 +00:00
whitequark
9db2be2b03
compiler: only use colors in diagnostics on POSIX ( fixes #272 ).
2016-02-22 11:27:45 +00:00
whitequark
a5977a5b62
Commit missing parts of 1465fe6f8
.
2016-02-15 21:42:51 +00:00
68891493a3
analyzer: move common to artiq.protocols
...
migen was still pulled in through rtio.__init__.py
2016-01-29 20:26:48 -07:00
whitequark
7f9a180946
Fix typo.
2016-01-26 23:23:35 +00:00
d1119d7747
artiq_dir: move out of tools to unlink dependencies
2016-01-25 18:15:50 -07:00
cbb60337ae
refactor Analyzer constants to unlink dependencies
2016-01-25 18:03:48 -07:00
f4c7f02127
CoreException: store at 'py_exn.artiq_core_exception'
...
... and fix a few imports
2016-01-25 17:24:00 -07:00
e0f2d94191
coredevice: remove some print()s
2016-01-25 17:24:00 -07:00
2beaf23e6c
language...ARTIQException -> coredevice...CoreException
...
gets rid of a cross import
is only used there
2016-01-25 17:24:00 -07:00
765001054d
artiq.experiment: merge language and coredevice namespaces
...
perl -i -pe 's/^from artiq import \*$/from artiq.experiment import */' your_experiments/*.py
(assuming you skipped the changes form the previous commit)
2016-01-25 17:24:00 -07:00
dc709a77b8
PPP support (TCP broken)
2016-01-18 20:09:10 -07:00
whitequark
5c6b1517d0
Rigorously treat builtin core device exceptions.
2016-01-19 01:45:25 +00:00
whitequark
785b2736a0
Document core device cache ( #219 ).
2016-01-16 16:38:55 +00:00
whitequark
67d2e7a828
worker: display compile warnings and errors nicely ( #227 ).
2016-01-16 01:28:26 +00:00
a9cf89215b
coredevice/dds: use explicit 64-bit ints for ftw computations
2016-01-14 15:25:01 -07:00
whitequark
225f7d7302
Commit missing parts of 9366a29
.
2016-01-10 20:01:26 +00:00
whitequark
b669e83554
Inject parameters into coredevice exception message when mapping.
2016-01-10 18:06:28 +00:00
whitequark
4198601abb
coredevice.exceptions: add CacheError.
2016-01-10 14:43:30 +00:00
whitequark
f8e50f2b0c
Remove redundant ksupport API.
2016-01-10 14:27:46 +00:00
whitequark
cc45694f5a
Commit missing parts of 9366a29
.
2016-01-10 13:08:26 +00:00
whitequark
9366a29483
Implement core device storage ( fixes #219 ).
2016-01-10 13:04:55 +00:00
whitequark
03dd1c3a43
Refactor the logic of printing diagnostics to solely rely on Engine.
2016-01-04 22:11:54 +08:00
whitequark
38a99fde52
Implement selective attribute writeback using shadow memory.
2016-01-02 22:51:04 +08:00
whitequark
79d020dd3a
transforms.artiq_ir_generator: handle terminated try body.
2015-12-31 22:36:25 +08:00
whitequark
8aa34ee952
compiler: don't require exceptions to inherit ARTIQException.
2015-12-31 21:54:54 +08:00
whitequark
8fb6d4cdb4
coredevice.comm_generic: handle RPC default args correctly.
2015-12-29 02:54:34 +08:00
b5253e1353
coredevice/analyzer: decode log messages
2015-12-27 01:28:34 +08:00
24fa74a8ab
coredevice/analyzer: support TTL clockgen
2015-12-26 21:51:37 +08:00
1c36ae0672
coredevice/analyzer: support TTL inputs
2015-12-26 21:24:53 +08:00
a871194ee4
coredevice/analyzer: prefix channel names with their types
2015-12-26 17:47:53 +08:00
2b70fa14a6
coredevice/analyzer: update rtio_slack on output messages only
2015-12-26 17:47:08 +08:00
cd8eccfd46
coredevice/analyzer: add rtio_slack channel
2015-12-25 00:40:47 +08:00
179c50480f
frontend: split coretool into coreconfig, corelog and coreanalyzer
2015-12-24 18:51:11 +08:00
e41e2c088d
analyzer: encapsulate decoded dump, get onehot sel from header
2015-12-24 00:31:21 +08:00
4be5df9802
coredevice/analyzer: DDS decoding
2015-12-23 18:57:53 +08:00
58d0e2c0b8
coredevice/analyzer: log TTL decoding in debug mode
2015-12-23 18:56:23 +08:00
e4d73c0302
artiq/coredevice/dds: fix dds_set signature
2015-12-23 17:25:31 +08:00
f6522922f8
coredevice/exceptions: PEP8
2015-12-22 12:03:11 +08:00
23355d8eff
coredevice: restore RTIOCollisionError
2015-12-22 11:59:18 +08:00
007a7170e1
analyzer: report DDS channel number
2015-12-21 18:37:53 +08:00
e87436fc03
coredevice/analyzer: remove zero-timestamp msg filtering (now unnecessary)
2015-12-21 11:15:58 +08:00
b96e0d241e
coredevice/analyzer: set VCD timescale
2015-12-20 22:06:07 +08:00
4b5c10b641
coredevice/core: remove default period
2015-12-20 22:05:52 +08:00
cdcb57effe
coredevice/analyzer: basic VCD writing
2015-12-20 19:32:52 +08:00
46f59b673f
coredevice: analyzer message decoding
2015-12-20 14:34:16 +08:00
whitequark
afee03b89c
Commit missing parts of 4fb1de33
.
2015-12-19 06:41:32 +08:00
whitequark
4fb1de33c9
Initial invocation of a @kernel function can now return a value ( fixes #197 ).
2015-12-19 05:26:18 +08:00
0832c71a66
coredevice/comm_tcp: support retrieving analyzer data
2015-12-18 18:22:50 +08:00
whitequark
52102a1a79
Fix handling of default values for RPC arguments ( fixes #190 ).
2015-12-18 18:03:07 +08:00
eeb53c5aa5
coredevice/comm: compare software and gateware versions. Closes #97
2015-12-11 22:56:40 +08:00
whitequark
16ae0fb6eb
compiler.embedding: instantiate RPC method types ( fixes #180 ).
2015-11-27 16:29:13 +08:00
whitequark
e1cd2ccd40
compiler: pull in dependencies in more finely grained way ( fixes #181 ).
2015-11-24 17:32:04 +08:00
whitequark
bd5b324fc2
Merge branch 'master' into new-py2llvm
2015-10-13 19:24:45 +03:00
5f89d1a78f
doc: document core device driver. Closes #119
2015-10-06 18:12:57 +08:00
whitequark
7a6fc3983c
Make delay component of function type unifyable.
2015-09-30 18:41:14 +03:00
whitequark
3e1348a084
Merge branch 'master' of github.com:m-labs/artiq into new-py2llvm
2015-09-27 18:22:28 +03:00
Raghavendra Srinivas
b3831d3387
dds: support amplitude tuning on AD9914
...
Closes #108
2015-09-05 13:15:09 -06:00
6e5b71a43e
coredevice/comm_tcp: disable socket timeout after connect
...
Reads may block indefinitely.
2015-09-03 09:59:24 -06:00
whitequark
2df8b946f9
Factor out the code to pretty-print diagnostics.
2015-08-31 22:52:39 -06:00
whitequark
501ba912c2
Implement {delay,now,at}{,_mu} and {mu,seconds}_to_{seconds,mu}.
2015-08-31 09:59:33 -06:00
a36a50ba0d
comm_tcp: add connect timeout
2015-08-28 16:23:23 +08:00
whitequark
9605e8215f
coredevice.ttl: update for new int semantics.
2015-08-28 02:11:26 -05:00
whitequark
7c1abb25ec
compiler.embedding: test all diagnostics.
...
Also, unify and improve diagnostic messages.
2015-08-28 00:47:28 -05:00
whitequark
d80be482fc
Allow clearing core device log buffer.
...
This is useful to get a fresh environment, such as when
running tests that print to log buffer.
2015-08-28 00:37:46 -05:00
0fe0f4d433
dds: fix phase computation. Closes #79 .
2015-08-27 11:09:33 +08:00
1991b3c910
coredevice/TTLClockGen: fix attribute init
2015-08-27 09:48:11 +08:00
whitequark
9b9fa1ab7c
Allow embedding and RPC sending host objects.
2015-08-25 21:56:01 -07:00
whitequark
673512f356
coredevice.core: fix imports.
2015-08-19 12:37:31 -07:00
c625f2e7c9
ttl: minor docstring cleanup
2015-08-17 23:50:24 +08:00
c71d207e90
core/break_realtime: only increase now
2015-08-17 23:41:21 +08:00
dee844510c
comm_tcp: enable TCP keepalive on host side as well
2015-08-15 16:03:00 +08:00
f073dfaee5
ttl: add input/output doc
2015-08-13 12:20:12 +08:00
whitequark
62e6f8a03d
compiler.embedding.Stitcher: refactor.
2015-08-10 20:26:07 +03:00
whitequark
46476516ba
ARTIQException: tell linecache where to look for runtime sources.
...
Runtime sources can appear in the backtrace when
artiq_raise_from_c is used.
2015-08-10 20:26:07 +03:00
whitequark
c72267ecf5
Implement syscalls for the new compiler.
2015-08-10 20:26:06 +03:00
whitequark
75532d10aa
Display full core device backtraces.
2015-08-10 15:12:22 +03:00
whitequark
d4270cf66e
Implement receiving data from RPCs.
2015-08-09 20:17:00 +03:00
whitequark
02b1543c63
Implement receiving exceptions from RPCs.
2015-08-09 16:16:41 +03:00
whitequark
8b7d38d203
Add ARTIQ_DUMP_ASSEMBLY.
2015-08-09 15:47:29 +03:00
whitequark
b26af5df60
Implement sending RPCs.
2015-08-09 02:17:19 +03:00
whitequark
13ad9b5d08
Allow to dump ARTIQ/LLVM IR for stitched code.
2015-08-08 21:47:20 +03:00
671a3f1833
doc: precision about dds batch time
2015-08-08 23:05:00 +08:00
0a6fcd9fa0
Revert "comm_generic: cleanup"
...
This reverts commit be55487d2d
.
2015-08-08 21:24:23 +08:00
whitequark
27d2390fed
Add zero-cost exception support to runtime and host.
2015-08-08 16:01:31 +03:00
whitequark
ecdebc0b8a
session.c: refactor.
2015-08-08 13:21:43 +03:00
whitequark
d6ab567242
coredevice.comm_*: refactor.
2015-08-07 16:44:16 +03:00
be55487d2d
comm_generic: cleanup
2015-08-07 21:12:00 +08:00
whitequark
353f454a29
Add basic support for embedded functions with new compiler.
2015-08-07 11:44:49 +03:00
whitequark
b5cf1e395d
runtime: avoid race condition when running kernel.
...
Also, don't bother passing kernel name: entry point is already
recorded in DT_INIT when the kernel is linked.
2015-08-07 08:51:33 +03:00
whitequark
4a8e397a77
Fold llvmlite patches into m-labs/llvmlite repository.
2015-08-05 03:49:01 +03:00
whitequark
62fdc75d2d
Integrate libdyld and libunwind.
...
It is currently possible to run the idle experiment, and it
can raise and catch exceptions, but exceptions are not yet
propagated across RPC boundaries.
2015-08-02 15:43:03 +03:00
1d34c06d79
rtio: detect collision errors
2015-07-29 19:43:35 +08:00
90368415a6
ttl: remove timestamp function
...
The general idea is that functions that work with absolute timestamps exist only in machine units versions, to help prevent floating point losses of precision. Time differences should be computed in machine units and then converted, e.g. mu_to_seconds(t2-t1).
This function would have had problems after ~50 days of running the device.
2015-07-29 11:11:16 +08:00
5f5227f01f
ttl: add timestamp()
2015-07-28 16:20:05 -06:00
e95b66f114
ttl: remove spurious _mu
2015-07-28 16:20:05 -06:00
f836465585
coredevice: environment -> runtime
2015-07-15 11:20:41 +02:00
Yann Sionneau
90ba9f7bbf
llvmlite: rename our package to be llvmlite_or1k to avoid collision with llvmlite package needed for numba
2015-07-14 01:01:56 +02:00
56fc7a484c
TTLInOut: timestamp -> timestamp_mu
2015-07-13 23:21:29 +02:00
32d141f5ac
refactor ddb/pdb/rdb
2015-07-13 22:21:32 +02:00
34aacd3c5f
complete AD9914 support (no programmable modulus, untested)
2015-07-08 17:22:43 +02:00
8a33d8c868
never stop RTIO counter
2015-07-07 15:29:38 +02:00
58c0150822
ttl: improve clockgen doc
2015-07-05 19:07:13 +02:00
65ec6c28f4
ttl/clockgen: expose acc_width
2015-07-04 19:21:25 +02:00
753d61b38f
complete support for TTL clock generator
2015-07-04 18:36:01 +02:00
9d6287a6a3
expose machine units to user
2015-07-01 22:22:53 +02:00
c71fe29792
simplify unit system and use floats by default
2015-06-26 16:34:37 +02:00
e6a4c2fb36
dds: make it easier to specify phase
2015-06-26 12:05:11 +02:00
87ea1433d3
dds: all working
2015-06-20 18:42:39 -06:00
5a9bdb2e33
DDS monitoring
2015-06-19 15:30:17 -06:00
Yann Sionneau
575dfade38
flash_storage comm: use OK/ERROR replies instead of specific FLASH_WRITE_REPLY
2015-05-29 11:10:40 +02:00
Yann Sionneau
4bf7875b87
flash_storage: refactor + unit tests + artiq_coreconfig.py CLI + doc
2015-05-27 18:06:12 +08:00
ce4b5739ed
runtime: reset all DDSes upon startup
2015-05-09 17:12:38 +08:00
1ceb06fb16
dds: use context manager for batches
2015-05-09 14:47:40 +08:00
5c08423b29
dds: support batches in driver
2015-05-08 22:17:06 +08:00
55f2fef576
runtime: support DDS batches
2015-05-08 16:51:54 +08:00
53c6339307
runtime: break ttl-specific functions from rtio
2015-05-08 16:20:12 +08:00
a36c51eb83
DDS over RTIO (batch mode not supported yet)
2015-05-08 14:44:39 +08:00
2adf9d91df
recover_underflow -> break_realtime
2015-05-03 20:45:28 +08:00
4048568d8e
support kernel handover with coherent time
2015-05-02 23:41:49 +08:00
65b4b7bb12
coredevice: rename rtio to ttl, integrated in+out driver, loopback on the same pin in tests
2015-05-02 10:35:21 +08:00
967145f2dc
watchdog support on core device (broken by bug similar to issue #19 )
2015-04-29 12:58:37 +08:00
e5f7fcc339
coredevice/comm_tcp: raise exception on connection closed
2015-04-29 11:18:51 +08:00
9b62e7e77b
runtime,coredevice: support session reset for serial
2015-04-28 02:11:58 +08:00
8a19766278
runtime,comm_generic: improve and fix list encoding
2015-04-28 01:31:55 +08:00
934a6b0495
runtime,coredevice: Ethernet support (buggy)
2015-04-23 23:22:40 +08:00
18106cc014
comm: refactor to support lwip event model
2015-04-22 01:31:31 +08:00
9f52277245
coredevice/core: set default for ref_period
2015-04-22 01:12:01 +08:00
0c1d256fef
comm_dummy: remove unneeded import
2015-04-19 11:41:20 +08:00
c98e08fe36
fix transforms unittest
2015-04-19 11:40:49 +08:00
546996f896
coredevice,runtime: put ref_period into the ddb
2015-04-16 15:15:38 +08:00
ecf6b29279
coredevice/rtio: minor docstring cleanup
2015-04-15 13:53:00 +08:00
4c10182c9f
rtio: refactor, use rtlink
2015-04-14 19:44:45 +08:00
88e0aae16d
coredevice: add comm_tcp
2015-04-10 01:22:03 +08:00
f427041ae9
coredevice/comm_serial: minor cleanup
2015-04-10 01:21:47 +08:00
cb2596bd81
coredevice/comm: split protocol to allow reuse for Ethernet
2015-04-10 00:59:35 +08:00
fda4ee1a83
coredevice: add compile method
2015-04-07 15:40:25 +08:00
72f9f7ed79
runtime: implement mailbox, use it for kernel startup, exceptions and termination
2015-04-05 22:07:34 +08:00
833178462d
remove gpio driver
2015-04-04 22:06:54 +08:00
3108ffeef6
coredevice/comm_serial: use lazy formatting in logging
2015-03-27 18:54:19 +01:00
f4cb97b709
comm_serial: fix baud rate change logging
2015-03-25 17:57:53 -06:00
7a1d60ee15
coredevice,runtime,language: add parameters to runtime exceptions, include information with RTIO errors
2015-03-13 14:55:18 +01:00
84732a469d
coredevice/gpio: fix indentation
2015-03-13 14:31:50 +01:00
0f007cb1a7
language/db: remove implicit_core
2015-03-08 11:37:53 +01:00
e10390d142
coredevice: add get_rtio_time
2015-02-18 09:56:30 -07:00
37feaf1cea
comm_serial: use serial.serial_for_url
2015-01-30 11:47:20 +08:00
891c0d12f2
refactor device/parameter management, immediate parameter updates, start introducing results
2015-01-12 18:51:23 +08:00
f7232fd3d1
support exceptions raised by RPCs
2014-12-20 21:33:22 +08:00
Yann Sionneau
e4897132ad
comm_serial.py: Use cross-platform pyserial
2014-12-20 10:19:06 +08:00
0d10ae7580
rpc: support all data types as parameters
2014-12-19 12:46:24 +08:00
059608d1fd
dds: fix phase modes
2014-12-09 13:50:33 +08:00
cb48dba29c
coredevice: fix external clock ref_period computation
2014-12-09 11:22:55 +08:00
bfe980d458
py2llvm: distinguish between llvmlite Module and ModuleRef
2014-12-06 15:14:39 +08:00
159f632a65
switch to llvmlite
2014-12-05 17:05:43 +08:00
2a95d27770
device and parameter database
2014-12-03 18:20:30 +08:00
a41009f92a
coredevice/comm_dummy: support clock-switching functions
2014-12-03 18:16:18 +08:00
2a843ea436
language: replace AutoContext 'parameter' string with abstract attributes
...
This allows specifying default values for parameters, and other data.
2014-12-02 17:19:05 +08:00
83d3b97b23
coredevice/comm_serial: give up on garbage received after baudrate change
2014-12-02 16:04:41 +08:00
649fedd656
coredevice/core: fix recover_underflow
2014-12-02 15:31:09 +08:00
fc690ead75
runtime: support clock switching
2014-12-02 14:06:32 +08:00
94218f785e
comm_serial: cleanup
2014-12-02 11:09:02 +08:00
Yann Sionneau
20adb57140
comm_serial: allow to use dynamic baudrate
2014-12-02 10:42:14 +08:00
57d633f48e
rtio: remove unnecessary attributes
2014-12-01 17:47:24 +08:00
cd587e4f12
rtio: do housekeeping in gateware
2014-12-01 17:32:36 +08:00
d50dbc0e73
coredevice/runtime_exceptions: update RTIO exception behaviour doc
2014-12-01 13:57:25 +08:00
901073acf3
asynchronous RTIO
2014-11-30 00:13:54 +08:00
914bdd95d5
runtime: use booleans in syscalls
2014-11-20 12:49:09 -08:00
dfd779c7c5
core: add underflow recovery function
2014-11-20 12:38:52 -08:00
1780759327
dds: phase control (mostly untested)
2014-11-20 12:32:56 -08:00
b736c30cdb
coredevice/core: core_com -> comm
2014-11-19 17:44:06 -08:00
75df0ae94a
coredevice/gpio: replace set() with on()/off() to make API consistent
2014-11-19 12:33:33 -08:00
abae5c6728
coredevice/dds: round FTW instead of flooring
2014-11-17 18:36:00 -07:00
e02ca0b404
transforms: quantize time before interleaving
2014-11-15 15:26:35 -07:00
b163c9f7ea
test: add optimization transform stack
2014-11-03 18:44:30 +08:00
9b93b0cedf
unparse: string-based API
2014-11-03 18:14:33 +08:00
f54a2f93d2
remove kernel_attr (inline transform is now smart enough to autodetect)
2014-11-03 14:38:04 +08:00
217fe8251b
coredevice/core: optimize further
2014-10-31 23:44:07 +08:00
1e8c9837ac
transforms: add dead code removal
2014-10-29 20:23:58 +08:00
70cc0d1766
transform: add intermediate assignment removal
2014-10-29 17:09:45 +08:00
b96249339d
doc: more precisions on RTIO error handling
2014-10-21 23:56:12 +08:00
97f9c9c34f
doc: add precisions on RTIO error handling
2014-10-21 23:46:14 +08:00
5105b88302
rtio: raise input overflow exception
2014-10-21 23:41:02 +08:00
9a14081031
rtio: add pileup count reporting
2014-10-21 23:14:01 +08:00
61a50ee53c
reorganize for devices/controllers
2014-10-19 23:51:49 +08:00