Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Significant updates coming along #500

Closed
1 of 14 tasks
z3t0 opened this issue Aug 13, 2017 · 6 comments
Closed
1 of 14 tasks

Significant updates coming along #500

z3t0 opened this issue Aug 13, 2017 · 6 comments
Assignees
Labels
Keep Keep issue

Comments

@z3t0
Copy link
Collaborator

z3t0 commented Aug 13, 2017

Information

This issue is to note that I will be spending a significant amount of time over the next three weeks to add features, documentation and guides/tutorials to this library.

If anyone has any requests then I would love to add it to my list below. I will also be looking through past issues/tasks that have been requested, though repeating anything important will bring it to the front of my mind.

Below are some ideas and at the bottom of the issue is going to be a list of tasks I will continue to update.

Ideas

These are some ideas for features that I would like to incorporate. They are up for discussion and may not be very realistic.

  • Protocol code generator: I would like to use a single file as a database of protocol implementations in a format such as IRP notation. Then we could write a script / program to parse this information and generate the protocol specific code for this library. This means there will be an extra build step when releasing the library, but the end user will receive a fully working copy of the library with the protocol files as generated source code.

Tasks

The following are tasks that will be completed, roughly in the order presented. As I begin each task, or extensive discussion is required I will be creating new issues and provided the links in the relevant parts of this document.

Mentioning important contributors for their thoughts @bengtmartensson @AnalysIR @MCUdude @crankyoldgit @AbelHu @electronicdrops

@z3t0 z3t0 self-assigned this Aug 13, 2017
@bengtmartensson
Copy link
Contributor

Actually, I would suggest instead working "bottom-up", first getting the low-level things right (hardware and raw signals), then the high-level things like protocols. For this, I would recommend giving the following stuff first priority -- they should all be fairly quick

  • #464 source file layout, i.e. non-exported includes in subdirectories
  • #463 nuke dead code
  • #462 nuke LED blinking
  • #466 nuke Pronto
  • #461 getting started with Doxygen (not writing all documentation, just getting started)
  • #445 determine formatting guidelines
  • #444 reorganize boarddefs.h, I think one file per board would be best,

And then there is of course #458, with a lot of good stuff, in particular, do not use platform dependent types like (unsigned) int, except for when it is explicitly desired.

Will write more about protocols later.

@z3t0
Copy link
Collaborator Author

z3t0 commented Aug 13, 2017

Actually, I would suggest instead working "bottom-up", first getting the low-level things right (hardware and raw signals), then the high-level things like protocols.

Sure, that sounds like a good way to handle things. The tasks in the original post were just those I happened to think of at the time.

I will update the original post with tasks you mentioned.

@crankyoldgit
Copy link

A meta-language sounds interesting. Let me know if you get around to that. I've been trying to reduce commonalities in protocols by using common methods/functions. Something like what you've described is needed but, TBH, is a lower priority compared to other things you've listed.

I took the step of going to platform independent types on IRremoteESP8266, and frankly haven't looked back. It also allowed me to implement extensive off-board unit testing with a fair degree of certainty that things would behave the same as on the micro-controller vs. generic CPU. Usual caveats etc.

That really helped with development/testing time frames, as well as being able to simulate user reported issues, mostly cutting out the device flashing cycle entirely. It also allowed integrating it into the Travis process, which was also a huge boon.

I used the Google Unit Test framework and implemented it here. Feel free to borrow/take/back-port whatever you need.

@bengtmartensson
Copy link
Contributor

Protocol generation etc: I have actually been working along these lines for some time. This is the project IrpTransmogrifier. At its heart, there is a database of IR protocols with the protocols in IRP format, some additional information (keyword-value pairs, thus extendable), and documentation as embedded (X)HTML fragments, everything embedded in an XML file. It can. among other things, generate code for different targets, like IRremote. Back ends are written in the template language StringTemplate, making it relatively easy to write a new backend/target. (Unfortunately, the back end for IRremote is not written yet :-.)

Unfortunately, there are a number of issues here: IRremote does not use standard parametrization even of standard protocols, but everything is just lumped into one data parameter, interpreted most-significant-bit first. There is no systematic treatment of intro-, repeat-, and ending sequences. Etc. API needs to be determined -- see some of the other treads (#458?)

@crankyoldgit : the testing framework looks interesting, I will have a look. IRremote-SIL is "just" a test rig, tests in the modern sense not integrated yet.

@z3t0
Copy link
Collaborator Author

z3t0 commented Aug 14, 2017 via email

@bengtmartensson
Copy link
Contributor

If you have any suggestions then I would love to hear them!

As I wrote above, my main suggestion is this:

I would suggest instead working "bottom-up", first getting the low-level things right (hardware and raw signals), then the high-level things like protocols.

Then the API related stuff, there are a lot of details in #458.

@ArminJo ArminJo closed this as completed Oct 17, 2020
@ArminJo ArminJo added the Keep Keep issue label Dec 30, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Keep Keep issue
Projects
None yet
Development

No branches or pull requests

4 participants