*** tpb has joined #tomu | 00:00 | |
*** rohitksingh has joined #tomu | 00:15 | |
*** rohitksingh has quit IRC | 00:37 | |
*** rohitksingh has joined #tomu | 00:37 | |
*** rohitksingh has quit IRC | 00:44 | |
xobs | mithro: No, but I'll look at it right now! | 00:57 |
---|---|---|
*** rohitksingh has joined #tomu | 00:58 | |
*** emeb has quit IRC | 01:06 | |
mithro | xobs: Thoughts? | 01:56 |
xobs | mithro: I tried putting reviews down. | 01:57 |
xobs | It looks like you moved the documentation to the top of the functin. Can we keep it above the thing it's documenting? | 01:57 |
xobs | I really like having the registers' documentation immediately above the register definition. | 01:57 |
xobs | It means that whenever I change the register size, I update the documentation right away. | 01:57 |
mithro | xobs: Sphinx and Migen are both just Python code and Python is super inspectable, so you can pretty much do anything and make anything work | 02:18 |
mithro | xobs: Just a effort verse reward type thing | 02:18 |
mithro | xobs: Was trying to stick with a non-customized version as possible for the initial thing to show you | 02:18 |
mithro | xobs: For example - see this sphinx + argparse integration -> https://sphinx-argparse.readthedocs.io/en/stable/sample.html | 02:19 |
tpb | Title: Examples sphinx-argparse 0.2.5 documentation (at sphinx-argparse.readthedocs.io) | 02:19 |
xobs | mithro: I'm having a lot of trouble understanding what Sphinx is. The documentation isn't very good. | 02:20 |
mithro | xobs: Sphinx is a documentation generation tool? | 02:20 |
xobs | mithro: Okay, but what are its input files? I thought its input files might be Python, but it seems like its input files tend to be these .rst files. | 02:21 |
mithro | xobs: Documentation is written in docutil / rst -- by default that is plain old .rst files | 02:22 |
xobs | mithro: So it's not like perldoc / rustdoc / javadoc where it generates the documentation from the source files itself? | 02:23 |
mithro | xobs: But Sphinx has a system for plugins which enable you to write less rst and pull data from other places, like Python docstrings | 02:23 |
mithro | xobs: So Sphinx *can* work like perldoc / rustdoc / javadoc where it pulls data from your source files | 02:25 |
xobs | mithro: thanks, that helps explain a lot about how Sphinx works. | 02:28 |
mithro | sphinx-apidoc is a tool for automatic generation of Sphinx sources that, using the autodoc extension, document a whole package in the style of other automatic API "documentation tools." | 02:29 |
xobs | "It was originally created for the Python documentation" -- I thought that meant it was pulled from pydoc | 02:29 |
mithro | People have used sphinx just as a tool for generating documentation (In a similar vein to docbook / latex / etc) with rst files without any source code | 02:30 |
xobs | Okay, sounds like a docbook replacement. What is its relationship to "reStructured Text"? | 02:32 |
*** ademski has joined #tomu | 02:32 | |
mithro | ReStructured Text (RST) is kind of like asciidoc / markdown / etc | 02:32 |
xobs | mithro: Is there any canonical list of tags? For example, "param", "returns", or "raises"? Or is it entirely freeform? | 02:40 |
mithro | xobs: For which part? | 03:01 |
mithro | xobs: BTW It might be worth looking through the commits in https://github.com/xobs/valentyusb/pull/4 individually, so it shows how the sphinx initial quickstart was evolved in a pretty clear manner... | 03:02 |
tpb | Title: Adding sphinx docs to tri-fifo branch. by mithro · Pull Request #4 · xobs/valentyusb · GitHub (at github.com) | 03:02 |
mithro | xobs: It's pretty freeform really... | 03:03 |
mithro | xobs: sphinx has these things called "domains" -- they define expectations on around how documentation in that group is set up | 03:03 |
mithro | A domain is a collection of markup (reStructuredText directives and roles) to describe and link to objects belonging together, e.g. elements of a programming language. Directive and role names in a domain have names like domain:name, e.g. py:function. Domains can also provide custom indices (like the Python Module Index). | 03:05 |
mithro | xobs: The "Python Domain" defines the various expectations around things -- see https://www.sphinx-doc.org/en/master/usage/restructuredtext/domains.html#the-python-domain | 03:05 |
mithro | xobs: https://www.sphinx-doc.org/en/master/usage/restructuredtext/domains.html#info-field-lists | 03:06 |
xobs | mithro: ah, thank you. "domains" was the keyword I was missing. | 03:07 |
mithro | xobs: What napoleon sphinx extension does is take freeform text in either the "Google format" or the "NumPy format" and convert it into the RST tags | 03:07 |
xobs | Okay, so "reStructured Text" isn't deprecated at all? | 03:08 |
*** rohitksingh has quit IRC | 03:09 | |
mithro | xobs: Well - With napoleon support now built into sphinx, you would be pretty stupid to use the restructured text method inside docstrings for your Python modules | 03:10 |
xobs | I'm getting conflicting messages here... How should I document valentyusb? | 03:11 |
mithro | xobs: Did you understand what I mean by "docstrings" ? | 03:12 |
xobs | mithro: I'm guessing you mean strings of documentation? | 03:12 |
mithro | xobs: No - In python the work "docstring" has a very specific meaning | 03:12 |
mithro | xobs: A docstring is a string literal that occurs as the first statement in a module, function, class, or method definition. Such a docstring becomes the __doc__ special attribute of that object. | 03:13 |
mithro | https://www.python.org/dev/peps/pep-0257/ | 03:13 |
tpb | Title: PEP 257 -- Docstring Conventions | Python.org (at www.python.org) | 03:13 |
mithro | xobs: https://github.com/xobs/valentyusb/pull/4#discussion_r320552900 | 03:14 |
tpb | Title: Adding sphinx docs to tri-fifo branch. by mithro · Pull Request #4 · xobs/valentyusb · GitHub (at github.com) | 03:14 |
mithro | xobs: IE This is a docstring --> https://github.com/xobs/valentyusb/blob/2c70a1256040b768e7649f641df0122ae2fb2fc2/valentyusb/usbcore/tx/nrzi.py#L12-L52 | 03:15 |
tpb | Title: valentyusb/nrzi.py at 2c70a1256040b768e7649f641df0122ae2fb2fc2 · xobs/valentyusb · GitHub (at github.com) | 03:15 |
mithro | It will appear as the special attribute -- `TxNRZIEncoder.__doc__` -- which is what `help(TxNRZIEncoder)` will show.... | 03:16 |
*** gio has quit IRC | 03:17 | |
xobs | Oh, I see! I didn't know that's what it was called, or that that's how it worked. | 03:17 |
mithro | xobs: Understanding? | 03:17 |
xobs | Yes, that's somewhat surprising behavior. But it's good to know that's how it works. | 03:18 |
mithro | xobs: docstrings are a pretty fundamental part of Python which makes it trend to more usable :-) -- https://www.python.org/dev/peps/pep-0257/ -- "29-May-2001" | 03:19 |
tpb | Title: PEP 257 -- Docstring Conventions | Python.org (at www.python.org) | 03:19 |
mithro | xobs: It's just a good idea that rust stole it :-) -> https://doc.rust-lang.org/rust-by-example/meta/doc.html#doc-comments | 03:23 |
xobs | Hmm... "pydoc3 docstring" and "pydoc3 docstrings" return no documentation, and "pydoc3 -k dostrings" just returns a module called `doctest`. | 03:23 |
xobs | mithro: rust uses comments, not strings, which is what threw me off. | 03:24 |
*** gio has joined #tomu | 03:24 | |
mithro | xobs: Using strings rather than comments makes it easier on the Python introspection side of things | 03:25 |
xobs | Alright. I'll use docstrings from now on. | 03:25 |
mithro | xobs: Couple of annoying things about docstrings | 03:26 |
mithro | xobs: We never came up with a "proper" way of doing docstrings for attributes -- For example this attempt was rejected -> https://www.python.org/dev/peps/pep-0224/ | 03:27 |
tpb | Title: PEP 224 -- Attribute Docstrings | Python.org (at www.python.org) | 03:27 |
mithro | xobs: See https://stackoverflow.com/questions/3051241/how-to-document-class-attributes-in-python | 03:28 |
tpb | Title: How to document class attributes in Python? - Stack Overflow (at stackoverflow.com) | 03:28 |
mithro | xobs: Python not having solved attribute doc strings is one of those "How is it 2019 and this still not solved" type problems in Python... | 03:29 |
xobs | I see. So in Python, when I say I want to document this register, what I'm really saying is that I want to "document an attribute"? | 03:31 |
*** ademski has quit IRC | 03:31 | |
mithro | xobs: In Python you normally document the attributes of a class in the classes doc string | 03:33 |
mithro | xobs: IE This is what numpydoc suggests -> https://numpydoc.readthedocs.io/en/latest/format.html#class-docstring | 03:33 |
tpb | Title: numpydoc docstring guide numpydoc v1.0.dev0 Manual (at numpydoc.readthedocs.io) | 03:33 |
mithro | xobs: And the Google style -> https://github.com/google/styleguide/blob/gh-pages/pyguide.md#384-classes | 03:34 |
tpb | Title: styleguide/pyguide.md at gh-pages · google/styleguide · GitHub (at github.com) | 03:34 |
xobs | That seems to work fine for one-sentence descriptions of those attributes, but what about things like eptri, where the descriptions for each register are 15-20 lines? | 03:35 |
mithro | xobs: The attribute description can be many lines long... | 03:35 |
mithro | xobs: See this example -> https://github.com/xobs/valentyusb/blob/2c70a1256040b768e7649f641df0122ae2fb2fc2/valentyusb/usbcore/rx/bitstuff.py#L44-L49 | 03:37 |
tpb | Title: valentyusb/bitstuff.py at 2c70a1256040b768e7649f641df0122ae2fb2fc2 · xobs/valentyusb · GitHub (at github.com) | 03:37 |
xobs | And we could fit a wavedrom `reg_definition` there? | 03:37 |
mithro | xobs: Yes - See https://github.com/mithro/valentyusb/blob/0dc9ba3ecba42461f3c0b63f948361c06fb22844/valentyusb/usbcore/cpu/eptri.py#L53-L102 | 03:39 |
tpb | Title: valentyusb/eptri.py at 0dc9ba3ecba42461f3c0b63f948361c06fb22844 · mithro/valentyusb · GitHub (at github.com) | 03:39 |
xobs | Alright, I'll try it. | 03:41 |
*** John_K has joined #tomu | 03:42 | |
mithro | xobs: See the output at https://mithro-valentyusb.readthedocs.io/en/latest/usbcore.cpu.html#module-usbcore.cpu.eptri | 03:42 |
tpb | Title: usbcore.cpu package ValentyUSB documentation (at mithro-valentyusb.readthedocs.io) | 03:42 |
xobs | What does ".." and "::" mean in ".. wavedrom::"? When do you use a single ":" and when do you use a double "::"? | 03:42 |
mithro | xobs: That is restructure text directive... | 03:43 |
mithro | xobs: https://www.sphinx-doc.org/en/2.0/usage/restructuredtext/basics.html#directives | 03:44 |
mithro | xobs: restructured text directives are always `.. <directive>:: <arguments>` | 03:44 |
mithro | xobs: No idea why they chose that form... | 03:45 |
xobs | Not always. Isn't `data : CSR` a directive? | 03:45 |
xobs | Or is `:caption:` a directive? | 03:45 |
mithro | No `data : CSR` isn't a directive | 03:46 |
mithro | xobs: napoleon converts that into `:param CSR data:` for rst to parse... | 03:48 |
mithro | xobs: Actually, I think you might be right that `:<directive> <arguments>:` is a directive too... | 03:49 |
mithro | xobs: Hrm, it might be that the format `:<option> <arguments>:` means it is an option to the current directive block you are inside? | 03:50 |
mithro | xobs: See the `.. py:function::` example here -> https://www.sphinx-doc.org/en/master/usage/restructuredtext/domains.html#info-field-lists | 03:51 |
mithro | I'm not expert on python documentation... | 03:51 |
xobs | The reStructured Text people seems to really like dots. | 03:52 |
mithro | xobs: Side ways and horizontal it seems! :-) | 03:52 |
mithro | xobs: Most of the time you don't need this level of detail... | 03:54 |
mithro | xobs: You just write some nice docstrings and then use the default setup to get the API docs... | 03:55 |
xobs | mithro: It's nice to know more about python documentation. I've always had a lot of trouble with it. | 03:58 |
mithro | xobs: https://docs.readthedocs.io/en/stable/intro/getting-started-with-sphinx.html | 04:00 |
tpb | Title: Getting Started with Sphinx Read the Docs 3.7.3 documentation (at docs.readthedocs.io) | 04:00 |
xobs | I merged the documentation stuff. I'm still trying to get eptri working on real hardware (it works fine in simulation!), but I'll use this new method of documentation now. | 04:01 |
mithro | xobs: If you feel strongly about having the documentation for the registers near the register instantiation, I can give you some options around that -- but it would be unique to this project and not something found in standard Python project... | 04:02 |
xobs | If that's how Python does it, then I'll do it that way as well. | 04:04 |
mithro | xobs: FYI - If you want to get C/C++ documentation into the same place as the python documentation - you can use exhale - https://exhale.readthedocs.io/en/latest/ (which uses breathe - https://breathe.readthedocs.io/en/latest/) -- which allows you to import doxygen comments into sphinx... | 04:04 |
tpb | Title: Exhale Exhale: Automatic C++ Library API Generation (at exhale.readthedocs.io) | 04:04 |
xobs | At this point I'm trying to solve the problem of not having register-level documentation for system developers. | 04:06 |
xobs | Actually, that's still a thing that's missing -- what's the address of these registers? | 04:06 |
xobs | That's a problem for the future, though. | 04:07 |
mithro | xobs: I think maybe we have a sphinx tool which takes the .csv file and generates sphinx output? | 04:08 |
xobs | Fancy! | 04:09 |
mithro | xobs: BUt that would need more docstrings to end up in the csv file -- so not sure if that is the right approach... | 04:34 |
mithro | xobs: Can you go to https://readthedocs.org and set up an account? | 04:42 |
mithro | xobs: Just trying to get valentyusb.readthedocs.io automatically publishing from your repo... | 04:46 |
xobs | Sure, one moment. | 04:48 |
mithro | xobs: BTW Did you see that wavedrom-verilog thing I found? Lets you convert a wavedrom waveform into a Verilog file to drive a signal driver... | 04:52 |
xobs | Weird. Their confirmation email has a misleading address that my mail client flags as fishy. | 04:52 |
mithro | xobs: Also -> https://github.com/wavedrom/datasheet | 04:58 |
tpb | Title: GitHub - wavedrom/datasheet: datasheet generator (at github.com) | 04:58 |
xobs | mithro: still cleaning things up, but: https://github.com/xobs/valentyusb/blob/tri-fifo/valentyusb/usbcore/cpu/eptri.py#L54 | 05:16 |
tpb | Title: valentyusb/eptri.py at tri-fifo · xobs/valentyusb · GitHub (at github.com) | 05:16 |
xobs | The tests pass now, and I think the documentation is in a format that should make sphinx happy. | 05:16 |
mithro | xobs: Do you need instructions on how to run sphinx locally to check? | 05:17 |
xobs | `Makefile:13: recipe for target 'help' failed` | 05:17 |
mithro | Should just be `cd docs; make venv; make html` The `make venv` is only needed once or when the requirements change | 05:18 |
xobs | It looks like wavedrom isn't working. | 05:24 |
mithro | xobs: I don't think wavedrom works from a local file | 05:35 |
mithro | Use `python -m SimpleHTTPServer` and look at it that way? | 05:35 |
mithro | Or make it render the images? | 05:36 |
xobs | mithro: /usr/bin/python: No module named SimpleHTTPServer | 05:39 |
mithro | I forget, it might be HTTPSimpleServer? | 05:42 |
mithro | https://docs.python.org/2/library/simplehttpserver.html | 05:43 |
tpb | Title: 20.19. SimpleHTTPServer — Simple HTTP request handler Python 2.7.16 documentation (at docs.python.org) | 05:43 |
auscompgeek | xobs: is your /usr/bin/python a python3? | 05:43 |
auscompgeek | either way `python3 -m http.server` | 05:44 |
xobs | auscompgeek: Yes, I thought python2 was deprecated. | 05:44 |
xobs | Ah, that works. | 05:44 |
auscompgeek | the official recommendation to distros is to still have /usr/bin/python point to python2 | 05:44 |
auscompgeek | homebrew defaulted to python3 but then backflipped due to all the problems they had with that | 05:45 |
auscompgeek | afaik only Arch still ignores that recommendation (which was written because of Arch in the first place) | 05:45 |
xobs | Just my luck, I was using Arch. Then I decided that, since Python 2 is dead, I'd remove it. | 05:46 |
mithro | xobs: your very optimistic for someone who works with hardware | 05:51 |
mithro | I did like that they might be removing the floppy disc driver from Linux :-P | 05:53 |
xobs | mithro: So for one thing, it seems like vertical space matterns in reStructured Text. There must be a blank line before the "::". | 05:54 |
xobs | I fixed that, but now it's saying "invalid option block" | 05:54 |
mithro | Full message output and input? | 05:55 |
xobs | mithro: https://gist.github.com/xobs/4aa4213b2f17aabad620b16cebb29046 | 05:55 |
tpb | Title: make html · GitHub (at gist.github.com) | 05:55 |
mithro | More new lines? | 05:56 |
auscompgeek | I think you're missing a newline after the directives | 05:58 |
auscompgeek | i.e. after `:caption:` | 05:59 |
mithro | Yeah, that was my guess too | 05:59 |
xobs | After :caption:? | 05:59 |
mithro | This works -> https://github.com/mithro/valentyusb/blob/df5d9955b631ca85071c82e22c42384ef60290f6/valentyusb/usbcore/cpu/eptri.py#L62 | 06:00 |
tpb | Title: valentyusb/eptri.py at df5d9955b631ca85071c82e22c42384ef60290f6 · mithro/valentyusb · GitHub (at github.com) | 06:00 |
xobs | I put a blank line before :caption: and the error went away, but now I have no graphs. | 06:00 |
auscompgeek | you want a blank line between the :caption: line and the { | 06:00 |
auscompgeek | no blank line between .. and :caption: | 06:01 |
xobs | That fixes it. | 06:02 |
mithro | xobs: I would paste in an example you knew worked exactly (whitespace and all) | 06:03 |
mithro | xobs: and *then* start modifying things | 06:03 |
xobs | mithro: I started from your design, but I didn't think it worked that way. | 06:04 |
mithro | I'm sure there is a logical reasoning why there need to be newlines - I don't know them... | 06:05 |
xobs | Mostly I didn't know what bits were grouped together, and having it spaced apart makes it very hard to follow. | 06:05 |
mithro | Once you are putting non-ascii stuff in your docstrings your optimising for the rendered output.... | 06:06 |
*** craigo_ has quit IRC | 06:09 | |
mithro | There is probably a sphinx extension to convert diagrams like TNT's at https://github.com/smunaut/ice40-playground/blob/master/cores/usb/doc/mem-map.md | 06:12 |
tpb | Title: ice40-playground/mem-map.md at master · smunaut/ice40-playground · GitHub (at github.com) | 06:12 |
xobs | Now to figure out how to make wavedrom generate registers that aren't quite so wide. | 06:13 |
mithro | xobs: I only saw that issue locally not on the readthedocs website... | 06:21 |
mithro | got your readthedocs user set up so far? | 06:24 |
xobs | mithro: yes, it's set up | 06:25 |
mithro | Username xobs? | 06:25 |
xobs | Correct | 06:25 |
mithro | https://theamphour.com/456-3-discussing-fomu-with-tim-ansell-and-sean-cross/ | 06:30 |
mithro | 1h 10m -- nice and short :-P | 06:33 |
xobs | mithro: You're right, the registers on readthedocs.io aren't oversized, but for some reason it's expanded them to 32-bits. | 06:51 |
xobs | Okay, the problem is that "readthedocs.io" renames the "config" json property to "options", so we need to put both values in there to get it to work. | 07:02 |
xobs | I'm reasonably happy with this as a rough first-draft of some documentation: https://valentyusb.readthedocs.io/en/tri-fifo/usbcore.cpu.html#module-usbcore.cpu.eptri | 07:08 |
tpb | Title: usbcore.cpu package ValentyUSB documentation (at valentyusb.readthedocs.io) | 07:08 |
xobs | Hmm... I still don't know how I'm going to document individual register bits. | 07:38 |
*** alexhw_ has joined #tomu | 08:07 | |
*** alexhw has quit IRC | 08:09 | |
*** jljusten has quit IRC | 08:41 | |
*** jljusten has joined #tomu | 08:45 | |
xobs | I also managed to get eptri about 90% done today. At least done enough that it sometimes enumerates on Linux. | 10:46 |
xobs | There's more work to do on resets, stalling out transactions, and some sequencing issues. But the design seems sound. | 10:47 |
*** LWK has joined #tomu | 11:11 | |
*** yorick has quit IRC | 11:57 | |
ovf | xobs: great work! | 13:05 |
*** craigo_ has joined #tomu | 13:30 | |
acathla | Anybody knows how to use a differential input on an iCE40 with migen? | 13:41 |
MadHacker | Instantiate SB_IO (using Instance()) and set IO_STANDARD to SB_LVDS_INPUT, I think. | 13:45 |
xobs | acathla: It'd be just like how we do the RGB LED in the workshop. | 13:46 |
acathla | Hum, there is already a "class LatticeiCE40DifferentialInputImpl(Module):" in migen, in lattice/common.py, I wanted to use that but could not find a simple example. | 14:13 |
*** emeb has joined #tomu | 15:13 | |
acathla | ERROR: Bel 'X0/Y3/io1' of type 'SB_IO' is not valid for cell 'SB_IO' of type 'SB_IO' :( | 15:57 |
mithro | acathla: Poke whitequark in #m-labs is probably productive | 15:57 |
*** rohitksingh has joined #tomu | 16:14 | |
futarisIRCcloud | xobs: How many endpoints does eptri have? | 17:02 |
*** rohitksingh has quit IRC | 17:37 | |
*** rohitksingh has joined #tomu | 17:43 | |
*** rohitksingh has quit IRC | 18:02 | |
*** rohitksingh has joined #tomu | 18:18 | |
*** rohitksingh has quit IRC | 18:24 | |
*** guan has joined #tomu | 18:32 | |
*** cedric has quit IRC | 18:37 | |
*** cedric has joined #tomu | 18:38 | |
*** cedric has joined #tomu | 18:38 | |
futarisIRCcloud | https://osfc.io/talks/hack-the-project-onboarding-process-learning-by-writing-tutorials-as-a-new-contributor | 18:47 |
tpb | Title: OSFC 2019 - Open Source Firmware Conference (at osfc.io) | 18:47 |
*** rohitksingh has joined #tomu | 19:34 | |
mithro | https://twitter.com/tardate/status/1169265772444540929?s=20 | 19:43 |
*** Iker has joined #tomu | 19:57 | |
Iker | Hi guys, I'm trying to update my Fomu's firmware with dfu-util -D evt-installable.dfu but I'm not able something is failing | 19:58 |
Iker | After finishing, with no error, I cannot access it anymore and if I unplug and plug again I've my previous firmware version | 19:58 |
Iker | Thank you! | 19:58 |
*** cedric has quit IRC | 20:09 | |
*** cedric has joined #tomu | 20:10 | |
*** cedric has joined #tomu | 20:10 | |
*** rohitksingh has quit IRC | 20:34 | |
mithro | Iker: are you trying to update the bootloader? | 20:36 |
*** rohitksingh has joined #tomu | 20:38 | |
Iker | Yes, I have 1.7.3 | 20:40 |
mithro | Iker: I don't know if there is an official process for updating the bootloader at the moment - you'll need to ask xobs | 20:48 |
Iker | Thank you Tim! | 20:49 |
Iker | To my understanding it shouldn't be done the way I have been doing | 20:49 |
Iker | But I saw on the slides that I could do that way | 20:49 |
mithro | Iker: which slides? | 20:49 |
Iker | Not the slides sorry, the workshop walkthrough | 20:54 |
mithro | Iker: I'm pretty sure the workshop doesn't talk about updating the bootloader in any way? | 20:58 |
Iker | I might misunderstood somethign | 21:02 |
Iker | My mistake, I have been reading so much docs, I was refering to this: https://fomu.im/td19/ | 21:03 |
tpb | Title: Fomu at Teardown 2019 | I’m Fomu - an FPGA in your USB port (at fomu.im) | 21:03 |
Iker | I've been through all the available docs so I mix what I have read in which | 21:08 |
*** rohitksingh has quit IRC | 21:11 | |
*** rohitksingh has joined #tomu | 21:19 | |
*** Iker has left #tomu | 21:24 | |
*** Iker has joined #tomu | 21:25 | |
*** Iker has quit IRC | 21:28 | |
*** dzo has joined #tomu | 21:39 | |
*** rohitksingh has quit IRC | 21:39 | |
dzo | How to read buttons in Micropython? | 21:39 |
*** rohitksingh has joined #tomu | 22:06 | |
*** dzo has quit IRC | 22:47 | |
*** cdmatter has quit IRC | 22:58 | |
*** emeb has quit IRC | 23:01 | |
*** xkapastel has joined #tomu | 23:18 | |
*** rohitksingh has quit IRC | 23:35 |
Generated by irclog2html.py 2.13.1 by Marius Gedminas - find it at mg.pov.lt!